Thanks Yang,

That would be very helpful!

Jiangjie (Becket) Qin

On Mon, Mar 9, 2020 at 3:31 PM Yang Wang <danrtsey...@gmail.com> wrote:

> Hi Becket,
>
> Thanks for your suggestion. We will update the FLIP to add/enrich the
> following parts.
> * User cli option change, use "-R/--remote" to apply the cluster deploy
> mode
> * Configuration change, how to specify remote user jars and dependencies
> * The whole story about how "application mode" works, upload -> fetch ->
> submit job
> * The cluster lifecycle, when and how the Flink cluster is destroyed
>
>
> Best,
> Yang
>
> Becket Qin <becket....@gmail.com> 于2020年3月9日周一 下午12:34写道:
>
>> Thanks for the reply, tison and Yang,
>>
>> Regarding the public interface, is "-R/--remote" option the only change?
>> Will the users also need to provide a remote location to upload and store
>> the jars, and a list of jars as dependencies to be uploaded?
>>
>> It would be important that the public interface section in the FLIP
>> includes all the user sensible changes including the CLI / configuration /
>> metrics, etc. Can we update the FLIP to include the conclusion we have here
>> in the ML?
>>
>> Thanks,
>>
>> Jiangjie (Becket) Qin
>>
>> On Mon, Mar 9, 2020 at 11:59 AM Yang Wang <danrtsey...@gmail.com> wrote:
>>
>>> Hi Becket,
>>>
>>> Thanks for jumping out and sharing your concerns. I second tison's
>>> answer and just
>>> make some additions.
>>>
>>>
>>> > job submission interface
>>>
>>> This FLIP will introduce an interface for running user `main()` on
>>> cluster, named as
>>> “ProgramDeployer”. However, it is not a public interface. It will be
>>> used in `CliFrontend`
>>> when the remote deploy option(-R/--remote-deploy) is specified. So the
>>> only changes
>>> on user side is about the cli option.
>>>
>>>
>>> > How to fetch the jars?
>>>
>>> The “local path” and “dfs path“ could be supported to fetch the user
>>> jars and dependencies.
>>> Just like tison has said, we could ship the user jar and dependencies
>>> from client side to
>>> HDFS and use the entrypoint to fetch.
>>>
>>> Also we have some other practical ways to use the new “application mode“.
>>> 1. Upload the user jars and dependencies to the DFS(e.g. HDFS, S3,
>>> Aliyun OSS) manually
>>> or some external deployer system. For K8s, the user jars and
>>> dependencies could also be
>>> built in the docker image.
>>> 2. Specify the remote/local user jar and dependencies in `flink run`.
>>> Usually this could also
>>> be done by the external deployer system.
>>> 3. When the `ClusterEntrypoint` is launched, it will fetch the jars and
>>> files automatically. We
>>> do not need any specific fetcher implementation. Since we could leverage
>>> flink `FileSystem`
>>> to do this.
>>>
>>>
>>>
>>>
>>>
>>> Best,
>>> Yang
>>>
>>> tison <wander4...@gmail.com> 于2020年3月9日周一 上午11:34写道:
>>>
>>>> Hi Becket,
>>>>
>>>> Thanks for your attention on FLIP-85! I answered your question inline.
>>>>
>>>> 1. What exactly the job submission interface will look like after this
>>>> FLIP? The FLIP template has a Public Interface section but was removed from
>>>> this FLIP.
>>>>
>>>> As Yang mentioned in this thread above:
>>>>
>>>> From user perspective, only a `-R/-- remote-deploy` cli option is
>>>> visible. They are not aware of the application mode.
>>>>
>>>> 2. How will the new ClusterEntrypoint fetch the jars from external
>>>> storage? What external storage will be supported out of the box? Will this
>>>> "jar fetcher" be pluggable? If so, how does the API look like and how will
>>>> users specify the custom "jar fetcher"?
>>>>
>>>> It depends actually. Here are several points:
>>>>
>>>> i. Currently, shipping user files is handled by Flink, dependencies
>>>> fetching can be handled by Flink.
>>>> ii. Current, we only support local file system shipfiles. When in
>>>> Application Mode, to support meaningful jar fetch we should support user to
>>>> configure richer shipfiles schema at first.
>>>> iii. Dependencies fetching varies from deployments. That is, on YARN,
>>>> its convention is through HDFS; on Kubernetes, its convention is configured
>>>> resource server and fetched by initContainer.
>>>>
>>>> Thus, in the First phase of Application Mode dependencies fetching is
>>>> totally handled within Flink.
>>>>
>>>> 3. It sounds that in this FLIP, the "session cluster" running the
>>>> application has the same lifecycle as the user application. How will the
>>>> session cluster be teared down after the application finishes? Will the
>>>> ClusterEntrypoint do that? Will there be an option of not tearing the
>>>> cluster down?
>>>>
>>>> The precondition we tear down the cluster is *both*
>>>>
>>>> i. user main reached to its end
>>>> ii. all jobs submitted(current, at most one) reached global terminate
>>>> state
>>>>
>>>> For the "how", it is an implementation topic, but conceptually it is
>>>> ClusterEntrypoint's responsibility.
>>>>
>>>> >Will there be an option of not tearing the cluster down?
>>>>
>>>> I think the answer is "No" because the cluster is designed to be
>>>> bounded with an Application. User logic that communicates with the job is
>>>> always in its `main`, and for history information we have history server.
>>>>
>>>> Best,
>>>> tison.
>>>>
>>>>
>>>> Becket Qin <becket....@gmail.com> 于2020年3月9日周一 上午8:12写道:
>>>>
>>>>> Hi Peter and Kostas,
>>>>>
>>>>> Thanks for creating this FLIP. Moving the JobGraph compilation to the
>>>>> cluster makes a lot of sense to me. FLIP-40 had the exactly same idea, but
>>>>> is currently dormant and can probably be superseded by this FLIP. After
>>>>> reading the FLIP, I still have a few questions.
>>>>>
>>>>> 1. What exactly the job submission interface will look like after this
>>>>> FLIP? The FLIP template has a Public Interface section but was removed 
>>>>> from
>>>>> this FLIP.
>>>>> 2. How will the new ClusterEntrypoint fetch the jars from external
>>>>> storage? What external storage will be supported out of the box? Will this
>>>>> "jar fetcher" be pluggable? If so, how does the API look like and how will
>>>>> users specify the custom "jar fetcher"?
>>>>> 3. It sounds that in this FLIP, the "session cluster" running the
>>>>> application has the same lifecycle as the user application. How will the
>>>>> session cluster be teared down after the application finishes? Will the
>>>>> ClusterEntrypoint do that? Will there be an option of not tearing the
>>>>> cluster down?
>>>>>
>>>>> Maybe they have been discussed in the ML earlier, but I think they
>>>>> should be part of the FLIP also.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Jiangjie (Becket) Qin
>>>>>
>>>>> On Thu, Mar 5, 2020 at 10:09 PM Kostas Kloudas <kklou...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Also from my side +1  to start voting.
>>>>>>
>>>>>> Cheers,
>>>>>> Kostas
>>>>>>
>>>>>> On Thu, Mar 5, 2020 at 7:45 AM tison <wander4...@gmail.com> wrote:
>>>>>> >
>>>>>> > +1 to star voting.
>>>>>> >
>>>>>> > Best,
>>>>>> > tison.
>>>>>> >
>>>>>> >
>>>>>> > Yang Wang <danrtsey...@gmail.com> 于2020年3月5日周四 下午2:29写道:
>>>>>> >>
>>>>>> >> Hi Peter,
>>>>>> >> Really thanks for your response.
>>>>>> >>
>>>>>> >> Hi all @Kostas Kloudas @Zili Chen @Peter Huang @Rong Rong
>>>>>> >> It seems that we have reached an agreement. The “application mode”
>>>>>> is regarded as the enhanced “per-job”. It is
>>>>>> >> orthogonal with “cluster deploy”. Currently, we bind the “per-job”
>>>>>> to `run-user-main-on-client` and “application mode”
>>>>>> >> to `run-user-main-on-cluster`.
>>>>>> >>
>>>>>> >> Do you have other concerns to moving FLIP-85 to voting?
>>>>>> >>
>>>>>> >>
>>>>>> >> Best,
>>>>>> >> Yang
>>>>>> >>
>>>>>> >> Peter Huang <huangzhenqiu0...@gmail.com> 于2020年3月5日周四 下午12:48写道:
>>>>>> >>>
>>>>>> >>> Hi Yang and Kostas,
>>>>>> >>>
>>>>>> >>> Thanks for the clarification. It makes more sense to me if the
>>>>>> long term goal is to replace per job mode to application mode
>>>>>> >>>  in the future (at the time that multiple execute can be
>>>>>> supported). Before that, It will be better to keep the concept of
>>>>>> >>>  application mode internally. As Yang suggested, User only need
>>>>>> to use a `-R/-- remote-deploy` cli option to launch
>>>>>> >>> a per job cluster with the main function executed in cluster
>>>>>> entry-point.  +1 for the execution plan.
>>>>>> >>>
>>>>>> >>>
>>>>>> >>>
>>>>>> >>> Best Regards
>>>>>> >>> Peter Huang
>>>>>> >>>
>>>>>> >>>
>>>>>> >>>
>>>>>> >>>
>>>>>> >>> On Tue, Mar 3, 2020 at 7:11 AM Yang Wang <danrtsey...@gmail.com>
>>>>>> wrote:
>>>>>> >>>>
>>>>>> >>>> Hi Peter,
>>>>>> >>>>
>>>>>> >>>> Having the application mode does not mean we will drop the
>>>>>> cluster-deploy
>>>>>> >>>> option. I just want to share some thoughts about “Application
>>>>>> Mode”.
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>> 1. The application mode could cover the per-job sematic. Its
>>>>>> lifecyle is bound
>>>>>> >>>> to the user `main()`. And all the jobs in the user main will be
>>>>>> executed in a same
>>>>>> >>>> Flink cluster. In first phase of FLIP-85 implementation, running
>>>>>> user main on the
>>>>>> >>>> cluster side could be supported in application mode.
>>>>>> >>>>
>>>>>> >>>> 2. Maybe in the future, we also need to support multiple
>>>>>> `execute()` on client side
>>>>>> >>>> in a same Flink cluster. Then the per-job mode will evolve to
>>>>>> application mode.
>>>>>> >>>>
>>>>>> >>>> 3. From user perspective, only a `-R/-- remote-deploy` cli
>>>>>> option is visible. They
>>>>>> >>>> are not aware of the application mode.
>>>>>> >>>>
>>>>>> >>>> 4. In the first phase, the application mode is working as
>>>>>> “per-job”(only one job in
>>>>>> >>>> the user main). We just leave more potential for the future.
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>> I am not against with calling it “cluster deploy mode” if you
>>>>>> all think it is clearer for users.
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>> Best,
>>>>>> >>>> Yang
>>>>>> >>>>
>>>>>> >>>> Kostas Kloudas <kklou...@gmail.com> 于2020年3月3日周二 下午6:49写道:
>>>>>> >>>>>
>>>>>> >>>>> Hi Peter,
>>>>>> >>>>>
>>>>>> >>>>> I understand your point. This is why I was also a bit torn
>>>>>> about the
>>>>>> >>>>> name and my proposal was a bit aligned with yours (something
>>>>>> along the
>>>>>> >>>>> lines of "cluster deploy" mode).
>>>>>> >>>>>
>>>>>> >>>>> But many of the other participants in the discussion suggested
>>>>>> the
>>>>>> >>>>> "Application Mode". I think that the reasoning is that now the
>>>>>> user's
>>>>>> >>>>> Application is more self-contained.
>>>>>> >>>>> It will be submitted to the cluster and the user can just
>>>>>> disconnect.
>>>>>> >>>>> In addition, as discussed briefly in the doc, in the future
>>>>>> there may
>>>>>> >>>>> be better support for multi-execute applications which will
>>>>>> bring us
>>>>>> >>>>> one step closer to the true "Application Mode". But this is how
>>>>>> I
>>>>>> >>>>> interpreted their arguments, of course they can also express
>>>>>> their
>>>>>> >>>>> thoughts on the topic :)
>>>>>> >>>>>
>>>>>> >>>>> Cheers,
>>>>>> >>>>> Kostas
>>>>>> >>>>>
>>>>>> >>>>> On Mon, Mar 2, 2020 at 6:15 PM Peter Huang <
>>>>>> huangzhenqiu0...@gmail.com> wrote:
>>>>>> >>>>> >
>>>>>> >>>>> > Hi Kostas,
>>>>>> >>>>> >
>>>>>> >>>>> > Thanks for updating the wiki. We have aligned with the
>>>>>> implementations in the doc. But I feel it is still a little bit confusing
>>>>>> of the naming from a user's perspective. It is well known that Flink
>>>>>> support per job cluster and session cluster. The concept is in the layer 
>>>>>> of
>>>>>> how a job is managed within Flink. The method introduced util now is a 
>>>>>> kind
>>>>>> of mixing job and session cluster to promising the implementation
>>>>>> complexity. We probably don't need to label it as Application Model as 
>>>>>> the
>>>>>> same layer of per job cluster and session cluster. Conceptually, I think 
>>>>>> it
>>>>>> is still a cluster mode implementation for per job cluster.
>>>>>> >>>>> >
>>>>>> >>>>> > To minimize the confusion of users, I think it would be
>>>>>> better just an option of per job cluster for each type of cluster 
>>>>>> manager.
>>>>>> How do you think?
>>>>>> >>>>> >
>>>>>> >>>>> >
>>>>>> >>>>> > Best Regards
>>>>>> >>>>> > Peter Huang
>>>>>> >>>>> >
>>>>>> >>>>> >
>>>>>> >>>>> >
>>>>>> >>>>> >
>>>>>> >>>>> >
>>>>>> >>>>> >
>>>>>> >>>>> >
>>>>>> >>>>> >
>>>>>> >>>>> > On Mon, Mar 2, 2020 at 7:22 AM Kostas Kloudas <
>>>>>> kklou...@gmail.com> wrote:
>>>>>> >>>>> >>
>>>>>> >>>>> >> Hi Yang,
>>>>>> >>>>> >>
>>>>>> >>>>> >> The difference between per-job and application mode is that,
>>>>>> as you
>>>>>> >>>>> >> described, in the per-job mode the main is executed on the
>>>>>> client
>>>>>> >>>>> >> while in the application mode, the main is executed on the
>>>>>> cluster.
>>>>>> >>>>> >> I do not think we have to offer "application mode" with
>>>>>> running the
>>>>>> >>>>> >> main on the client side as this is exactly what the per-job
>>>>>> mode does
>>>>>> >>>>> >> currently and, as you described also, it would be redundant.
>>>>>> >>>>> >>
>>>>>> >>>>> >> Sorry if this was not clear in the document.
>>>>>> >>>>> >>
>>>>>> >>>>> >> Cheers,
>>>>>> >>>>> >> Kostas
>>>>>> >>>>> >>
>>>>>> >>>>> >> On Mon, Mar 2, 2020 at 3:17 PM Yang Wang <
>>>>>> danrtsey...@gmail.com> wrote:
>>>>>> >>>>> >> >
>>>>>> >>>>> >> > Hi Kostas,
>>>>>> >>>>> >> >
>>>>>> >>>>> >> > Thanks a lot for your conclusion and updating the FLIP-85
>>>>>> WIKI. Currently, i have no more
>>>>>> >>>>> >> > questions about motivation, approach, fault tolerance and
>>>>>> the first phase implementation.
>>>>>> >>>>> >> >
>>>>>> >>>>> >> > I think the new title "Flink Application Mode" makes a lot
>>>>>> senses to me. Especially for the
>>>>>> >>>>> >> > containerized environment, the cluster deploy option will
>>>>>> be very useful.
>>>>>> >>>>> >> >
>>>>>> >>>>> >> > Just one concern, how do we introduce this new application
>>>>>> mode to our users?
>>>>>> >>>>> >> > Each user program(i.e. `main()`) is an application.
>>>>>> Currently, we intend to only support one
>>>>>> >>>>> >> > `execute()`. So what's the difference between per-job and
>>>>>> application mode?
>>>>>> >>>>> >> >
>>>>>> >>>>> >> > For per-job, user `main()` is always executed on client
>>>>>> side. And For application mode, user
>>>>>> >>>>> >> > `main()` could be executed on client or master
>>>>>> side(configured via cli option).
>>>>>> >>>>> >> > Right? We need to have a clear concept. Otherwise, the
>>>>>> users will be more and more confusing.
>>>>>> >>>>> >> >
>>>>>> >>>>> >> >
>>>>>> >>>>> >> > Best,
>>>>>> >>>>> >> > Yang
>>>>>> >>>>> >> >
>>>>>> >>>>> >> > Kostas Kloudas <kklou...@gmail.com> 于2020年3月2日周一 下午5:58写道:
>>>>>> >>>>> >> >>
>>>>>> >>>>> >> >> Hi all,
>>>>>> >>>>> >> >>
>>>>>> >>>>> >> >> I update
>>>>>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-85+Flink+Application+Mode
>>>>>> >>>>> >> >> based on the discussion we had here:
>>>>>> >>>>> >> >>
>>>>>> >>>>> >> >>
>>>>>> https://docs.google.com/document/d/1ji72s3FD9DYUyGuKnJoO4ApzV-nSsZa0-bceGXW7Ocw/edit#
>>>>>> >>>>> >> >>
>>>>>> >>>>> >> >> Please let me know what you think and please keep the
>>>>>> discussion in the ML :)
>>>>>> >>>>> >> >>
>>>>>> >>>>> >> >> Thanks for starting the discussion and I hope that soon
>>>>>> we will be
>>>>>> >>>>> >> >> able to vote on the FLIP.
>>>>>> >>>>> >> >>
>>>>>> >>>>> >> >> Cheers,
>>>>>> >>>>> >> >> Kostas
>>>>>> >>>>> >> >>
>>>>>> >>>>> >> >> On Thu, Jan 16, 2020 at 3:40 AM Yang Wang <
>>>>>> danrtsey...@gmail.com> wrote:
>>>>>> >>>>> >> >> >
>>>>>> >>>>> >> >> > Hi all,
>>>>>> >>>>> >> >> >
>>>>>> >>>>> >> >> > Thanks a lot for the feedback from @Kostas Kloudas.
>>>>>> Your all concerns are
>>>>>> >>>>> >> >> > on point. The FLIP-85 is mainly
>>>>>> >>>>> >> >> > focused on supporting cluster mode for per-job. Since
>>>>>> it is more urgent and
>>>>>> >>>>> >> >> > have much more use
>>>>>> >>>>> >> >> > cases both in Yarn and Kubernetes deployment. For
>>>>>> session cluster, we could
>>>>>> >>>>> >> >> > have more discussion
>>>>>> >>>>> >> >> > in a new thread later.
>>>>>> >>>>> >> >> >
>>>>>> >>>>> >> >> > #1, How to download the user jars and dependencies for
>>>>>> per-job in cluster
>>>>>> >>>>> >> >> > mode?
>>>>>> >>>>> >> >> > For Yarn, we could register the user jars and
>>>>>> dependencies as
>>>>>> >>>>> >> >> > LocalResource. They will be distributed
>>>>>> >>>>> >> >> > by Yarn. And once the JobManager and TaskManager
>>>>>> launched, the jars are
>>>>>> >>>>> >> >> > already exists.
>>>>>> >>>>> >> >> > For Standalone per-job and K8s, we expect that the user
>>>>>> jars
>>>>>> >>>>> >> >> > and dependencies are built into the image.
>>>>>> >>>>> >> >> > Or the InitContainer could be used for downloading. It
>>>>>> is natively
>>>>>> >>>>> >> >> > distributed and we will not have bottleneck.
>>>>>> >>>>> >> >> >
>>>>>> >>>>> >> >> > #2, Job graph recovery
>>>>>> >>>>> >> >> > We could have an optimization to store job graph on the
>>>>>> DFS. However, i
>>>>>> >>>>> >> >> > suggest building a new jobgraph
>>>>>> >>>>> >> >> > from the configuration is the default option. Since we
>>>>>> will not always have
>>>>>> >>>>> >> >> > a DFS store when deploying a
>>>>>> >>>>> >> >> > Flink per-job cluster. Of course, we assume that using
>>>>>> the same
>>>>>> >>>>> >> >> > configuration(e.g. job_id, user_jar, main_class,
>>>>>> >>>>> >> >> > main_args, parallelism, savepoint_settings, etc.) will
>>>>>> get a same job
>>>>>> >>>>> >> >> > graph. I think the standalone per-job
>>>>>> >>>>> >> >> > already has the similar behavior.
>>>>>> >>>>> >> >> >
>>>>>> >>>>> >> >> > #3, What happens with jobs that have multiple execute
>>>>>> calls?
>>>>>> >>>>> >> >> > Currently, it is really a problem. Even we use a local
>>>>>> client on Flink
>>>>>> >>>>> >> >> > master side, it will have different behavior with
>>>>>> >>>>> >> >> > client mode. For client mode, if we execute multiple
>>>>>> times, then we will
>>>>>> >>>>> >> >> > deploy multiple Flink clusters for each execute.
>>>>>> >>>>> >> >> > I am not pretty sure whether it is reasonable. However,
>>>>>> i still think using
>>>>>> >>>>> >> >> > the local client is a good choice. We could
>>>>>> >>>>> >> >> > continue the discussion in a new thread. @Zili Chen <
>>>>>> wander4...@gmail.com> Do
>>>>>> >>>>> >> >> > you want to drive this?
>>>>>> >>>>> >> >> >
>>>>>> >>>>> >> >> >
>>>>>> >>>>> >> >> >
>>>>>> >>>>> >> >> > Best,
>>>>>> >>>>> >> >> > Yang
>>>>>> >>>>> >> >> >
>>>>>> >>>>> >> >> > Peter Huang <huangzhenqiu0...@gmail.com> 于2020年1月16日周四
>>>>>> 上午1:55写道:
>>>>>> >>>>> >> >> >
>>>>>> >>>>> >> >> > > Hi Kostas,
>>>>>> >>>>> >> >> > >
>>>>>> >>>>> >> >> > > Thanks for this feedback. I can't agree more about
>>>>>> the opinion. The
>>>>>> >>>>> >> >> > > cluster mode should be added
>>>>>> >>>>> >> >> > > first in per job cluster.
>>>>>> >>>>> >> >> > >
>>>>>> >>>>> >> >> > > 1) For job cluster implementation
>>>>>> >>>>> >> >> > > 1. Job graph recovery from configuration or store as
>>>>>> static job graph as
>>>>>> >>>>> >> >> > > session cluster. I think the static one will be
>>>>>> better for less recovery
>>>>>> >>>>> >> >> > > time.
>>>>>> >>>>> >> >> > > Let me update the doc for details.
>>>>>> >>>>> >> >> > >
>>>>>> >>>>> >> >> > > 2. For job execute multiple times, I think @Zili Chen
>>>>>> >>>>> >> >> > > <wander4...@gmail.com> has proposed the local client
>>>>>> solution that can
>>>>>> >>>>> >> >> > > the run program actually in the cluster entry point.
>>>>>> We can put the
>>>>>> >>>>> >> >> > > implementation in the second stage,
>>>>>> >>>>> >> >> > > or even a new FLIP for further discussion.
>>>>>> >>>>> >> >> > >
>>>>>> >>>>> >> >> > > 2) For session cluster implementation
>>>>>> >>>>> >> >> > > We can disable the cluster mode for the session
>>>>>> cluster in the first
>>>>>> >>>>> >> >> > > stage. I agree the jar downloading will be a painful
>>>>>> thing.
>>>>>> >>>>> >> >> > > We can consider about PoC and performance evaluation
>>>>>> first. If the end to
>>>>>> >>>>> >> >> > > end experience is good enough, then we can consider
>>>>>> >>>>> >> >> > > proceeding with the solution.
>>>>>> >>>>> >> >> > >
>>>>>> >>>>> >> >> > > Looking forward to more opinions from @Yang Wang <
>>>>>> danrtsey...@gmail.com> @Zili
>>>>>> >>>>> >> >> > > Chen <wander4...@gmail.com> @Dian Fu <
>>>>>> dian0511...@gmail.com>.
>>>>>> >>>>> >> >> > >
>>>>>> >>>>> >> >> > >
>>>>>> >>>>> >> >> > > Best Regards
>>>>>> >>>>> >> >> > > Peter Huang
>>>>>> >>>>> >> >> > >
>>>>>> >>>>> >> >> > > On Wed, Jan 15, 2020 at 7:50 AM Kostas Kloudas <
>>>>>> kklou...@gmail.com> wrote:
>>>>>> >>>>> >> >> > >
>>>>>> >>>>> >> >> > >> Hi all,
>>>>>> >>>>> >> >> > >>
>>>>>> >>>>> >> >> > >> I am writing here as the discussion on the Google
>>>>>> Doc seems to be a
>>>>>> >>>>> >> >> > >> bit difficult to follow.
>>>>>> >>>>> >> >> > >>
>>>>>> >>>>> >> >> > >> I think that in order to be able to make progress,
>>>>>> it would be helpful
>>>>>> >>>>> >> >> > >> to focus on per-job mode for now.
>>>>>> >>>>> >> >> > >> The reason is that:
>>>>>> >>>>> >> >> > >>  1) making the (unique) JobSubmitHandler responsible
>>>>>> for creating the
>>>>>> >>>>> >> >> > >> jobgraphs,
>>>>>> >>>>> >> >> > >>   which includes downloading dependencies, is not an
>>>>>> optimal solution
>>>>>> >>>>> >> >> > >>  2) even if we put the responsibility on the
>>>>>> JobMaster, currently each
>>>>>> >>>>> >> >> > >> job has its own
>>>>>> >>>>> >> >> > >>   JobMaster but they all run on the same process, so
>>>>>> we have again a
>>>>>> >>>>> >> >> > >> single entity.
>>>>>> >>>>> >> >> > >>
>>>>>> >>>>> >> >> > >> Of course after this is done, and if we feel
>>>>>> comfortable with the
>>>>>> >>>>> >> >> > >> solution, then we can go to the session mode.
>>>>>> >>>>> >> >> > >>
>>>>>> >>>>> >> >> > >> A second comment has to do with fault-tolerance in
>>>>>> the per-job,
>>>>>> >>>>> >> >> > >> cluster-deploy mode.
>>>>>> >>>>> >> >> > >> In the document, it is suggested that upon recovery,
>>>>>> the JobMaster of
>>>>>> >>>>> >> >> > >> each job re-creates the JobGraph.
>>>>>> >>>>> >> >> > >> I am just wondering if it is better to create and
>>>>>> store the jobGraph
>>>>>> >>>>> >> >> > >> upon submission and only fetch it
>>>>>> >>>>> >> >> > >> upon recovery so that we have a static jobGraph.
>>>>>> >>>>> >> >> > >>
>>>>>> >>>>> >> >> > >> Finally, I have a question which is what happens
>>>>>> with jobs that have
>>>>>> >>>>> >> >> > >> multiple execute calls?
>>>>>> >>>>> >> >> > >> The semantics seem to change compared to the current
>>>>>> behaviour, right?
>>>>>> >>>>> >> >> > >>
>>>>>> >>>>> >> >> > >> Cheers,
>>>>>> >>>>> >> >> > >> Kostas
>>>>>> >>>>> >> >> > >>
>>>>>> >>>>> >> >> > >> On Wed, Jan 8, 2020 at 8:05 PM tison <
>>>>>> wander4...@gmail.com> wrote:
>>>>>> >>>>> >> >> > >> >
>>>>>> >>>>> >> >> > >> > not always, Yang Wang is also not yet a committer
>>>>>> but he can join the
>>>>>> >>>>> >> >> > >> > channel. I cannot find the id by clicking “Add new
>>>>>> member in channel” so
>>>>>> >>>>> >> >> > >> > come to you and ask for try out the link. Possibly
>>>>>> I will find other
>>>>>> >>>>> >> >> > >> ways
>>>>>> >>>>> >> >> > >> > but the original purpose is that the slack channel
>>>>>> is a public area we
>>>>>> >>>>> >> >> > >> > discuss about developing...
>>>>>> >>>>> >> >> > >> > Best,
>>>>>> >>>>> >> >> > >> > tison.
>>>>>> >>>>> >> >> > >> >
>>>>>> >>>>> >> >> > >> >
>>>>>> >>>>> >> >> > >> > Peter Huang <huangzhenqiu0...@gmail.com>
>>>>>> 于2020年1月9日周四 上午2:44写道:
>>>>>> >>>>> >> >> > >> >
>>>>>> >>>>> >> >> > >> > > Hi Tison,
>>>>>> >>>>> >> >> > >> > >
>>>>>> >>>>> >> >> > >> > > I am not the committer of Flink yet. I think I
>>>>>> can't join it also.
>>>>>> >>>>> >> >> > >> > >
>>>>>> >>>>> >> >> > >> > >
>>>>>> >>>>> >> >> > >> > > Best Regards
>>>>>> >>>>> >> >> > >> > > Peter Huang
>>>>>> >>>>> >> >> > >> > >
>>>>>> >>>>> >> >> > >> > > On Wed, Jan 8, 2020 at 9:39 AM tison <
>>>>>> wander4...@gmail.com> wrote:
>>>>>> >>>>> >> >> > >> > >
>>>>>> >>>>> >> >> > >> > > > Hi Peter,
>>>>>> >>>>> >> >> > >> > > >
>>>>>> >>>>> >> >> > >> > > > Could you try out this link?
>>>>>> >>>>> >> >> > >> > > https://the-asf.slack.com/messages/CNA3ADZPH
>>>>>> >>>>> >> >> > >> > > >
>>>>>> >>>>> >> >> > >> > > > Best,
>>>>>> >>>>> >> >> > >> > > > tison.
>>>>>> >>>>> >> >> > >> > > >
>>>>>> >>>>> >> >> > >> > > >
>>>>>> >>>>> >> >> > >> > > > Peter Huang <huangzhenqiu0...@gmail.com>
>>>>>> 于2020年1月9日周四 上午1:22写道:
>>>>>> >>>>> >> >> > >> > > >
>>>>>> >>>>> >> >> > >> > > > > Hi Tison,
>>>>>> >>>>> >> >> > >> > > > >
>>>>>> >>>>> >> >> > >> > > > > I can't join the group with shared link.
>>>>>> Would you please add me
>>>>>> >>>>> >> >> > >> into
>>>>>> >>>>> >> >> > >> > > the
>>>>>> >>>>> >> >> > >> > > > > group? My slack account is huangzhenqiu0825.
>>>>>> >>>>> >> >> > >> > > > > Thank you in advance.
>>>>>> >>>>> >> >> > >> > > > >
>>>>>> >>>>> >> >> > >> > > > >
>>>>>> >>>>> >> >> > >> > > > > Best Regards
>>>>>> >>>>> >> >> > >> > > > > Peter Huang
>>>>>> >>>>> >> >> > >> > > > >
>>>>>> >>>>> >> >> > >> > > > > On Wed, Jan 8, 2020 at 12:02 AM tison <
>>>>>> wander4...@gmail.com>
>>>>>> >>>>> >> >> > >> wrote:
>>>>>> >>>>> >> >> > >> > > > >
>>>>>> >>>>> >> >> > >> > > > > > Hi Peter,
>>>>>> >>>>> >> >> > >> > > > > >
>>>>>> >>>>> >> >> > >> > > > > > As described above, this effort should get
>>>>>> attention from people
>>>>>> >>>>> >> >> > >> > > > > developing
>>>>>> >>>>> >> >> > >> > > > > > FLIP-73 a.k.a. Executor abstractions. I
>>>>>> recommend you to join
>>>>>> >>>>> >> >> > >> the
>>>>>> >>>>> >> >> > >> > > > public
>>>>>> >>>>> >> >> > >> > > > > > slack channel[1] for Flink Client API
>>>>>> Enhancement and you can
>>>>>> >>>>> >> >> > >> try to
>>>>>> >>>>> >> >> > >> > > > > share
>>>>>> >>>>> >> >> > >> > > > > > you detailed thoughts there. It possibly
>>>>>> gets more concrete
>>>>>> >>>>> >> >> > >> > > attentions.
>>>>>> >>>>> >> >> > >> > > > > >
>>>>>> >>>>> >> >> > >> > > > > > Best,
>>>>>> >>>>> >> >> > >> > > > > > tison.
>>>>>> >>>>> >> >> > >> > > > > >
>>>>>> >>>>> >> >> > >> > > > > > [1]
>>>>>> >>>>> >> >> > >> > > > > >
>>>>>> >>>>> >> >> > >> > > > > >
>>>>>> >>>>> >> >> > >> > > > >
>>>>>> >>>>> >> >> > >> > > >
>>>>>> >>>>> >> >> > >> > >
>>>>>> >>>>> >> >> > >>
>>>>>> https://slack.com/share/IS21SJ75H/Rk8HhUly9FuEHb7oGwBZ33uL/enQtODg2MDYwNjE5MTg3LTA2MjIzNDc1M2ZjZDVlMjdlZjk1M2RkYmJhNjAwMTk2ZDZkODQ4NmY5YmI4OGRhNWJkYTViMTM1NzlmMzc4OWM
>>>>>> >>>>> >> >> > >> > > > > >
>>>>>> >>>>> >> >> > >> > > > > >
>>>>>> >>>>> >> >> > >> > > > > > Peter Huang <huangzhenqiu0...@gmail.com>
>>>>>> 于2020年1月7日周二 上午5:09写道:
>>>>>> >>>>> >> >> > >> > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > Dear All,
>>>>>> >>>>> >> >> > >> > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > Happy new year! According to existing
>>>>>> feedback from the
>>>>>> >>>>> >> >> > >> community,
>>>>>> >>>>> >> >> > >> > > we
>>>>>> >>>>> >> >> > >> > > > > > > revised the doc with the consideration
>>>>>> of session cluster
>>>>>> >>>>> >> >> > >> support,
>>>>>> >>>>> >> >> > >> > > > and
>>>>>> >>>>> >> >> > >> > > > > > > concrete interface changes needed and
>>>>>> execution plan. Please
>>>>>> >>>>> >> >> > >> take
>>>>>> >>>>> >> >> > >> > > one
>>>>>> >>>>> >> >> > >> > > > > > more
>>>>>> >>>>> >> >> > >> > > > > > > round of review at your most convenient
>>>>>> time.
>>>>>> >>>>> >> >> > >> > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > >
>>>>>> >>>>> >> >> > >> > > > > >
>>>>>> >>>>> >> >> > >> > > > >
>>>>>> >>>>> >> >> > >> > > >
>>>>>> >>>>> >> >> > >> > >
>>>>>> >>>>> >> >> > >>
>>>>>> https://docs.google.com/document/d/1aAwVjdZByA-0CHbgv16Me-vjaaDMCfhX7TzVVTuifYM/edit#
>>>>>> >>>>> >> >> > >> > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > Best Regards
>>>>>> >>>>> >> >> > >> > > > > > > Peter Huang
>>>>>> >>>>> >> >> > >> > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > On Thu, Jan 2, 2020 at 11:29 AM Peter
>>>>>> Huang <
>>>>>> >>>>> >> >> > >> > > > > huangzhenqiu0...@gmail.com>
>>>>>> >>>>> >> >> > >> > > > > > > wrote:
>>>>>> >>>>> >> >> > >> > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > > Hi Dian,
>>>>>> >>>>> >> >> > >> > > > > > > > Thanks for giving us valuable
>>>>>> feedbacks.
>>>>>> >>>>> >> >> > >> > > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > > 1) It's better to have a whole design
>>>>>> for this feature
>>>>>> >>>>> >> >> > >> > > > > > > > For the suggestion of enabling the
>>>>>> cluster mode also session
>>>>>> >>>>> >> >> > >> > > > > cluster, I
>>>>>> >>>>> >> >> > >> > > > > > > > think Flink already supported it.
>>>>>> WebSubmissionExtension
>>>>>> >>>>> >> >> > >> already
>>>>>> >>>>> >> >> > >> > > > > allows
>>>>>> >>>>> >> >> > >> > > > > > > > users to start a job with the
>>>>>> specified jar by using web UI.
>>>>>> >>>>> >> >> > >> > > > > > > > But we need to enable the feature from
>>>>>> CLI for both local
>>>>>> >>>>> >> >> > >> jar,
>>>>>> >>>>> >> >> > >> > > > remote
>>>>>> >>>>> >> >> > >> > > > > > > jar.
>>>>>> >>>>> >> >> > >> > > > > > > > I will align with Yang Wang first
>>>>>> about the details and
>>>>>> >>>>> >> >> > >> update
>>>>>> >>>>> >> >> > >> > > the
>>>>>> >>>>> >> >> > >> > > > > > design
>>>>>> >>>>> >> >> > >> > > > > > > > doc.
>>>>>> >>>>> >> >> > >> > > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > > 2) It's better to consider the
>>>>>> convenience for users, such
>>>>>> >>>>> >> >> > >> as
>>>>>> >>>>> >> >> > >> > > > > debugging
>>>>>> >>>>> >> >> > >> > > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > > I am wondering whether we can store
>>>>>> the exception in
>>>>>> >>>>> >> >> > >> jobgragh
>>>>>> >>>>> >> >> > >> > > > > > > > generation in application master. As
>>>>>> no streaming graph can
>>>>>> >>>>> >> >> > >> be
>>>>>> >>>>> >> >> > >> > > > > > scheduled
>>>>>> >>>>> >> >> > >> > > > > > > in
>>>>>> >>>>> >> >> > >> > > > > > > > this case, there will be no more TM
>>>>>> will be requested from
>>>>>> >>>>> >> >> > >> > > FlinkRM.
>>>>>> >>>>> >> >> > >> > > > > > > > If the AM is still running, users can
>>>>>> still query it from
>>>>>> >>>>> >> >> > >> CLI. As
>>>>>> >>>>> >> >> > >> > > > it
>>>>>> >>>>> >> >> > >> > > > > > > > requires more change, we can get some
>>>>>> feedback from <
>>>>>> >>>>> >> >> > >> > > > > > aljos...@apache.org
>>>>>> >>>>> >> >> > >> > > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > > and @zjf...@gmail.com <
>>>>>> zjf...@gmail.com>.
>>>>>> >>>>> >> >> > >> > > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > > 3) It's better to consider the impact
>>>>>> to the stability of
>>>>>> >>>>> >> >> > >> the
>>>>>> >>>>> >> >> > >> > > > cluster
>>>>>> >>>>> >> >> > >> > > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > > I agree with Yang Wang's opinion.
>>>>>> >>>>> >> >> > >> > > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > > Best Regards
>>>>>> >>>>> >> >> > >> > > > > > > > Peter Huang
>>>>>> >>>>> >> >> > >> > > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > > On Sun, Dec 29, 2019 at 9:44 PM Dian
>>>>>> Fu <
>>>>>> >>>>> >> >> > >> dian0511...@gmail.com>
>>>>>> >>>>> >> >> > >> > > > > wrote:
>>>>>> >>>>> >> >> > >> > > > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > >> Hi all,
>>>>>> >>>>> >> >> > >> > > > > > > >>
>>>>>> >>>>> >> >> > >> > > > > > > >> Sorry to jump into this discussion.
>>>>>> Thanks everyone for the
>>>>>> >>>>> >> >> > >> > > > > > discussion.
>>>>>> >>>>> >> >> > >> > > > > > > >> I'm very interested in this topic
>>>>>> although I'm not an
>>>>>> >>>>> >> >> > >> expert in
>>>>>> >>>>> >> >> > >> > > > this
>>>>>> >>>>> >> >> > >> > > > > > > part.
>>>>>> >>>>> >> >> > >> > > > > > > >> So I'm glad to share my thoughts as
>>>>>> following:
>>>>>> >>>>> >> >> > >> > > > > > > >>
>>>>>> >>>>> >> >> > >> > > > > > > >> 1) It's better to have a whole design
>>>>>> for this feature
>>>>>> >>>>> >> >> > >> > > > > > > >> As we know, there are two deployment
>>>>>> modes: per-job mode
>>>>>> >>>>> >> >> > >> and
>>>>>> >>>>> >> >> > >> > > > session
>>>>>> >>>>> >> >> > >> > > > > > > >> mode. I'm wondering which mode really
>>>>>> needs this feature.
>>>>>> >>>>> >> >> > >> As the
>>>>>> >>>>> >> >> > >> > > > > > design
>>>>>> >>>>> >> >> > >> > > > > > > doc
>>>>>> >>>>> >> >> > >> > > > > > > >> mentioned, per-job mode is more used
>>>>>> for streaming jobs and
>>>>>> >>>>> >> >> > >> > > > session
>>>>>> >>>>> >> >> > >> > > > > > > mode is
>>>>>> >>>>> >> >> > >> > > > > > > >> usually used for batch jobs(Of
>>>>>> course, the job types and
>>>>>> >>>>> >> >> > >> the
>>>>>> >>>>> >> >> > >> > > > > > deployment
>>>>>> >>>>> >> >> > >> > > > > > > >> modes are orthogonal). Usually
>>>>>> streaming job is only
>>>>>> >>>>> >> >> > >> needed to
>>>>>> >>>>> >> >> > >> > > be
>>>>>> >>>>> >> >> > >> > > > > > > submitted
>>>>>> >>>>> >> >> > >> > > > > > > >> once and it will run for days or
>>>>>> weeks, while batch jobs
>>>>>> >>>>> >> >> > >> will be
>>>>>> >>>>> >> >> > >> > > > > > > submitted
>>>>>> >>>>> >> >> > >> > > > > > > >> more frequently compared with
>>>>>> streaming jobs. This means
>>>>>> >>>>> >> >> > >> that
>>>>>> >>>>> >> >> > >> > > > maybe
>>>>>> >>>>> >> >> > >> > > > > > > session
>>>>>> >>>>> >> >> > >> > > > > > > >> mode also needs this feature.
>>>>>> However, if we support this
>>>>>> >>>>> >> >> > >> > > feature
>>>>>> >>>>> >> >> > >> > > > in
>>>>>> >>>>> >> >> > >> > > > > > > >> session mode, the application master
>>>>>> will become the new
>>>>>> >>>>> >> >> > >> > > > centralized
>>>>>> >>>>> >> >> > >> > > > > > > >> service(which should be solved). So
>>>>>> in this case, it's
>>>>>> >>>>> >> >> > >> better to
>>>>>> >>>>> >> >> > >> > > > > have
>>>>>> >>>>> >> >> > >> > > > > > a
>>>>>> >>>>> >> >> > >> > > > > > > >> complete design for both per-job mode
>>>>>> and session mode.
>>>>>> >>>>> >> >> > >> > > > Furthermore,
>>>>>> >>>>> >> >> > >> > > > > > > even
>>>>>> >>>>> >> >> > >> > > > > > > >> if we can do it phase by phase, we
>>>>>> need to have a whole
>>>>>> >>>>> >> >> > >> picture
>>>>>> >>>>> >> >> > >> > > of
>>>>>> >>>>> >> >> > >> > > > > how
>>>>>> >>>>> >> >> > >> > > > > > > it
>>>>>> >>>>> >> >> > >> > > > > > > >> works in both per-job mode and
>>>>>> session mode.
>>>>>> >>>>> >> >> > >> > > > > > > >>
>>>>>> >>>>> >> >> > >> > > > > > > >> 2) It's better to consider the
>>>>>> convenience for users, such
>>>>>> >>>>> >> >> > >> as
>>>>>> >>>>> >> >> > >> > > > > > debugging
>>>>>> >>>>> >> >> > >> > > > > > > >> After we finish this feature, the job
>>>>>> graph will be
>>>>>> >>>>> >> >> > >> compiled in
>>>>>> >>>>> >> >> > >> > > > the
>>>>>> >>>>> >> >> > >> > > > > > > >> application master, which means that
>>>>>> users cannot easily
>>>>>> >>>>> >> >> > >> get the
>>>>>> >>>>> >> >> > >> > > > > > > exception
>>>>>> >>>>> >> >> > >> > > > > > > >> message synchorousely in the job
>>>>>> client if there are
>>>>>> >>>>> >> >> > >> problems
>>>>>> >>>>> >> >> > >> > > > during
>>>>>> >>>>> >> >> > >> > > > > > the
>>>>>> >>>>> >> >> > >> > > > > > > >> job graph compiling (especially for
>>>>>> platform users), such
>>>>>> >>>>> >> >> > >> as the
>>>>>> >>>>> >> >> > >> > > > > > > resource
>>>>>> >>>>> >> >> > >> > > > > > > >> path is incorrect, the user program
>>>>>> itself has some
>>>>>> >>>>> >> >> > >> problems,
>>>>>> >>>>> >> >> > >> > > etc.
>>>>>> >>>>> >> >> > >> > > > > > What
>>>>>> >>>>> >> >> > >> > > > > > > I'm
>>>>>> >>>>> >> >> > >> > > > > > > >> thinking is that maybe we should
>>>>>> throw the exceptions as
>>>>>> >>>>> >> >> > >> early
>>>>>> >>>>> >> >> > >> > > as
>>>>>> >>>>> >> >> > >> > > > > > > possible
>>>>>> >>>>> >> >> > >> > > > > > > >> (during job submission stage).
>>>>>> >>>>> >> >> > >> > > > > > > >>
>>>>>> >>>>> >> >> > >> > > > > > > >> 3) It's better to consider the impact
>>>>>> to the stability of
>>>>>> >>>>> >> >> > >> the
>>>>>> >>>>> >> >> > >> > > > > cluster
>>>>>> >>>>> >> >> > >> > > > > > > >> If we perform the compiling in the
>>>>>> application master, we
>>>>>> >>>>> >> >> > >> should
>>>>>> >>>>> >> >> > >> > > > > > > consider
>>>>>> >>>>> >> >> > >> > > > > > > >> the impact of the compiling errors.
>>>>>> Although YARN could
>>>>>> >>>>> >> >> > >> resume
>>>>>> >>>>> >> >> > >> > > the
>>>>>> >>>>> >> >> > >> > > > > > > >> application master in case of
>>>>>> failures, but in some case
>>>>>> >>>>> >> >> > >> the
>>>>>> >>>>> >> >> > >> > > > > compiling
>>>>>> >>>>> >> >> > >> > > > > > > >> failure may be a waste of cluster
>>>>>> resource and may impact
>>>>>> >>>>> >> >> > >> the
>>>>>> >>>>> >> >> > >> > > > > > stability
>>>>>> >>>>> >> >> > >> > > > > > > the
>>>>>> >>>>> >> >> > >> > > > > > > >> cluster and the other jobs in the
>>>>>> cluster, such as the
>>>>>> >>>>> >> >> > >> resource
>>>>>> >>>>> >> >> > >> > > > path
>>>>>> >>>>> >> >> > >> > > > > > is
>>>>>> >>>>> >> >> > >> > > > > > > >> incorrect, the user program itself
>>>>>> has some problems(in
>>>>>> >>>>> >> >> > >> this
>>>>>> >>>>> >> >> > >> > > case,
>>>>>> >>>>> >> >> > >> > > > > job
>>>>>> >>>>> >> >> > >> > > > > > > >> failover cannot solve this kind of
>>>>>> problems) etc. In the
>>>>>> >>>>> >> >> > >> current
>>>>>> >>>>> >> >> > >> > > > > > > >> implemention, the compiling errors
>>>>>> are handled in the
>>>>>> >>>>> >> >> > >> client
>>>>>> >>>>> >> >> > >> > > side
>>>>>> >>>>> >> >> > >> > > > > and
>>>>>> >>>>> >> >> > >> > > > > > > there
>>>>>> >>>>> >> >> > >> > > > > > > >> is no impact to the cluster at all.
>>>>>> >>>>> >> >> > >> > > > > > > >>
>>>>>> >>>>> >> >> > >> > > > > > > >> Regarding to 1), it's clearly pointed
>>>>>> in the design doc
>>>>>> >>>>> >> >> > >> that
>>>>>> >>>>> >> >> > >> > > only
>>>>>> >>>>> >> >> > >> > > > > > > per-job
>>>>>> >>>>> >> >> > >> > > > > > > >> mode will be supported. However, I
>>>>>> think it's better to
>>>>>> >>>>> >> >> > >> also
>>>>>> >>>>> >> >> > >> > > > > consider
>>>>>> >>>>> >> >> > >> > > > > > > the
>>>>>> >>>>> >> >> > >> > > > > > > >> session mode in the design doc.
>>>>>> >>>>> >> >> > >> > > > > > > >> Regarding to 2) and 3), I have not
>>>>>> seen related sections
>>>>>> >>>>> >> >> > >> in the
>>>>>> >>>>> >> >> > >> > > > > design
>>>>>> >>>>> >> >> > >> > > > > > > >> doc. It will be good if we can cover
>>>>>> them in the design
>>>>>> >>>>> >> >> > >> doc.
>>>>>> >>>>> >> >> > >> > > > > > > >>
>>>>>> >>>>> >> >> > >> > > > > > > >> Feel free to correct me If there is
>>>>>> anything I
>>>>>> >>>>> >> >> > >> misunderstand.
>>>>>> >>>>> >> >> > >> > > > > > > >>
>>>>>> >>>>> >> >> > >> > > > > > > >> Regards,
>>>>>> >>>>> >> >> > >> > > > > > > >> Dian
>>>>>> >>>>> >> >> > >> > > > > > > >>
>>>>>> >>>>> >> >> > >> > > > > > > >>
>>>>>> >>>>> >> >> > >> > > > > > > >> > 在 2019年12月27日,上午3:13,Peter Huang <
>>>>>> >>>>> >> >> > >> huangzhenqiu0...@gmail.com>
>>>>>> >>>>> >> >> > >> > > > 写道:
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> > Hi Yang,
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> > I can't agree more. The effort
>>>>>> definitely needs to align
>>>>>> >>>>> >> >> > >> with
>>>>>> >>>>> >> >> > >> > > > the
>>>>>> >>>>> >> >> > >> > > > > > > final
>>>>>> >>>>> >> >> > >> > > > > > > >> > goal of FLIP-73.
>>>>>> >>>>> >> >> > >> > > > > > > >> > I am thinking about whether we can
>>>>>> achieve the goal with
>>>>>> >>>>> >> >> > >> two
>>>>>> >>>>> >> >> > >> > > > > phases.
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> > 1) Phase I
>>>>>> >>>>> >> >> > >> > > > > > > >> > As the CLiFrontend will not be
>>>>>> depreciated soon. We can
>>>>>> >>>>> >> >> > >> still
>>>>>> >>>>> >> >> > >> > > > use
>>>>>> >>>>> >> >> > >> > > > > > the
>>>>>> >>>>> >> >> > >> > > > > > > >> > deployMode flag there,
>>>>>> >>>>> >> >> > >> > > > > > > >> > pass the program info through Flink
>>>>>> configuration,  use
>>>>>> >>>>> >> >> > >> the
>>>>>> >>>>> >> >> > >> > > > > > > >> > ClassPathJobGraphRetriever
>>>>>> >>>>> >> >> > >> > > > > > > >> > to generate the job graph in
>>>>>> ClusterEntrypoints of yarn
>>>>>> >>>>> >> >> > >> and
>>>>>> >>>>> >> >> > >> > > > > > > Kubernetes.
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> > 2) Phase II
>>>>>> >>>>> >> >> > >> > > > > > > >> > In  AbstractJobClusterExecutor, the
>>>>>> job graph is
>>>>>> >>>>> >> >> > >> generated in
>>>>>> >>>>> >> >> > >> > > > the
>>>>>> >>>>> >> >> > >> > > > > > > >> execute
>>>>>> >>>>> >> >> > >> > > > > > > >> > function. We can still
>>>>>> >>>>> >> >> > >> > > > > > > >> > use the deployMode in it. With
>>>>>> deployMode = cluster, the
>>>>>> >>>>> >> >> > >> > > execute
>>>>>> >>>>> >> >> > >> > > > > > > >> function
>>>>>> >>>>> >> >> > >> > > > > > > >> > only starts the cluster.
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> > When
>>>>>> {Yarn/Kuberneates}PerJobClusterEntrypoint starts,
>>>>>> >>>>> >> >> > >> It will
>>>>>> >>>>> >> >> > >> > > > > start
>>>>>> >>>>> >> >> > >> > > > > > > the
>>>>>> >>>>> >> >> > >> > > > > > > >> > dispatch first, then we can use
>>>>>> >>>>> >> >> > >> > > > > > > >> > a ClusterEnvironment similar to
>>>>>> ContextEnvironment to
>>>>>> >>>>> >> >> > >> submit
>>>>>> >>>>> >> >> > >> > > the
>>>>>> >>>>> >> >> > >> > > > > job
>>>>>> >>>>> >> >> > >> > > > > > > >> with
>>>>>> >>>>> >> >> > >> > > > > > > >> > jobName the local
>>>>>> >>>>> >> >> > >> > > > > > > >> > dispatcher. For the details, we
>>>>>> need more investigation.
>>>>>> >>>>> >> >> > >> Let's
>>>>>> >>>>> >> >> > >> > > > > wait
>>>>>> >>>>> >> >> > >> > > > > > > >> > for @Aljoscha
>>>>>> >>>>> >> >> > >> > > > > > > >> > Krettek <aljos...@apache.org>
>>>>>> @Till Rohrmann <
>>>>>> >>>>> >> >> > >> > > > > trohrm...@apache.org
>>>>>> >>>>> >> >> > >> > > > > > >'s
>>>>>> >>>>> >> >> > >> > > > > > > >> > feedback after the holiday season.
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> > Thank you in advance. Merry
>>>>>> Chrismas and Happy New
>>>>>> >>>>> >> >> > >> Year!!!
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> > Best Regards
>>>>>> >>>>> >> >> > >> > > > > > > >> > Peter Huang
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> > On Wed, Dec 25, 2019 at 1:08 AM
>>>>>> Yang Wang <
>>>>>> >>>>> >> >> > >> > > > danrtsey...@gmail.com>
>>>>>> >>>>> >> >> > >> > > > > > > >> wrote:
>>>>>> >>>>> >> >> > >> > > > > > > >> >
>>>>>> >>>>> >> >> > >> > > > > > > >> >> Hi Peter,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>
>>>>>> >>>>> >> >> > >> > > > > > > >> >> I think we need to reconsider
>>>>>> tison's suggestion
>>>>>> >>>>> >> >> > >> seriously.
>>>>>> >>>>> >> >> > >> > > > After
>>>>>> >>>>> >> >> > >> > > > > > > >> FLIP-73,
>>>>>> >>>>> >> >> > >> > > > > > > >> >> the deployJobCluster has
>>>>>> >>>>> >> >> > >> > > > > > > >> >> beenmoved into
>>>>>> `JobClusterExecutor#execute`. It should
>>>>>> >>>>> >> >> > >> not be
>>>>>> >>>>> >> >> > >> > > > > > > perceived
>>>>>> >>>>> >> >> > >> > > > > > > >> >> for `CliFrontend`. That
>>>>>> >>>>> >> >> > >> > > > > > > >> >> means the user program will
>>>>>> *ALWAYS* be executed on
>>>>>> >>>>> >> >> > >> client
>>>>>> >>>>> >> >> > >> > > > side.
>>>>>> >>>>> >> >> > >> > > > > > This
>>>>>> >>>>> >> >> > >> > > > > > > >> is
>>>>>> >>>>> >> >> > >> > > > > > > >> >> the by design behavior.
>>>>>> >>>>> >> >> > >> > > > > > > >> >> So, we could not just add
>>>>>> `if(client mode) .. else
>>>>>> >>>>> >> >> > >> if(cluster
>>>>>> >>>>> >> >> > >> > > > > mode)
>>>>>> >>>>> >> >> > >> > > > > > > >> ...`
>>>>>> >>>>> >> >> > >> > > > > > > >> >> codes in `CliFrontend` to bypass
>>>>>> >>>>> >> >> > >> > > > > > > >> >> the executor. We need to find a
>>>>>> clean way to decouple
>>>>>> >>>>> >> >> > >> > > executing
>>>>>> >>>>> >> >> > >> > > > > > user
>>>>>> >>>>> >> >> > >> > > > > > > >> >> program and deploying per-job
>>>>>> >>>>> >> >> > >> > > > > > > >> >> cluster. Based on this, we could
>>>>>> support to execute user
>>>>>> >>>>> >> >> > >> > > > program
>>>>>> >>>>> >> >> > >> > > > > on
>>>>>> >>>>> >> >> > >> > > > > > > >> client
>>>>>> >>>>> >> >> > >> > > > > > > >> >> or master side.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>
>>>>>> >>>>> >> >> > >> > > > > > > >> >> Maybe Aljoscha and Jeff could give
>>>>>> some good
>>>>>> >>>>> >> >> > >> suggestions.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>
>>>>>> >>>>> >> >> > >> > > > > > > >> >> Best,
>>>>>> >>>>> >> >> > >> > > > > > > >> >> Yang
>>>>>> >>>>> >> >> > >> > > > > > > >> >>
>>>>>> >>>>> >> >> > >> > > > > > > >> >> Peter Huang <
>>>>>> huangzhenqiu0...@gmail.com> 于2019年12月25日周三
>>>>>> >>>>> >> >> > >> > > > > 上午4:03写道:
>>>>>> >>>>> >> >> > >> > > > > > > >> >>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> Hi Jingjing,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> The improvement proposed is a
>>>>>> deployment option for
>>>>>> >>>>> >> >> > >> CLI. For
>>>>>> >>>>> >> >> > >> > > > SQL
>>>>>> >>>>> >> >> > >> > > > > > > based
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> Flink application, It is more
>>>>>> convenient to use the
>>>>>> >>>>> >> >> > >> existing
>>>>>> >>>>> >> >> > >> > > > > model
>>>>>> >>>>> >> >> > >> > > > > > > in
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> SqlClient in which
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> the job graph is generated within
>>>>>> SqlClient. After
>>>>>> >>>>> >> >> > >> adding
>>>>>> >>>>> >> >> > >> > > the
>>>>>> >>>>> >> >> > >> > > > > > > delayed
>>>>>> >>>>> >> >> > >> > > > > > > >> job
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> graph generation, I think there
>>>>>> is no change is needed
>>>>>> >>>>> >> >> > >> for
>>>>>> >>>>> >> >> > >> > > > your
>>>>>> >>>>> >> >> > >> > > > > > > side.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> Best Regards
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> Peter Huang
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> On Wed, Dec 18, 2019 at 6:01 AM
>>>>>> jingjing bai <
>>>>>> >>>>> >> >> > >> > > > > > > >> baijingjing7...@gmail.com>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> wrote:
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>> hi peter:
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>    we had extension SqlClent to
>>>>>> support sql job
>>>>>> >>>>> >> >> > >> submit in
>>>>>> >>>>> >> >> > >> > > web
>>>>>> >>>>> >> >> > >> > > > > > base
>>>>>> >>>>> >> >> > >> > > > > > > on
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>> flink 1.9.   we support submit
>>>>>> to yarn on per job
>>>>>> >>>>> >> >> > >> mode too.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>    in this case, the job graph
>>>>>> generated  on client
>>>>>> >>>>> >> >> > >> side
>>>>>> >>>>> >> >> > >> > > .  I
>>>>>> >>>>> >> >> > >> > > > > > think
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> this
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>> discuss Mainly to improve api
>>>>>> programme.  but in my
>>>>>> >>>>> >> >> > >> case ,
>>>>>> >>>>> >> >> > >> > > > > there
>>>>>> >>>>> >> >> > >> > > > > > is
>>>>>> >>>>> >> >> > >> > > > > > > >> no
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>> jar to upload but only a sql
>>>>>> string .
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>    do u had more suggestion to
>>>>>> improve for sql mode
>>>>>> >>>>> >> >> > >> or it
>>>>>> >>>>> >> >> > >> > > is
>>>>>> >>>>> >> >> > >> > > > > > only a
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>> switch for api programme?
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>> best
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>> bai jj
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>> Yang Wang <danrtsey...@gmail.com>
>>>>>> 于2019年12月18日周三
>>>>>> >>>>> >> >> > >> 下午7:21写道:
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> I just want to revive this
>>>>>> discussion.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> Recently, i am thinking about
>>>>>> how to natively run
>>>>>> >>>>> >> >> > >> flink
>>>>>> >>>>> >> >> > >> > > > > per-job
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> cluster on
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> Kubernetes.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> The per-job mode on Kubernetes
>>>>>> is very different
>>>>>> >>>>> >> >> > >> from on
>>>>>> >>>>> >> >> > >> > > > Yarn.
>>>>>> >>>>> >> >> > >> > > > > > And
>>>>>> >>>>> >> >> > >> > > > > > > >> we
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> will
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> have
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> the same deployment
>>>>>> requirements to the client and
>>>>>> >>>>> >> >> > >> entry
>>>>>> >>>>> >> >> > >> > > > > point.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> 1. Flink client not always need
>>>>>> a local jar to start
>>>>>> >>>>> >> >> > >> a
>>>>>> >>>>> >> >> > >> > > Flink
>>>>>> >>>>> >> >> > >> > > > > > > per-job
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> cluster. We could
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> support multiple schemas. For
>>>>>> example,
>>>>>> >>>>> >> >> > >> > > > file:///path/of/my.jar
>>>>>> >>>>> >> >> > >> > > > > > > means
>>>>>> >>>>> >> >> > >> > > > > > > >> a
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> jar
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> located
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> at client side,
>>>>>> >>>>> >> >> > >> hdfs://myhdfs/user/myname/flink/my.jar
>>>>>> >>>>> >> >> > >> > > > means a
>>>>>> >>>>> >> >> > >> > > > > > jar
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> located
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> at
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> remote hdfs,
>>>>>> local:///path/in/image/my.jar means a
>>>>>> >>>>> >> >> > >> jar
>>>>>> >>>>> >> >> > >> > > > located
>>>>>> >>>>> >> >> > >> > > > > > at
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> jobmanager side.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> 2. Support running user program
>>>>>> on master side. This
>>>>>> >>>>> >> >> > >> also
>>>>>> >>>>> >> >> > >> > > > > means
>>>>>> >>>>> >> >> > >> > > > > > > the
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> entry
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> point
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> will generate the job graph on
>>>>>> master side. We could
>>>>>> >>>>> >> >> > >> use
>>>>>> >>>>> >> >> > >> > > the
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> ClasspathJobGraphRetriever
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> or start a local Flink client
>>>>>> to achieve this
>>>>>> >>>>> >> >> > >> purpose.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> cc tison, Aljoscha & Kostas Do
>>>>>> you think this is the
>>>>>> >>>>> >> >> > >> right
>>>>>> >>>>> >> >> > >> > > > > > > >> direction we
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> need to work?
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> tison <wander4...@gmail.com>
>>>>>> 于2019年12月12日周四
>>>>>> >>>>> >> >> > >> 下午4:48写道:
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> A quick idea is that we
>>>>>> separate the deployment
>>>>>> >>>>> >> >> > >> from user
>>>>>> >>>>> >> >> > >> > > > > > program
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> that
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> it
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> has always been done
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> outside the program. On user
>>>>>> program executed there
>>>>>> >>>>> >> >> > >> is
>>>>>> >>>>> >> >> > >> > > > > always a
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> ClusterClient that
>>>>>> communicates with
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> an existing cluster, remote or
>>>>>> local. It will be
>>>>>> >>>>> >> >> > >> another
>>>>>> >>>>> >> >> > >> > > > > thread
>>>>>> >>>>> >> >> > >> > > > > > > so
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> just
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> for
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> your information.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> Best,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> tison.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> tison <wander4...@gmail.com>
>>>>>> 于2019年12月12日周四
>>>>>> >>>>> >> >> > >> 下午4:40写道:
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> Hi Peter,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> Another concern I realized
>>>>>> recently is that with
>>>>>> >>>>> >> >> > >> current
>>>>>> >>>>> >> >> > >> > > > > > > Executors
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> abstraction(FLIP-73)
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> I'm afraid that user program
>>>>>> is designed to ALWAYS
>>>>>> >>>>> >> >> > >> run
>>>>>> >>>>> >> >> > >> > > on
>>>>>> >>>>> >> >> > >> > > > > the
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> client
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> side.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> Specifically,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> we deploy the job in executor
>>>>>> when env.execute
>>>>>> >>>>> >> >> > >> called.
>>>>>> >>>>> >> >> > >> > > > This
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> abstraction
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> possibly prevents
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> Flink runs user program on
>>>>>> the cluster side.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> For your proposal, in this
>>>>>> case we already
>>>>>> >>>>> >> >> > >> compiled the
>>>>>> >>>>> >> >> > >> > > > > > program
>>>>>> >>>>> >> >> > >> > > > > > > >> and
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> run
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> on
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> the client side,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> even we deploy a cluster and
>>>>>> retrieve job graph
>>>>>> >>>>> >> >> > >> from
>>>>>> >>>>> >> >> > >> > > > program
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> metadata, it
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> doesn't make
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> many sense.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> cc Aljoscha & Kostas what do
>>>>>> you think about this
>>>>>> >>>>> >> >> > >> > > > > constraint?
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> Best,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> tison.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>> Peter Huang <
>>>>>> huangzhenqiu0...@gmail.com>
>>>>>> >>>>> >> >> > >> 于2019年12月10日周二
>>>>>> >>>>> >> >> > >> > > > > > > >> 下午12:45写道:
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> Hi Tison,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> Yes, you are right. I think
>>>>>> I made the wrong
>>>>>> >>>>> >> >> > >> argument
>>>>>> >>>>> >> >> > >> > > in
>>>>>> >>>>> >> >> > >> > > > > the
>>>>>> >>>>> >> >> > >> > > > > > > doc.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> Basically, the packaging jar
>>>>>> problem is only for
>>>>>> >>>>> >> >> > >> > > platform
>>>>>> >>>>> >> >> > >> > > > > > > users.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> In
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> our
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> internal deploy service,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> we further optimized the
>>>>>> deployment latency by
>>>>>> >>>>> >> >> > >> letting
>>>>>> >>>>> >> >> > >> > > > > users
>>>>>> >>>>> >> >> > >> > > > > > to
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> packaging
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> flink-runtime together with
>>>>>> the uber jar, so that
>>>>>> >>>>> >> >> > >> we
>>>>>> >>>>> >> >> > >> > > > don't
>>>>>> >>>>> >> >> > >> > > > > > need
>>>>>> >>>>> >> >> > >> > > > > > > >> to
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> consider
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> multiple flink version
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> support for now. In the
>>>>>> session client mode, as
>>>>>> >>>>> >> >> > >> Flink
>>>>>> >>>>> >> >> > >> > > > libs
>>>>>> >>>>> >> >> > >> > > > > > will
>>>>>> >>>>> >> >> > >> > > > > > > >> be
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> shipped
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> anyway as local resources of
>>>>>> yarn. Users actually
>>>>>> >>>>> >> >> > >> don't
>>>>>> >>>>> >> >> > >> > > > > need
>>>>>> >>>>> >> >> > >> > > > > > to
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> package
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> those libs into job jar.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> Best Regards
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> Peter Huang
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> On Mon, Dec 9, 2019 at 8:35
>>>>>> PM tison <
>>>>>> >>>>> >> >> > >> > > > wander4...@gmail.com
>>>>>> >>>>> >> >> > >> > > > > >
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> wrote:
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> 3. What do you mean about
>>>>>> the package? Do users
>>>>>> >>>>> >> >> > >> need
>>>>>> >>>>> >> >> > >> > > to
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> compile
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> their
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>> jars
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>> inlcuding flink-clients,
>>>>>> flink-optimizer,
>>>>>> >>>>> >> >> > >> flink-table
>>>>>> >>>>> >> >> > >> > > > > codes?
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>> The answer should be no
>>>>>> because they exist in
>>>>>> >>>>> >> >> > >> system
>>>>>> >>>>> >> >> > >> > > > > > > classpath.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>> Best,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>> tison.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>> Yang Wang <
>>>>>> danrtsey...@gmail.com> 于2019年12月10日周二
>>>>>> >>>>> >> >> > >> > > > > 下午12:18写道:
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> Hi Peter,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> Thanks a lot for starting
>>>>>> this discussion. I
>>>>>> >>>>> >> >> > >> think
>>>>>> >>>>> >> >> > >> > > this
>>>>>> >>>>> >> >> > >> > > > > is
>>>>>> >>>>> >> >> > >> > > > > > a
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> very
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> useful
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> feature.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> Not only for Yarn, i am
>>>>>> focused on flink on
>>>>>> >>>>> >> >> > >> > > Kubernetes
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> integration
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> and
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>> come
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> across the same
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> problem. I do not want the
>>>>>> job graph generated
>>>>>> >>>>> >> >> > >> on
>>>>>> >>>>> >> >> > >> > > > client
>>>>>> >>>>> >> >> > >> > > > > > > side.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> Instead,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>> the
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> user jars are built in
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> a user-defined image. When
>>>>>> the job manager
>>>>>> >>>>> >> >> > >> launched,
>>>>>> >>>>> >> >> > >> > > we
>>>>>> >>>>> >> >> > >> > > > > > just
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> need to
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> generate the job graph
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> based on local user jars.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> I have some small
>>>>>> suggestion about this.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> 1.
>>>>>> `ProgramJobGraphRetriever` is very similar to
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>
>>>>>> `ClasspathJobGraphRetriever`, the differences
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> are the former needs
>>>>>> `ProgramMetadata` and the
>>>>>> >>>>> >> >> > >> latter
>>>>>> >>>>> >> >> > >> > > > > needs
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> some
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>> arguments.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> Is it possible to
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> have an unified
>>>>>> `JobGraphRetriever` to support
>>>>>> >>>>> >> >> > >> both?
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> 2. Is it possible to not
>>>>>> use a local user jar to
>>>>>> >>>>> >> >> > >> > > start
>>>>>> >>>>> >> >> > >> > > > a
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> per-job
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> cluster?
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> In your case, the user
>>>>>> jars has
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> existed on hdfs already
>>>>>> and we do need to
>>>>>> >>>>> >> >> > >> download
>>>>>> >>>>> >> >> > >> > > the
>>>>>> >>>>> >> >> > >> > > > > jars
>>>>>> >>>>> >> >> > >> > > > > > > to
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> deployer
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> service. Currently, we
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> always need a local user
>>>>>> jar to start a flink
>>>>>> >>>>> >> >> > >> > > cluster.
>>>>>> >>>>> >> >> > >> > > > It
>>>>>> >>>>> >> >> > >> > > > > > is
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> be
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> great
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> if
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>> we
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> could support remote user
>>>>>> jars.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>>> In the implementation,
>>>>>> we assume users package
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> flink-clients,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> flink-optimizer,
>>>>>> flink-table together within
>>>>>> >>>>> >> >> > >> the job
>>>>>> >>>>> >> >> > >> > > > jar.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> Otherwise,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> the
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> job graph generation within
>>>>>> >>>>> >> >> > >> JobClusterEntryPoint will
>>>>>> >>>>> >> >> > >> > > > > fail.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> 3. What do you mean about
>>>>>> the package? Do users
>>>>>> >>>>> >> >> > >> need
>>>>>> >>>>> >> >> > >> > > to
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> compile
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> their
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>> jars
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> inlcuding flink-clients,
>>>>>> flink-optimizer,
>>>>>> >>>>> >> >> > >> flink-table
>>>>>> >>>>> >> >> > >> > > > > > codes?
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> Best,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> Yang
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> Peter Huang <
>>>>>> huangzhenqiu0...@gmail.com>
>>>>>> >>>>> >> >> > >> > > > 于2019年12月10日周二
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> 上午2:37写道:
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>> Dear All,
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>> Recently, the Flink
>>>>>> community starts to
>>>>>> >>>>> >> >> > >> improve the
>>>>>> >>>>> >> >> > >> > > > yarn
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> cluster
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> descriptor
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>> to make job jar and
>>>>>> config files configurable
>>>>>> >>>>> >> >> > >> from
>>>>>> >>>>> >> >> > >> > > > CLI.
>>>>>> >>>>> >> >> > >> > > > > It
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> improves
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> the
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>> flexibility of  Flink
>>>>>> deployment Yarn Per Job
>>>>>> >>>>> >> >> > >> Mode.
>>>>>> >>>>> >> >> > >> > > > For
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> platform
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> users
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>> who
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>> manage tens of hundreds
>>>>>> of streaming pipelines
>>>>>> >>>>> >> >> > >> for
>>>>>> >>>>> >> >> > >> > > the
>>>>>> >>>>> >> >> > >> > > > > > whole
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> org
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> or
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>> company, we found the job
>>>>>> graph generation in
>>>>>> >>>>> >> >> > >> > > > > client-side
>>>>>> >>>>> >> >> > >> > > > > > is
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>> another
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>> pinpoint. Thus, we want
>>>>>> to propose a
>>>>>> >>>>> >> >> > >> configurable
>>>>>> >>>>> >> >> > >> > > > > feature
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> for
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>> FlinkYarnSessionCli. The
>>>>>> feature can allow
>>>>>> >>>>> >> >> > >> users to
>>>>>> >>>>> >> >> > >> > > > > choose
>>>>>> >>>>> >> >> > >> > > > > > > >> >>> the
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> job
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>> graph
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>> generation in Flink
>>>>>> ClusterEntryPoint so that
>>>>>> >>>>> >> >> > >> the
>>>>>> >>>>> >> >> > >> > > job
>>>>>> >>>>> >> >> > >> > > > > jar
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> doesn't
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> need
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>> to
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>> be locally for the job
>>>>>> graph generation. The
>>>>>> >>>>> >> >> > >> > > proposal
>>>>>> >>>>> >> >> > >> > > > is
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> organized
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>> as a
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>> FLIP
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>
>>>>>> >>>>> >> >> > >> > > > > > > >>
>>>>>> >>>>> >> >> > >> > > > > > >
>>>>>> >>>>> >> >> > >> > > > > >
>>>>>> >>>>> >> >> > >> > > > >
>>>>>> >>>>> >> >> > >> > > >
>>>>>> >>>>> >> >> > >> > >
>>>>>> >>>>> >> >> > >>
>>>>>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-85+Delayed+JobGraph+Generation
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>> .
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>> Any questions and
>>>>>> suggestions are welcomed.
>>>>>> >>>>> >> >> > >> Thank
>>>>>> >>>>> >> >> > >> > > you
>>>>>> >>>>> >> >> > >> > > > in
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>> advance.
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>> Best Regards
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>> Peter Huang
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>>
>>>>>> >>>>> >> >> > >> > > > > > > >> >>
>>>>>> >>>>> >> >> > >> > > > > > > >>
>>>>>> >>>>> >> >> > >> > > > > > > >>
>>>>>> >>>>> >> >> > >> > > > > > >
>>>>>> >>>>> >> >> > >> > > > > >
>>>>>> >>>>> >> >> > >> > > > >
>>>>>> >>>>> >> >> > >> > > >
>>>>>> >>>>> >> >> > >> > >
>>>>>> >>>>> >> >> > >>
>>>>>> >>>>> >> >> > >
>>>>>> >>>>> >> >>
>>>>>>
>>>>>

Reply via email to