Flink提交作业的两种方式

来源:互联网 发布:大学生网络党校考试 编辑:程序博客网 时间:2024/06/06 17:27

抛砖引玉:

在Spark集群提交作业时候可以使用--deploy参数指定client或者cluster方式提交作业到集群,前者是客户端模式,后者是集群模式,两者主要区别就是Driver的运行位置,在客户端模式下,Driver运行在提交作业的客户端机器上负责与集群进行资源申请调度等工作。而集群模式下Driver运行在集群中的某一个节点上负责资源申请以及调度。

一般的,客户端模式适合程序的调试,这种模式下,程序中的print等类似控制台打印方法可以在提交作业的控制台打印输出,后者由于Driver运行在集群中的某一节点上,所以不会将打印信息在提交的客户端上进行打印。spark默认提交方式是客户端方式


Flink的提交作业方式:

flink同样支持两种提交方式,默认不指定就是客户端方式。如果需要使用集群方式提交的话。可以在提交作业的命令行中指定-d或者--detached 进行进群模式提交。

        -d,--detached                                  If present, runs the job in  detached mode(分离模式)


客户端提交方式:$FLINK_HOME/bin/flink run   -c com.daxin.batch.App flinkwordcount.jar ,客户端会多出来一个CliFrontend进程,就是驱动进程。

集群模式提交:$FLINK_HOME/bin/flink run -d  -c com.daxin.batch.App flinkwordcount.jar 程序提交完毕退出客户端,不在打印作业进度等信息!


更多细节参考flink的帮助文档,$FLINK_HOME/bin/flink  --help


两种提交作业方式的实现原理:

通过翻阅Flink的源码不难发现,关于所谓的客户端提交其实就是同步提交,作业提交之后一直跟踪作业的执行进度以及控制台输出信息打印。而后台提交其实就是异步提交,将作业提交之后返回一个Future之后就不在跟踪作业了!


原创粉丝点击