Hi, Zhu,

Thanks for the feedback.

> make JobVertexID a composition of JobID and a topology index
I think it is a good idea. However, it seems the JobVertexID is
derived from hashcode which used to identify them across submission.
I'm not familiar with that component though. I prefer to keep this
idea out the scope of this FLIP if no one could help us to figure it
out.

> How about we still keep IntermediateDataSetID independent from JobVertexID,
> but just print the producing relationships in logs? I think keeping
> IntermediateDataSetID independent may be better considering the cross job
> result usages in interactive query cases.
I think you are right. I'll keep IntermediateDataSetID independent
from JobVertexID.

> The new IDs will become larger with this rework.
Yes, I also have the same concern. Benchmark is necessary, I'll try to
provide one during the implementation phase.


Best,
Yangze Guo

On Tue, Mar 31, 2020 at 4:55 PM Zhu Zhu <reed...@gmail.com> wrote:
>
> Thanks for proposing this improvement Yangze. Big +1 for the overall
> proposal. It can help a lot in troubleshooting.
>
> Here are a few questions for it:
> 1. Shall we make JobVertexID a composition of JobID and a topology index?
> This would help in the session cluster case, so that we can identify which
> tasks are from which jobs along with the rework of ExecutionAttemptID.
>
> 2. You mentioned that "Add the producer info to the string literal of
> IntermediateDataSetID". Do you mean to make IntermediateDataSetID a
> composition of JobVertexID and a consumer index?
> How about we still keep IntermediateDataSetID independent from JobVertexID,
> but just print the producing relationships in logs? I think keeping
> IntermediateDataSetID independent may be better considering the cross job
> result usages in interactive query cases.
>
> 3. The new IDs will become larger with this rework. The
> TaskDeploymentDescriptor can become much larger since it is mainly composed
> of a variety DIs. I'm not sure how much it would be but there can be more
> memory and CPU cost for it, and results in more frequent GCs, message size
> exceeding akka frame limits, and a longer blocked time of main thread.
> This should not be a problem in most cases but might be a problem for large
> scale jobs. Shall we have an benchmark for it?
>
> Thanks,
> Zhu Zhu
>
> Yangze Guo <karma...@gmail.com> 于2020年3月31日周二 下午2:19写道:
>
> > Thank you all for the feedback! Sorry for the belated reply.
> >
> > @Till
> > I'm +1 for your two ideas and I'd like to move these two out of the
> > scope of this FLIP since the pipelined region scheduling is an ongoing
> > work now.
> > I also agree that we should not make the InstanceID in
> > TaskExecutorConnection being composed of the ResourceID plus a
> > monotonically increasing value. Thanks a lot for your explanation.
> >
> > @Konstantin @Yang
> > Regarding the PodName of TaskExecutor on K8s, I second Yang's
> > suggestion. It makes sense to me to let user export RESOURCE_ID and
> > make TM respect it. User needs to guarantee there is no collision for
> > different TM.
> >
> > Best,
> > Yangze Guo
> >
> >
> > On Tue, Mar 31, 2020 at 12:25 AM Steven Wu <stevenz...@gmail.com> wrote:
> > >
> > > +1 on allowing user defined resourceId for taskmanager
> > >
> > > On Sun, Mar 29, 2020 at 7:24 PM Yang Wang <danrtsey...@gmail.com> wrote:
> > >
> > > > Hi Konstantin,
> > > >
> > > > I think it is a good idea. Currently, our users also report a similar
> > issue
> > > > with
> > > > resourceId of standalone cluster. When we start a standalone cluster
> > now,
> > > > the `TaskManagerRunner` always generates a uuid for the resourceId. It
> > will
> > > > be used to register to the jobmanager and not convenient to match with
> > the
> > > > real
> > > > taskmanager, especially in container environment.
> > > >
> > > > I think a probably solution is we could support the user defined
> > > > resourceId.
> > > > We could get it from the environment. For standalone on K8s, we could
> > set
> > > > the "RESOURCE_ID" env to the pod name so that it is easier to match the
> > > > taskmanager with K8s pod.
> > > >
> > > > Moreover, i am afraid we could not set the pod name to the resourceId.
> > I
> > > > think
> > > > you could set the "deployment.meta.name". Since the pod name is
> > generated
> > > > by
> > > > K8s in the pattern {deployment.meta.nane}-{rc.uuid}-{uuid}. On the
> > > > contrary, we
> > > > will set the resourceId to the pod name.
> > > >
> > > >
> > > > Best,
> > > > Yang
> > > >
> > > > Konstantin Knauf <konstan...@ververica.com> 于2020年3月29日周日 下午8:06写道:
> > > >
> > > > > Hi Yangze, Hi Till,
> > > > >
> > > > > thanks you for working on this topic. I believe it will make
> > debugging
> > > > > large Apache Flink deployments much more feasible.
> > > > >
> > > > > I was wondering whether it would make sense to allow the user to
> > specify
> > > > > the Resource ID in standalone setups?  For example, many users still
> > > > > implicitly use standalone clusters on Kubernetes (the native support
> > is
> > > > > still experimental) and in these cases it would be interesting to
> > also
> > > > set
> > > > > the PodName as the ResourceID. What do you think?
> > > > >
> > > > > Cheers,
> > > > >
> > > > > Kosntantin
> > > > >
> > > > > On Thu, Mar 26, 2020 at 6:49 PM Till Rohrmann <trohrm...@apache.org>
> > > > > wrote:
> > > > >
> > > > > > Hi Yangze,
> > > > > >
> > > > > > thanks for creating this FLIP. I think it is a very good
> > improvement
> > > > > > helping our users and ourselves understanding better what's going
> > on in
> > > > > > Flink.
> > > > > >
> > > > > > Creating the ResourceIDs with host information/pod name is a good
> > idea.
> > > > > >
> > > > > > Also deriving ExecutionGraph IDs from their superset ID is a good
> > idea.
> > > > > >
> > > > > > The InstanceID is used for fencing purposes. I would not make it a
> > > > > > composition of the ResourceID + a monotonically increasing number.
> > The
> > > > > > problem is that in case of a RM failure the InstanceIDs would start
> > > > from
> > > > > 0
> > > > > > again and this could lead to collisions.
> > > > > >
> > > > > > Logging more information on how the different runtime IDs are
> > > > correlated
> > > > > is
> > > > > > also a good idea.
> > > > > >
> > > > > > Two other ideas for simplifying the ids are the following:
> > > > > >
> > > > > > * The SlotRequestID was introduced because the SlotPool was a
> > separate
> > > > > > RpcEndpoint a while ago. With this no longer being the case I
> > think we
> > > > > > could remove the SlotRequestID and replace it with the
> > AllocationID.
> > > > > > * Instead of creating new SlotRequestIDs for multi task slots one
> > could
> > > > > > derive them from the SlotRequestID used for requesting the
> > underlying
> > > > > > AllocatedSlot.
> > > > > >
> > > > > > Given that the slot sharing logic will most likely be reworked
> > with the
> > > > > > pipelined region scheduling, we might be able to resolve these two
> > > > points
> > > > > > as part of the pipelined region scheduling effort.
> > > > > >
> > > > > > Cheers,
> > > > > > Till
> > > > > >
> > > > > > On Thu, Mar 26, 2020 at 10:51 AM Yangze Guo <karma...@gmail.com>
> > > > wrote:
> > > > > >
> > > > > > > Hi everyone,
> > > > > > >
> > > > > > > We would like to start a discussion thread on "FLIP-118: Improve
> > > > > > > Flink’s ID system"[1].
> > > > > > >
> > > > > > > This FLIP mainly discusses the following issues, target to
> > enhance
> > > > the
> > > > > > > readability of IDs in log and help user to debug in case of
> > failures:
> > > > > > >
> > > > > > > - Enhance the readability of the string literals of IDs. Most of
> > them
> > > > > > > are hashcodes, e.g. ExecutionAttemptID, which do not provide much
> > > > > > > meaningful information and are hard to recognize and compare for
> > > > > > > users.
> > > > > > > - Log the ID’s lineage information to make debugging more
> > convenient.
> > > > > > > Currently, the log fails to always show the lineage information
> > > > > > > between IDs. Finding out relationships between entities
> > identified by
> > > > > > > given IDs is a common demand, e.g., slot of which AllocationID is
> > > > > > > assigned to satisfy slot request of with SlotRequestID. Absence
> > of
> > > > > > > such lineage information, it’s impossible to track the end to end
> > > > > > > lifecycle of an Execution or a Task now, which makes debugging
> > > > > > > difficult.
> > > > > > >
> > > > > > > Key changes proposed in the FLIP are as follows:
> > > > > > >
> > > > > > > - Add location information to distributed components
> > > > > > > - Add topology information to graph components
> > > > > > > - Log the ID’s lineage information
> > > > > > > - Expose the identifier of distributing component to user
> > > > > > >
> > > > > > > Please find more details in the FLIP wiki document [1]. Looking
> > > > forward
> > > > > > to
> > > > > > > your feedbacks.
> > > > > > >
> > > > > > > [1]
> > > > > > >
> > > > > >
> > > > >
> > > >
> > https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=148643521
> > > > > > >
> > > > > > > Best,
> > > > > > > Yangze Guo
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > >
> > > > > Konstantin Knauf | Head of Product
> > > > >
> > > > > +49 160 91394525
> > > > >
> > > > >
> > > > > Follow us @VervericaData Ververica <https://www.ververica.com/>
> > > > >
> > > > >
> > > > > --
> > > > >
> > > > > Join Flink Forward <https://flink-forward.org/> - The Apache Flink
> > > > > Conference
> > > > >
> > > > > Stream Processing | Event Driven | Real Time
> > > > >
> > > > > --
> > > > >
> > > > > Ververica GmbH | Invalidenstrasse 115, 10115 Berlin, Germany
> > > > >
> > > > > --
> > > > > Ververica GmbH
> > > > > Registered at Amtsgericht Charlottenburg: HRB 158244 B
> > > > > Managing Directors: Timothy Alexander Steinert, Yip Park Tung Jason,
> > Ji
> > > > > (Tony) Cheng
> > > > >
> > > >
> >

Reply via email to