运行底座
flink 不能独立运行(测试环境除外),需要借助flink运行底座,flink底座的运行模式有三种
-
standalone运行底座
一般是测试使用
-
k8s运行底座
逐渐开始流行,见另外一篇文章。
Flink on Kubernetes (flink-operator) 部署Flink_flink kubernetes operator 部署-CSDN博客
-
yarn运行底座
flink on yarn,是现在较多使用的方式。本质上就是去yarn集群上申请容器,来运行flink的 jobmanager+taskmanager 集群
flink的job,是flink集群内部的概念,它对yarn是不可见的
有了运行模式后,flink就可以在运行底座上进行任务提交了,又有三种提交模式
下方介绍的提交方式是基于yarn的运行底座的
提交方式(基于yarn的)
yarn-session(会话模式)
基于yarn上的session模式,进行提交flinkjob的方式,相当于yarn上的运行的standalone session
优点:相较于standalone模式,比本地好的一点在于 需要多少taskmanager和slot就申请多少,而不是定额,而且新版本yarn-session,job cancel之后会回收taskmanager资源,但是jobmanager会一直在。
缺点:程序隔离度不够:所有个flink-job公用同一个集群环境,会相互占用slot,而且如果一个flink-job出现异常导致集群环境崩溃,正常的flink-job也会崩溃
适合场景:适合规模小执行时间短的作业
首先开辟资源启动 session 模式集群
# 老版本:
bin/yarn-session.sh -n 3 -jm 1024 -tm 1024
# -n --> 指定需要启动多少个 Taskmanager
# 新版本:
bin/yarn-session.sh -jm 1024 -tm 1024 -s 2 -m yarn-cluster -ynm hello -qu default
# -jm --> jobmanager memory
# -tm --> taskmanager memory
# -m yarn-cluster --> 集群模式(yarn 集群模式)
# -s --> 规定每个 taskmanager 上的 taskSlot 数(槽位数)
# -nm --> 自定义 appliction 名称
# -qu --> 指定要提交到的 yarn 队列
向已运行的 session 模式集群提交 job
# 通过命令提交 job 到已运行的 yarn-session 集群
bin/flink run -d -yid application_1550579027777_65420 -p 4 -c
cn.flink.java.demos.test /root/flink.jar
# 通过已运行 yarn-session 集群的 webui 上提交 job
flink stop -m yarn-cluster -yid application_1550579027777_65420 c8ee546129e8480809ee62a4ce7dd91d
yarn-per-job(单任务模式,新版被废弃掉了)
一个任务会对应一个 Job,每提交一个作业会根据自身的情况,都会单独向 yarn 申请资源,直到作业执行完成,一个作业的失败与否并不会影响下一个作业的正常提交和运行。独享 Dispatcher 和ResourceManager,按需接受资源申请
main方法在client上运行
优点:每个作业单独启动集群,隔离性好,JM 负载均衡,main 方法在客户端执行。
在 per-job 模式下,每个 Job 都有一个 JobManager,每个 TaskManager 只有单个 Job。
缺点:启动时间长,每次启动的时候现开辟yarn资源环境
适合场景:适合规模大长时间运行的作业
bin/flink run -m yarn-cluster -yjm 1024 -ynm test -yqu default -ys 2 -ytm 1024 -p 4 -c cn.test.test1 /root/test.jar
flink stop -m yarn-cluster -yid application_1550579027777_65420 c8ee546129e8480809ee62a4ce7dd91d
yar-application(应用模式)
main方法在yarn集群上运行
其余相比per-job类似
bin/flink run-application -t yarn-application \
-yjm 1024 -ynm sea -yqu default -ys 2 \
-ytm 1024 -p 4 \
-c cn.doitedu.flink.java.demos._27_KafkaSinkYarn /root/flink_course-1.0.jar
flink stop -m yarn-cluster -yid application_1550579027777_65420 c8ee546129e8480809ee62a4ce7dd91d