flink on yarn之per-job方式部署超时的一种解决方法

网上很多写的很乱,看不明白,故此记录。

前提:
flink版本:1.10.0
zk集群
hadoop集群

一、flink-session方式

  • 在yarn中启动一个长久运行的flink集群,提交任务时都提交到这个flink-session集群中运行,适合小任务。
  • 做HA:保证YarnSessionClusterEntrypoint的高可用,需要在yarn里配置yarn.resourcemanager.am.max-
    attempts,在flink-conf.yaml中添加high-availiability的配置
  • 提交任务命令:
      先启动yarn-session,
      然后直接flink run ..

二、per-job方式

  • 每次提交任务都单独启动一个flink集群,适合长久运行的大任务。
  • HA:per-job的高可用是复用的 standalone HA 的,所以需要配置flink的standalone HA和yarn.application-attempts: 3
  • 提交任务命令:
    flink run -m yarn-cluster -yqu root.myjob1 ..

三、per-job方式在yarn上一直是accept状态,flink报错:deployment took more than 60 secoeds

flink还不完善,也不想诟病了
分析:我这里是,由于yarn调度器实际上是一个队列,在yarn-cluster选项中有-yqu这个参数,表示指定一个队列,如果你已经提交了一个per-job任务,再次提交必须指定一个新的队列名称,否则他会一直等待之前的任务结束后,新的job才能running,所以一直是accept。

解决:flink run -m yarn-cluster -yqu root.myjob1 ..

另:flink1.10已经不必需要-yn了,它会自动去检测。

你可能感兴趣的:(flink on yarn之per-job方式部署超时的一种解决方法)