Pre-Job 模式介绍
每次应用 flink run 运行工作的时候,Yarn 都会从新申请 Flink 集群资源(JobManager 和 TaskManager),工作执行实现之后,所申请的 Flink 集群资源就会开释,所申请的 Yarn 资源是独享的,不与其余工作分享资源。
运行命令
./bin/flink run -m yarn-cluster -yn 3 -ys 12
-p 4 -yjm 1024m -ytm 4096m ./examples/batch/WordCount.jar
参数解读:
-p 并行度
-yn Task Managers 数量
-ys 每个 TaskManager 的 Slot 数量
-yjm 每个 JobManager 内存 (default: MB)
-ytm 每个 TaskManager 内存 (default: MB)
Session 模式介绍
须要先在 yarn 上先调配一个 flink 集群,后续所有工作都共享这个 Flink 集群上的资源,该 Flink 不会因为工作的完结而终止。
先向 Yarn 申请 Flink 所需资源
flink 客户端目录下,执行如下命令:
bin/yarn-session.sh -jm 1024m -tm 4096m -n 4 -s 8 -na hdq-yarn
参数含意:
-jm jobmanager 的内存大小
-tm taskManager 的内存大小
-n taskManager 个个数
-s 每个 taskManager 中 slot 的个数
执行实现之后会输入如下日志:
Flink JobManager is now running on 172-16-122-56:9101 with leader id 00000000-0000-0000-0000-000000000000.
JobManager Web Interface: http://172-16-122-56:9101
运行实现后,Yarn 的集群上会有一个常驻工作。
此时,大数据培训 Flink 集群的资源都曾经申请结束。
这里须要记住 JobManager 的 ip 和端口:172-16-122-56:9101,等会运行 Flink 工作的时候须要批改这里的配置。
运行 Flink 程序
运行 Flink 工作之前须要批改 Flink 客户端下的配置文件:conf/flink-conf.yaml
别离批改 jobmanager.rpc.address 和 rest.port,对应第二步中的 172-16-122-56 和 9101。
jobmanager.rpc.address: 172-16-122-56
rest.port: 9101
批改实现之后即可运行 Flink 工作:
/flink/bin/flink run
-C file:/plugins/oraclereader/flinkx-oracle-reader.jar
-C file:/plugins/mysqlwriter/flinkx-mysql-writer.jar
-C file:/plugins/common/flinkx-rdb.jar
-C file:/plugins/common/flinkx-rdb-2.0.0.jar
-C file:/plugins/common/flink-table_2.11-1.7.2.jar /plugins/flinkx.jar
-job fx_2065.json
-pluginRoot /plugins
-jobid 2065
此时,flink 会主动将工作提交到咱们申请的 Flink 集群上进行运行。
注意事项
如果程序依赖第三方 jar,通过 - C 传参的形式进行依赖,那么整个 Yarn 集群都要有 jar 文件。
其中 - C 所指定的所有 jar 文件,在整个 Yarn 集群的机器上都必须存在,否则运行会失败。不反对 hdfs 共享存储,反对 ftp 等其余协定。
总结
Pre-Job 模式: 运行时须要会主动申请 Yarn 资源,申请实现后能力运行工作,并且所申请的资源是该工作独享的,运行实现后资源会主动开释;适宜资源耗费比拟大的状况。
Session 模式: 运行之前须要在 Yarn 上先申请好资源能力提交工作,所有工作会共享资源,适宜小工作运行。