admin 发表于 2021-3-31 14:31:56

Flink启动流程和配置

问题导读

1.FlinkOnYarn启动包含哪些流程?
2.运行模式有哪两种?
3.应用启动参数有哪些?


FlinkOnYarn启动流程

Flink通过YARN_CONF_DIR或HADOOP_CONF_DIR或HADOOP_HOME($HADOOP_HOME/etc/conf)获取yarn的配置,创建与yarn的连接.分离模式下(生产模式),Flink与Yarn建立通信后,其后的交互过程如下图所示:



启动过程基本与SparkContext启动一致:

request resource From RM =>upload
jars and conf to HDFS => start
ApplicationMaster in Container =>start
JobManager (Driver) in Container =>start
TaskManager(Executor) in Contaier =>
distribute jars and conf to TaskManager => run Main

运行模式
Flink有两种运行模式:

分离模式:DetachedMode,类比Spark的Cluster模式.应用被提交到Yarn后,应用整体运行在集群内,与本地提交的机器分离(不再与本地通信).生产环境采用.

客户端模式:CliengMode,类比SparkClient模式,应用被提交到Yarn后,JobManager在本地,TaskManager在集群,JobManager与TaskManager保持通信并打印日志,本地终止JobManager后,应用即被终止.该模式通常用于测试.

提交方式
Flink任务的提交方式也有两种:
即使没有任务,FinkSession也始终占有配置的资源.
可以向Session提交多个任务,他们共享Session内的资源,因此不可避免的引起资源竞争,彼此影响,所以该模式不适合生产环境使用,适合进行功能测试.
Session内部任务的状态不影响Session本身的状态,Flink会维护Session的高可用,当Session故障时会重启Session,同时根据StateBacked中重启Session内部的任务.
用SingleApp模式测试是比较麻烦的,因为相比较Spark,FlinkApp的启动和资源准备时间更长.

SingleAppMode:
直接启动一个独立应用运行任务,任务独占整个应用的资源.
如果App失败,Flink会重启应用(实际上是由Yarn重启),然后根据StateBackend存储的状态数据重启应用运行的任务.
如果任务最终失败(恢复机制没能恢复任务)则应用也失败,释放应用占用的资源.这种模式更适合生产环境.


应用启动参数
这里只说明SingleApp On Yarn 的参数,即${FLINK_HOME}/bin/flink run的参数.




应用依赖配置
https://zhuanlan.zhihu.com/p/93374622

https://ci.apache.org/projects/f ... g_classloading.html

最新经典文章,欢迎关注公众号http://www.aboutyun.com/data/attachment/forum/201903/18/215536lzpn7n3u7m7u90vm.jpg
页: [1]
查看完整版本: Flink启动流程和配置