flink_book/source_code/per-job启动.md

50 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 简介
该模式下集群管理框架例如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.address`、`rest.address`、`rest.bind-address`里面。
### `web.port`
## 启动YarnJobClusterEntrypoint
jobMaster里面启动TaskManager
```java
private void startJobExecution() throws Exception {
}
```