Flink有三种部署模式:standalone、yarn、kubernetes。
1.Standalone模式
Standalone模式的部署过程分为六步:
(1)第一步,下载并解压安装包
(2)第二步,修改配置文件conf/flink-conf.yaml。配置jobmanager.rpc.address,作为任务管理节点,一般通过此地址提交任务。
(3)第三步,修改配置文件conf/masters。配置当前jobmanager提供的接入服务地址,也是flink WebUI的地址。
(4)第四步,修改配置文件conf/slaves。配置任务执行节点。
(5)第五步,把包和配置分发到所有的管理节点和任务执行节点。
(6)第六步,启动集群。执行命令sh bin/start-cluster.sh。启动完成后,管理节点进程为standalonesession,任务工作芥蒂娜进程为taskexecutor。
部署完成后,可从Flink WebUI提交任务。
bin目录下的flink命令也可以提供任务管理功能,使用方法如下:
# 提交任务
bin/flink run -c {main方法所在类} -p {并行度} {jar包地址} - -param1 param1Value - -param2 param2Value
# 列举任务
bin/flink list
#取消任务
bin/flink cancel {jod id}
2.Yarn模式
如果以Yarn模式部署Flink任务,需要Flink是有Hadoop支持的版本,Hadoop环境需要保证版本在2.2以上,并且集群中按照有HDFS服务。
Flink提供了两种在yarn上运行的模式,分别为session-cluster和per-job-cluster。
2.1.Session-cluster模式
模式结构图如下所示:
Session-cluster模式需要先启动集群,然后再提交作业,接着会向yarn申请一块空间后,资源永远保持不变。如果资源满了,下一个作业就无法提交,只能等到yarn中的其中一个作业执行完成后,释放资源,下一个作业才会正常提交。所有作业共享Dispatcher和ResourceManager,共享资源,适合规模小执行时间短的作业。
在yarn中初始化一个flink集群,开辟指定的资源,以后提交任务都向这里提交。这个flink集群会常驻在yarn集群中,除非手工停止。
部署及任务执行过程为:
(1)第一步:启动hadoop集群。
(2)第二步:启动yarn-session。执行命令sh bin/yarn-session.sh -n {TaskManager的数量,例如2} -s {每个TaskManager的slot数量,例如2} -jm {JobManager的内存,单位是MB,例如1024} -tm {每个TaskManager的内存,单位MB,例如1024} -nm {yarn的appName,例如test} -d。
(3)第三步:执行任务。通过flink run命令执行。
(4)第四步:从yarn控制台查看任务状态。
如果要取消yarn-session。执行yarn application - -kill {application id}命令。
2.2.Per-job-cluster模式
模式结构图如下所示:
一个Job会对应一个集群,每提交一个作业会根据自身的情况,都会单独向yarn申请资源,知道作业执行完成,一个作业的失败与否并不会影响下一个作业的正常提交和运行。独享Dispatcher和ResourceManager,按需接受资源申请,适合规模大、长时间运行的作业。
每次提交都会创建一个新的flink集群,任务之间相互独立,互不影响,方便管理。任务执行完成之后创建的集群也会消失。
部署及任务执行过程为:
(1)第一步:启动hadoop集群。
(2)第二步:不启动yarn-session,直接执行任务sh bin/flink run -m yarn-cluster ……。特殊的点是需要指定“-m yarn-cluster”配置。
3.Kubernetes模式
容器话是业界流行的一项技术,容器管理工具中最为流行的就是Kubernetes,即k8s。Flink也支持k8s部署模式,部署过程如下所示:
(1)第一步:搭建Kubernetes集群。
(2)第二步:配置个组件的yaml文件。主要包括JobManager、TaskManager和JobManagerService三个镜像服务。
(3)第三步:启动Flink Session Cluster。执行命令“kubectl create -f jobmanager-service.yaml; kubectl create -f jobmanager-deployment.yaml; kubectl create -f taskmanager-service.yaml;”。
(4)第四步:访问Flink WebUI页面。即JobManagerService提供的服务。地址为“http://{JobManagerHost:Port}/api/v1/namespaces/default/services/flink-jobmanager:ui/proxy”。