文章目录
为什么使用Flink On Yarn
- Yarn的资源可以按需使用,提高集群的资源利用率
- Yarn的任务有优先级,根据优先级运行作业
- 基于Yarn的调度系统,能自动化处理每个角色的Failover(容错)
- JobManager进程和TaskManager进程都由Yarn NodeManager监控
- 如果JobManager进程异常退出,则Yarn ResourceManager会重新调度JobManager到其他机器
- 如果TaskManager进程异常退出, JobManager会收到消息并重新向Yarn ResourceManager申请资源,重新启动TaskManager
Flink On Yarn提交任务执行流程
Flink On Yarn的两种模式
Session模式
在Yarn集群中启动了一个Flink集群,并重复使用该集群
Per-Job(Job分离模式)
针对每个Flink任务都去启动一个独立的Flink集群,用完就关,不能重复使用
Flink On Yarn环境设置
准备环境
- 关闭yarn的内存检查
vim /export/server/hadoop/etc/hadoop/yarn-site.xml
<!-- 关闭yarn内存检查 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
- 分发
scp -r /export/server/hadoop/etc/hadoop/yarn-site.xml node2:/export/server/hadoop/etc/hadoop/yarn-site.xml
scp -r /export/server/hadoop/etc/hadoop/yarn-site.xml node3:/export/server/hadoop/etc/hadoop/yarn-site.xml
- 重启yarn
/export/server/hadoop/sbin/stop-yarn.sh
/export/server/hadoop/sbin/start-yarn.sh
测试
Session会话模式
在Yarn上启动一个Flink集群,并重复使用该集群,后续提交的任务都是给该集群,资源会被一直占用,除非手动关闭该集群----适用于大量的小任务
- 在yarn上启动一个Flink集群/会话,node1上执行以下命令
/export/server/flink/bin/yarn-session.sh \
-n 2 \
-tm 800 \
-s 1 \
-d
说明:
申请2个CPU、1600M内存
-n 表示申请2个容器,这里指的就是多少个taskmanager
-tm 表示每个TaskManager的内存大小
-s 表示每个TaskManager的slots数量
-d 表示以后台程序方式运行
- 提交代码
/export/server/flink/bin/flink run /export/server/flink/examples/batch/WordCount.jar \
--input hdfs://node1.itcast.cn:8020/wordcount/input
- 查看Yarn_UI
- 查看FlinkUI
Job分离模式
- 直接提交Job
/export/server/flink/bin/flink run \
-m yarn-cluster \
-yjm 1024 \
-ytm 1024 \
/export/server/flink/examples/batch/WordCount.jar
说明:
-m jobmanager的地址
-yjm 1024 指定jobmanager的内存信息
-ytm 1024 指定taskmanager的内存信息