一、下载 flink包
官网下载flink-1.8.1-bin-scala_2.11.tgz,然后解压
下载地址 https://flink.apache.org/downloads.html 或 https://www.apache.org/dyn/closer.lua/flink/

二、下载 hadoop依赖包
官网下载flink-shaded-hadoop-2-uber-2.8.3-7.0.jar
拷贝到${flink_home}/lib/目录下
下载地址 https://flink.apache.org/downloads.html

三、提交任务到yarn
方式一:独立的Job
cd ${flink_home}/bin
flink run -m yarn-cluster -yn 1 -p 2 -yjm 1024 -ytm 1024 -ynm FlinkOnYarnSession -d -c com.gjm.Test /home/test.jar
说明:
- -c 类名
- /home/test.jar 包名
- -yn TaskManager的数量,已作废使用了
- -p 并发数,也就是使用的槽数
- -yjm JobManager的内存大小
- -ytm 每个TaskManager的内存大小
- -ynm Yarn Application显示的任务名称

方法二:共用的yarn-session
(1)启动集群
cd ${flink_home}/bin
./start-cluster.sh
(2)启动yarn-session
./yarn-session.sh -n 2 -jm 1024 -tm 2048 -s 2 -nm FlinkOnYarnSession -d
说明:
- -n TaskManager的数量
- -jm JobManager的内存大小
- -tm 每个TaskManager的内存大小
- -s 每个TM的槽数
(3)提交任务
flink run -p 2 -c com.gjm.Test /home/test.jar
说明:
- -p 并发数,也就是使用的槽数
四、停止任务
方式一:推荐
(1)获取ApplicationId
yarn application -list
(2)获取JobId
flink list -yid ${ApplicationId}
(3)停止任务
flink cancel ${JobId} -yid ${ApplicationId}
方式二:强制停止
(1)获取ApplicationId
yarn application -list
(2)强制停止
yarn application -kill ${ApplicationId}
五、总结
- 两种提交方式的区别
- 共用的yarn-session
(1)在yarn中初始化一个flink集群,开辟指定的资源,以后提交任务都向这里提交。这个flink集群会常驻在yarn集群中,除非手工停止。经实验发现,实际任务使用的资源,可以超过yarn-session申请开辟的内存资源,也就是说yarn-session申请的参数参数,似乎与后续任务实际申请的资源没什么关系??
(2)共享Dispatcher和Resource Manager,这里的RM是Flink的RM,不是Yarn的RM。
(3)共享资源,即TaskExecutor。
(4)适合规模小,执行时间短的作业。
- 独立的Job
(1)每次提交都会创建一个新的flink集群,任务之间互相独立,互不影响,方便管理。任务执行完成之后创建的集群也会消失。
(2)独享Dispatcher和Resource Manager,这里的RM是Flink的RM,不是Yarn的RM。
(3)TaskExecutor 按需要申请资源。
(4)适合执行时间较长的大作业。
【一起学习】
本文介绍了如何在YARN上部署Apache Flink集群,并详细解释了两种不同的部署方式:独立的Job与共用的yarn-session。每种方式都有其适用场景,帮助读者更好地理解并选择合适的部署方案。
1870





