单个yarn session模式
在yarn集群中,我们提交了一个yarn session任务,给这个session分配了一定大小的资源,这个session相当于是一个application,它是一个常驻任务,一直运行在yarn里面。如果有client需要提交任务运行flink程序,就会吧任务提交到yarn session里。
使用bin/yarn-session.sh 加一些参数启动单个session,参数使用bin/yarn-session.sh -help查看。
Optional
-n:指定TaskManager的数量;
-d: 以分离模式运行;
-id:指定yarn的任务ID;
-j:Flink jar文件的路径;
-jm:JobManager容器的内存(默认值:MB);
-nl:为YARN应用程序指定YARN节点标签;
-nm:在YARN上为应用程序设置自定义名称;
-q:显示可用的YARN资源(内存,内核);
-qu:指定YARN队列;
-s:指定TaskManager中slot的数量;
-st:以流模式启动Flink;
-tm:每个TaskManager容器的内存(默认值:MB);
-z:命名空间,用于为高可用性模式创建Zookeeper子路径;
example:
yarn-session.sh -n 2 -jm 1024 -tm 1024 -d -s 2
通过bin/flink run提交任务
run [OPTIONS] <jar-file> <arguments>
flink run ../examples/batch/WordCount.jar -input hdfs://localhost:9000/LICENSE -output hdfs://localhost:9000/wordcount-result.txt
多个yarn session模式
在yarn集群中,没有常驻的session,而是当client提交一个任务时,yarn中会创建一个yarn session,运行完毕后释放。 这种模式是实际生产中使用的模式。
直接提交任务:flink run --help
bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 ./examples/batch/WorldCount.jar -input ... -output ...
实际生产中建议使用这种方式。