Flink On Yarn

1,197 阅读1分钟

单个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 ...

实际生产中建议使用这种方式。