flink任务运行方式
flink任务提交方式有3种 session、per-job、application三种
flink任务运行底座也有三种,Standalone、yarn、k8s
原则上一个flink任务运行的方式由3*3=9种,但是有些是没法搭配的
yarn:包括yarn-session 、yarn-per-job 、yarn-application
standalone:包括 standalone-session standalone-application,不支持per-job
k8s: 包括 k8s-session、k8s-per-job 、k8s-application
!!!!但是 per-job被官网废弃了,用application替代per-job!!!!
flink历史服务器
flink任务失败或停止之后,flink webui 就看不到了,因此日志就只能到yarn上去看或者taskmanager所在的服务器去看,这样很不方便,因此flink提供了历史服务器,能够看已经退出的flink任务,而且flink不管是standalone还是yarn都支持。
1)创建存储目录
hadoop fs -mkdir -p /logs/flink-job
2)在 flink-config.yaml中添加如下配置
jobmanager.archive.fs.dir: hdfs://hadoop102:8020/logs/flink-job
historyserver.web.address: hadoop102
historyserver.web.port: 8082
historyserver.archive.fs.dir: hdfs://hadoop102:8020/logs/flink-job
historyserver.archive.fs.refresh-interval: 5000
3)启动历史服务器
bin/historyserver.sh start
4)停止历史服务器
bin/historyserver.sh stop
5)在浏览器地址栏输入:http://hadoop102:8082 查看已经停止的 job 的统计信息
flink任务并行度、slot(槽位)、taskmanger数量
假如完成同一件事需要8个人,那么这个任务的并行度就是8,再假如一个人完成这件事需要使用一个工具台,也就是需要8个slot,再假如一个一个车间(taskmanager)只有6个工具台,那这个任务就有问题(有两人闲着)。
并行度:一个任务的并行量
slot(槽位):能够提供完成任务的环境的数量
再接着假如,一个车间(taskmanager)能够提供10个slot(槽位),请问并行度多少为最佳?
答案:当然是10个,每个人都不闲着。
上述任务是发生在一个车间(taskmanager),如果有n个车间(taskmanager),效率又会有n倍(约)提升
那么问题来了,在standalone和k8s底座上起多少个taskmanager是我们手动确定的,在yarn底座上运行的时候,yarn的资源有很多,不可能都用来运行taskmanager,是怎么确定运行taskmanager数量的呢?
答:在1.5版本之后,taskmanager的数量是动态计算,根据slot和并行度进行计算
翻译::::::::::::::
更新返工作业部署的配置
Flink重做的集群和作业部署组件改善了与资源管理器的集成,实现了动态资源分配。这些更改的一个结果是,在向YARN和Mesos提交应用程序时,您不再需要指定容器的数量。Flink会根据应用程序的并行性自动确定容器的数量。
尽管部署逻辑已完全重新设计,但我们的目标是避免不必要地更改以前的行为以实现平稳过渡。尽管如此,您应该在conf/flink-conf.yaml中更新或了解一些选项。
尚未完全支持分配具有多个插槽的taskmanager。因此,我们建议使用单个插槽配置taskmanager,即设置taskmanager.numberOfTaskSlots: 1
如果发现新部署模式存在任何问题,则始终可以通过配置mode: legacy切换回pre-1.5行为。
请通过发布到邮件列表或打开JIRA问题,向Flink社区报告您注意到的任何问题或可能的改进。
注意: 我们计划在下一版本中删除传统模式。
TaskManager 数 = Job 的最大并行度 / 每个TaskManager 分配的任务槽数,结果向上取整