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上先申请好资源能力提交工作,所有工作会共享资源,适宜小工作运行。