You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by yang zhang <zh...@icloud.com.INVALID> on 2020/08/25 05:49:57 UTC

flink on yarn 提交作业application模式的2个疑问

1.flink on yarn 的application模式怎么提交多个job组成应用程序呢?在官网和论坛的文章中这里没有详细展开。

与per-job 模式相比,Application 模式允许提交由多个Job组成的应用程序。Job执行的顺序不受部署模式的影响,但受启动Job的调用的影响。使用阻塞的 <code>execute()</code>方法,将是一个顺序执行的效果,结果就是"下一个"Job的执行被推迟到“该”Job完成为止。相反,一旦提交当前作业,非阻塞<code>executeAsync()</code>方法将立即继续提交“下一个”Job。

怎么做到呢?

2.而且提交job时,没有指定运行main方法的类,那么在jobmanager是如何找到对应的执行main呢?
官网比如这个指令:
./bin/flink run-application -t yarn-application \ -Djobmanager.memory.process.size=2048m \ -Dtaskmanager.memory.process.size=4096m \ ./MyApplication.jar



发自我的iPhone

Re: flink on yarn 提交作业application模式的2个疑问

Posted by yang zhang <zh...@icloud.com.INVALID>.
好的,谢谢大佬!

发自我的iPhone

> 在 2020年8月26日,11:48,Yang Wang <da...@gmail.com> 写道:
> 
> 是的,Application模式是可以这么使用的
> 
> 但需要注意的是:
> * 非HA模式下,如果JobManager failover了,会重新开始执行所有job。
> * HA模式,还不能支持多个job
> 
> 
> Best,
> Yang
> 
> yang zhang <zh...@icloud.com.invalid> 于2020年8月26日周三 上午11:17写道:
> 
>> 感谢大佬回复,了解了。
>> 那是不是相当于一个main方法
>> 先写A逻辑,然后execute(),
>> 后面写B逻辑,再execute(),
>> 假如B逻辑必须等待A逻辑执行完毕才执行。
>> 用这种方式提交直接就解决了这个场景,也不用第三方通知实现了。
>> 
>> 
>> 
>> 
>> 发自我的iPhone
>> 
>>>> 在 2020年8月26日,10:44,Yang Wang <da...@gmail.com> 写道:
>>> 
>>> 1. 目前Flink是允许在一个user jar的main里面,运行多次execute的,包括executeAsyc。
>>> 每执行一次execute,就是提交了一个任务。所以你是可以这样来实现一个Application里面
>>> 运行多个job。但这里需要注意的是,目前只有非HA的Application模式可以支持多job
>>> HA模式还不行,具体原因主要是恢复起来会很麻烦,还没有实现。
>>> 
>>> 2. Flink会检查用户提交的user jar,然后从其中提取出来。具体可以看一下PackagedProgram#loadMainClass
>>> 的实现。
>>> 
>>> 
>>> Best,
>>> Yang
>>> 
>>> yang zhang <zh...@icloud.com.invalid> 于2020年8月25日周二 下午1:50写道:
>>> 
>>>> 1.flink on yarn 的application模式怎么提交多个job组成应用程序呢?在官网和论坛的文章中这里没有详细展开。
>>>> 
>>>> 与per-job 模式相比,Application
>>>> 模式允许提交由多个Job组成的应用程序。Job执行的顺序不受部署模式的影响,但受启动Job的调用的影响。使用阻塞的
>>>> 
>> <code>execute()</code>方法,将是一个顺序执行的效果,结果就是"下一个"Job的执行被推迟到“该”Job完成为止。相反,一旦提交当前作业,非阻塞<code>executeAsync()</code>方法将立即继续提交“下一个”Job。
>>>> 
>>>> 怎么做到呢?
>>>> 
>>>> 2.而且提交job时,没有指定运行main方法的类,那么在jobmanager是如何找到对应的执行main呢?
>>>> 官网比如这个指令:
>>>> ./bin/flink run-application -t yarn-application \
>>>> -Djobmanager.memory.process.size=2048m \
>>>> -Dtaskmanager.memory.process.size=4096m \ ./MyApplication.jar
>>>> 
>>>> 
>>>> 
>>>> 发自我的iPhone
>> 

Re: flink on yarn 提交作业application模式的2个疑问

Posted by Yang Wang <da...@gmail.com>.
是的,Application模式是可以这么使用的

但需要注意的是:
* 非HA模式下,如果JobManager failover了,会重新开始执行所有job。
* HA模式,还不能支持多个job


Best,
Yang

yang zhang <zh...@icloud.com.invalid> 于2020年8月26日周三 上午11:17写道:

> 感谢大佬回复,了解了。
> 那是不是相当于一个main方法
> 先写A逻辑,然后execute(),
> 后面写B逻辑,再execute(),
> 假如B逻辑必须等待A逻辑执行完毕才执行。
> 用这种方式提交直接就解决了这个场景,也不用第三方通知实现了。
>
>
>
>
> 发自我的iPhone
>
> > 在 2020年8月26日,10:44,Yang Wang <da...@gmail.com> 写道:
> >
> > 1. 目前Flink是允许在一个user jar的main里面,运行多次execute的,包括executeAsyc。
> > 每执行一次execute,就是提交了一个任务。所以你是可以这样来实现一个Application里面
> > 运行多个job。但这里需要注意的是,目前只有非HA的Application模式可以支持多job
> > HA模式还不行,具体原因主要是恢复起来会很麻烦,还没有实现。
> >
> > 2. Flink会检查用户提交的user jar,然后从其中提取出来。具体可以看一下PackagedProgram#loadMainClass
> > 的实现。
> >
> >
> > Best,
> > Yang
> >
> > yang zhang <zh...@icloud.com.invalid> 于2020年8月25日周二 下午1:50写道:
> >
> >> 1.flink on yarn 的application模式怎么提交多个job组成应用程序呢?在官网和论坛的文章中这里没有详细展开。
> >>
> >> 与per-job 模式相比,Application
> >> 模式允许提交由多个Job组成的应用程序。Job执行的顺序不受部署模式的影响,但受启动Job的调用的影响。使用阻塞的
> >>
> <code>execute()</code>方法,将是一个顺序执行的效果,结果就是"下一个"Job的执行被推迟到“该”Job完成为止。相反,一旦提交当前作业,非阻塞<code>executeAsync()</code>方法将立即继续提交“下一个”Job。
> >>
> >> 怎么做到呢?
> >>
> >> 2.而且提交job时,没有指定运行main方法的类,那么在jobmanager是如何找到对应的执行main呢?
> >> 官网比如这个指令:
> >> ./bin/flink run-application -t yarn-application \
> >> -Djobmanager.memory.process.size=2048m \
> >> -Dtaskmanager.memory.process.size=4096m \ ./MyApplication.jar
> >>
> >>
> >>
> >> 发自我的iPhone
>

Re: flink on yarn 提交作业application模式的2个疑问

Posted by yang zhang <zh...@icloud.com.INVALID>.
感谢大佬回复,了解了。
那是不是相当于一个main方法
先写A逻辑,然后execute(),
后面写B逻辑,再execute(),
假如B逻辑必须等待A逻辑执行完毕才执行。
用这种方式提交直接就解决了这个场景,也不用第三方通知实现了。




发自我的iPhone

> 在 2020年8月26日,10:44,Yang Wang <da...@gmail.com> 写道:
> 
> 1. 目前Flink是允许在一个user jar的main里面,运行多次execute的,包括executeAsyc。
> 每执行一次execute,就是提交了一个任务。所以你是可以这样来实现一个Application里面
> 运行多个job。但这里需要注意的是,目前只有非HA的Application模式可以支持多job
> HA模式还不行,具体原因主要是恢复起来会很麻烦,还没有实现。
> 
> 2. Flink会检查用户提交的user jar,然后从其中提取出来。具体可以看一下PackagedProgram#loadMainClass
> 的实现。
> 
> 
> Best,
> Yang
> 
> yang zhang <zh...@icloud.com.invalid> 于2020年8月25日周二 下午1:50写道:
> 
>> 1.flink on yarn 的application模式怎么提交多个job组成应用程序呢?在官网和论坛的文章中这里没有详细展开。
>> 
>> 与per-job 模式相比,Application
>> 模式允许提交由多个Job组成的应用程序。Job执行的顺序不受部署模式的影响,但受启动Job的调用的影响。使用阻塞的
>> <code>execute()</code>方法,将是一个顺序执行的效果,结果就是"下一个"Job的执行被推迟到“该”Job完成为止。相反,一旦提交当前作业,非阻塞<code>executeAsync()</code>方法将立即继续提交“下一个”Job。
>> 
>> 怎么做到呢?
>> 
>> 2.而且提交job时,没有指定运行main方法的类,那么在jobmanager是如何找到对应的执行main呢?
>> 官网比如这个指令:
>> ./bin/flink run-application -t yarn-application \
>> -Djobmanager.memory.process.size=2048m \
>> -Dtaskmanager.memory.process.size=4096m \ ./MyApplication.jar
>> 
>> 
>> 
>> 发自我的iPhone

Re: flink on yarn 提交作业application模式的2个疑问

Posted by Yang Wang <da...@gmail.com>.
1. 目前Flink是允许在一个user jar的main里面,运行多次execute的,包括executeAsyc。
每执行一次execute,就是提交了一个任务。所以你是可以这样来实现一个Application里面
运行多个job。但这里需要注意的是,目前只有非HA的Application模式可以支持多job
HA模式还不行,具体原因主要是恢复起来会很麻烦,还没有实现。

2. Flink会检查用户提交的user jar,然后从其中提取出来。具体可以看一下PackagedProgram#loadMainClass
的实现。


Best,
Yang

yang zhang <zh...@icloud.com.invalid> 于2020年8月25日周二 下午1:50写道:

> 1.flink on yarn 的application模式怎么提交多个job组成应用程序呢?在官网和论坛的文章中这里没有详细展开。
>
> 与per-job 模式相比,Application
> 模式允许提交由多个Job组成的应用程序。Job执行的顺序不受部署模式的影响,但受启动Job的调用的影响。使用阻塞的
> <code>execute()</code>方法,将是一个顺序执行的效果,结果就是"下一个"Job的执行被推迟到“该”Job完成为止。相反,一旦提交当前作业,非阻塞<code>executeAsync()</code>方法将立即继续提交“下一个”Job。
>
> 怎么做到呢?
>
> 2.而且提交job时,没有指定运行main方法的类,那么在jobmanager是如何找到对应的执行main呢?
> 官网比如这个指令:
> ./bin/flink run-application -t yarn-application \
> -Djobmanager.memory.process.size=2048m \
> -Dtaskmanager.memory.process.size=4096m \ ./MyApplication.jar
>
>
>
> 发自我的iPhone