网上很多写的很乱,看不明白,故此记录。
前提:
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了,它会自动去检测。
网友评论