flink_book/source_code/per-job启动.md

1.5 KiB
Raw Permalink Blame History

简介

该模式下集群管理框架例如YARN或Kubernetes会为每个提交的作业启动一个单独Flink集群该集群仅对该作业可用。 作业运行完成,集群将被关闭,所有用到的资源(例如文件)也将被清理。此模式提供更好的资源隔离。一个作业故障不会 影响其他作业的运行。此外由于每个作业都有自己的JobManager负载被分散到多个实体上。考虑到Session模式的资源隔 离问题对于需要长时间运行的作业通常选择Per-Job模式这些作业愿意承受增加启动延迟以提升作业的恢复能力。

Per-Job模式为每个提交的作业启动一个集群以提供更好的资源隔离保证。在这种情况下集群的生命周期与作业的生命周期绑定。

启动分析

启动类:YarnJobClusterEntrypoint.java

加载配置文件以及命令行参数解析

在per-job启动的时候需要先加载配置文件。

ApplicationConstants.Environment.PWD中加载flink-conf.yml中的配置项。

_KEYTAB_PRINCIPAL

从系统变量里面获取当前参数用于kerberos认证的keytab文件。

NM_HOST

从系统变量里面获取当前参数为ApplicationMaster的主机名。当前参数不能为空。将当前参数的值设置到参数 jobmanager.rpc.addressrest.addressrest.bind-address里面。

web.port

启动YarnJobClusterEntrypoint

jobMaster里面启动TaskManager

private void startJobExecution() throws Exception {

}