Flink运行环境_Yarn

Flink运行环境_Yarn

独立部署(Standalone)模式是由Flink框架本身提供计算资源,无需其他框架提供资源。这种方式降低了和其他第三方资源框架的耦合性,独立性非常强。但是由于Flink主要是计算框架,而不是资源调度框架,所以本身资源调度并不是它的强项。

把Flink应用提交给Yarn的ResourceManager,Yarn的ResourceManager会申请容器从Yarn的NodeManager上面,Flink会创建JobManager和TaskManager在这些容器上面,Flink会根据运行在JobManager上的job的需要的slot数量动态分配TaskManager资源。

1. 解压缩文件

将flink-1.12.2.tgz文件上传到集群并解压缩,放置在指定位置。

2. 配置环境变量
export HADOOP_CLASSPATH=`hadoop classpath`
3. 修改配置文件

如果需要每一个taskManager有更多的slot可用,需要修改flink-conf.yaml文件

taskmanager.numberOfTaskSlots: 3
4. 启动hdfs和yarn集群
sbin/start-dfs.sh
sbin/start-yarn.sh
5. 提交作业
bin/flink run \
-m yarn-cluster \
-yqu flink-xiaoer \
-d \
-c com.yankee.day01.Flink03_WordCount_UnBounded_Java wordcount.jar
  • -m:yarn提交模式
  • -yqu:表示yarn的执行队列
  • -d:提交作业后关闭客户端
  • -c:作业的主类以及jar包

6. Yarn Web页面

7. Flink on Yarn的三种部署模式

Flink提供了yarn上运行的三种模式,分别为Session-Cluster,Application Mode和Per-Job-Cluster模式。更多详细的配置可以参考配置文档

1. Session-Cluster

Session-Cluster模式需要先启动Flink集群,向yarn申请资源,资源申请到以后,永远保持不变。以后提交任务都向这里提交,这个Flink集群会常驻在yarn集群中,除非手工停止。

向Flink集群提交Job的时候,如果资源被用完了,则新的Job不能正常提交。

缺点:如果提交的作业中有长时间执行的大作业,占用了该Flink集群的所有的资源,则后续无法继续提交新的Job。

Session-Cluster适合那些需要频繁提交的多个小Job,并且执行时间都不长。

bin/flink run \
-t yarn-session \
-Dyarn.application.id=application_xxx_yy \
-Dyarn.application.queue=flink-xiaoer \
-d \
-c com.yankee.day01.Flink03_WordCount_UnBounded_Java wordcount.jar
  • -t:yarn运行模式,可以指定yarn-session,也可以不指定,自动提交到yarn-session
  • -Dyarn.application.id:指定yarn-session,和-t同时出现
  • -Dyarn.application.queue:指定作业运行的yarn的队列
  • -d:提交作业后退出客户端
  • -c:指定作业运行的主类和jar包
2. Per-Job-Cluster

一个Job会对应一个Flink集群,每提交一个作业会根据自身的情况,都会单独向yarn申请资源,直到作业执行完成,一个作业的失败并不会影响下一个作业的正常提交和执行。独享Dispatcher和ResourceManager,按需接受资源申请,适合大规模长时间运行的作业。对于资源方面,任务独占集群,隔离性最好。

每次提交作业都会创建一个新的Flink集群,任务之间互相独立,互不影响,方便管理。在任务执行完成之后创建的集群也会消失。

bin/flink run \
-t yarn-per-job \
-Dyarn.application.queue=flink-xiaoer \
-d \
-c com.yankee.day01.Flink03_WordCount_UnBounded_Java wordcount.jar
bin/flink run \
-m yarn-cluster \
-yqu flink-xiaoer \
-d \
-c com.yankee.day01.Flink03_WordCount_UnBounded_Java wordcount.jar
3. Application Mode

Application Mode会在Yarn上启动集群,应用jar包的main函数将会在JobManager上执行,只要应用程序Application执行结束,Flink集群会马上被关闭,也可以手动停止集群。资源的隔离性对于集群来说,Application之间隔离,Application内共享。

bin/flink run-application \
-t yarn-application \
-Dyarn.application.queue=flink-xiaoer \
-d \
-c com.yankee.day01.Flink03_WordCount_UnBounded_Java wordcount.jar
4. Per-Job-Cluster和Application Mode的区别
Per-Job-Cluster模式的main方法在客户端执行,Application Mode中的main方法在JobManager中执行,也就是说Application Mode模式将main方法提交到了集群执行。通过在JobManager中执行程序的main方法,Application模式可以节省很多提交应用所需的资源。同时就对于资源的隔离性来说,Per-Job-Cluster对资源的隔离性最好,Appcalition次之。
8. Yarn模式高可用

Yarn模式的高可用和Standalone的高可用原理不一样。Standalone模式中,同时启动多个JobManager,一个为leader,其他的是standby,当leader挂了,其他的一个才会成为leader。yarn的高可用是同时只启动一个JobManager,当这个JobManager挂了之后,yarn会再次启动一个,其实是利用yarn的重试次数来实现的高可用。

1. 修改yarn-site.xml配置文件
<property>
    <name>yarn.resourcemanager.am.max-attempts</name>
    <value>4</value>
</property>
2. 修改flink-conf.yaml配置文件
# 这个配置要小于等于yarn-site中的配置
yarn.application-attempts: 3

high-availability: zookeeper
high-availability.storageDir: hdfs://supercluster/flink/yarn/ha/
high-availability.zookeeper.quorum: hadoop01:2181,hadoop02:2181,hadoop03:2181
high-availability.zookeeper.path.root: /flink-yarn
high-availability.cluster-id: /flink-yanr-ha
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yanko24

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值