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 > >> > > > > > > >> >>>>>>>>>>> > >> > > > > > > >> >>>>>>>>>> > >> > > > > > > >> >>>>>>>>> > >> > > > > > > >> >>>>>>>> > >> > > > > > > >> >>>>>>> > >> > > > > > > >> >>>>>> > >> > > > > > > >> >>>>> > >> > > > > > > >> >>>> > >> > > > > > > >> >>> > >> > > > > > > >> >> > >> > > > > > > >> > >> > > > > > > >> > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > >