diff --git a/source_code/README.md b/source_code/README.md index 3a54217..f0beffa 100644 --- a/source_code/README.md +++ b/source_code/README.md @@ -1,3 +1,7 @@ -- [作业提交](./作业提交源码分析.md) +- [作业提交脚本分析](./作业提交源码分析.md) +- [per-job模式启动分析](./per-job启动.md) +- [application启动分析](./application启动.md) +- [yarn-session启动分析](./yarn-session启动.md) + diff --git a/source_code/application启动.md b/source_code/application启动.md new file mode 100644 index 0000000..e69de29 diff --git a/source_code/per-job启动.md b/source_code/per-job启动.md new file mode 100644 index 0000000..1760f8a --- /dev/null +++ b/source_code/per-job启动.md @@ -0,0 +1,49 @@ + +# 简介 + +该模式下,集群管理框架(例如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 { + +} +``` + + + diff --git a/source_code/yarn-session启动.md b/source_code/yarn-session启动.md new file mode 100644 index 0000000..e69de29 diff --git a/source_code/作业提交源码分析.md b/source_code/作业提交源码分析.md index 885caed..0f4ac03 100644 --- a/source_code/作业提交源码分析.md +++ b/source_code/作业提交源码分析.md @@ -76,4 +76,3 @@ - `-h`、`--help`: 帮助信息。 - `-v`、`--version`: 显示版本信息。 -