前言
flink应用提交到Yarn上目前支持两种模式:
(1)Yarn Session Model:Flink会向hadoop Yarn 申请足够多的资源,并在Yarn上启动长时间运行的Flink Session集群,用户可以通过RestAPI或Web页面将Flink任务提交到Flink Session集群上运行。
(2)Single Job Model:每个Flink任务单独向Yarn提交一个Application,并且每个任务都有自己的JobManager和Taskmanager,当任务结束后对应的组件也会随任务释放,这种方式类似于批处理,这里就不详细说明,目前批处理还是更倾向于用Spark
准备环境
hadoop集群:安装参考教程
flink-1.7.2-bin-hadoop26-scala_2.11.tgz 点击链接下载
tar -zxvf flink-1.7.2-bin-hadoop26-scala_2.11.tgz
cd flink-1.7.2
Yarn Session模式
Session 集群会一直运行在Hadoop Yarn之上,底层对应的其实是hadoop的一个Yarn Application应用。
当Yarn Session Cluster启动之后,用户就能够通过命令行或RestAPI等方式向Yarn Session集群中提交Flink任务,从而不需要再与Yarn进行交互,这样其实也是让Flink应用在相同的集群环境运行,从而屏蔽底层不同的运行环境。
启动Flink Yarn Session集群
启动命令:
./bin/yarn-session.sh -n 4 -jm 1024m -tm 1024m -s 4
上面命令中:
-n参数配置启动4个Yarn Container
-jm参数配置JobManager的JVM内存大小
-tm参数配置TaskManager的内存大小
-s表示集群中共启动4个slots来提供给应用以启动task实例
集群启动完之后,能够在Yarn的任务管理界面查看Flink Session集群的状况,并点击ApplicationMaster对应的URL,进入Flink Session Cluster集群中
注:在On Yarn的模式中,每次启动JobManager的地址和端口都不是固定的
提交任务到Session
当Flink Yarn Session集群构建好之后,就可以向Session集群中提交Flink任务
./flink run /app/flinkonyarn/examples/streaming/WordCount.jar
我提交了一个flink自带的example上去,如下图:
关闭Session集群
yarn application -kill application_1585656933406_0001
application_1585656933406_0001 提交到yarn 上面的session集群的进程号