美文网首页Flink
Flink(1.13) 部署 Yarn模式

Flink(1.13) 部署 Yarn模式

作者: 万事万物 | 来源:发表于2021-08-18 20:09 被阅读0次

介绍

Flink提供了yarn上运行的3模式,分别为Application Mode, Session-ClusterPer-Job-Cluster模式。
Yarn 模式会动态申请资源

如果面试官问你一个问题,你的spark集群有多大,你如何回答?

正确回答的方式:基于yarn模式,没提交一个任务都是由yarn帮我们现启一个集群,一个独享的集群,理论上yarn有多大,spark都能用。

Per-Job-Cluster

独享集群,提交之后由yarn现启集群。

2021-08-07 13:03:26,065 INFO  org.apache.flink.yarn.YarnClusterDescriptor                  [] - Deploying cluster, current state ACCEPTED
  • 启动

bin/flink run -t yarn-per-job -c main方法的类路径 jar包地址

  • 通过 yarn 进行访问
http://hadoop103:8088/proxy/application_1628295321246_0001/#/task-manager/container_1628295321246_0001_01_000002/stdout
test> (java,1)
test> (python,1)
test> (java,2)
test> (hello,1)
test> (java,3)
test> (www,1)

Session-Cluster

先启动一个集群,再将任务提交到上面

Per-Job-Cluster 与 Session-Cluster 区别

  • Per-Job-Cluster :
    1.多少个job就有多少个集群
  • Session-Cluster :
    1.会首先在flink上启一个集群,所有的job都交给一个集群中。
    2.各个应用之间共享资源。
    3.适用于小任务量使用,大任务不太适用。
  • 工作中推荐使用哪一种?
    官方推挤,大家推荐 使用Per-Job-Cluster的方式。
    Session-Cluster 是资源共享,job太多,可能会出现一些问题,但是Session-Cluster也并非一无是处,若job类型一致就可以放到一个集群中。

  • 启动

bin/yarn-session.sh -d

-d 以后台的方式启动

  • 启动日志
luster has been started in detached mode. In order to stop Flink gracefully, use the following command:
$ echo "stop" | ./bin/yarn-session.sh -id application_1628336315656_0001
If this should not be possible, then you can also kill Flink via YARN's web interface or via:
$ yarn application -kill application_1628336315656_0001
Note that killing Flink might not clean up all job artifacts and temporary files.
  • 日志说明
以 后台的方式启动:luster has been started in detached mode.

为了优雅地停止Flink,请使用以下命令: $ echo "stop" | ./bin/yarn-session.sh -id application_1628336315656_0001

如果这是不可能的,那么你也可以通过YARN的web界面或通过以下方式杀死Flink:
$ yarn application -kill application_1628336315656_0001

注意,杀死Flink可能不会清除所有作业工件和临时文件。
  • yarn


    image.png

Application

应用模式,1.11 之后次才有的,类比 Per-Job-Cluster,也是独享集群。

Per-Job-Cluster 与 Application 区别

就在于解析代码的位置,

  • Per-Job-Cluster:
    解析main方法是在提交节点的本地。
  • Application :
    解析main方法是在Master

高可用配置

  • 更改yarn配置
    在yarn-site.xml中配置
    <!-- 支持 flink yarn高可用 -->
    <property>
        <name>yarn.resourcemanager.am.max-attempts</name>
        <!-- 最大重试次数, 默认值为2 -->
        <value>4</value>
        <description>
                The maximum number of application master execution attempts.
        </description>
    </property>
  • 更改flink配置
    在flink-conf.yaml中配置
yarn.application-attempts: 3
high-availability: zookeeper
high-availability.storageDir: hdfs://hadoop162:8020/flink/yarn/ha
high-availability.zookeeper.quorum: hadoop162:2181,hadoop163:2181,hadoop164:2181
high-availability.zookeeper.path.root: /flink-yarn

如果 yarn的application,如果开启了高可用,所有的jobid都会变成0000000000000000000;官方的解释,application模式不允许记录多个状态,这样jobid就不好给了。

yarn的session集群,如果开启了高可用,-D应用id参数=appId,指定提交到session集群,可能会有问题。解决方式 :不写 -t yarn-session

Yarn 高可用和Standalone 高可用区别

  • Standalone 高可用
    同时启动多个JobManger,若执行任务的JobManger挂了,其他JobManager马上补上。

  • Yarn 高可用
    JobManager只有一个,但是配置了重试次数,挂了之后再重启(重启一个新的ApplicationManager),利用了ApplicationMaster的重启机制。若在一定时间范围内重试都启动不了,那么就真的挂了。如30秒内重试3次,若重启成功,则重试次数清零。

相关文章

网友评论

    本文标题:Flink(1.13) 部署 Yarn模式

    本文链接:https://www.haomeiwen.com/subject/ivbivltx.html