Yarn部署
Sesssion-cluster
Session-Cluster模式需要先启动集群,然后再提交作业,接着会向yarn申请一块空间后,资源永远保持不变。如果资源满了,下一个作业就无法提交,只能等到yarn中的其中一个作业执行完成后,释放资源,下个作业才会正常提交所有作业共享Dispatcher和ResourceManager;共享资源;适合规模小、执行时间短的作业。
在yarn中初始化一个flink集群,开辟指定资源,以后提交任务都想这里提交,这个flink集群会常驻在yarn集群中,除非手动停止。
步骤
1.启动hadoop集群
2.启动yarn-session
./yarn-session.sh -n 2 -s 2 -jm 1024 -tm 1024 -nm test -d
-n(--container):TaskManager的数量
-s(--slots):每个TaskManager的slot数量,默认一个slot一个core,默认每个taskmanager的slot的个数为1,有时可以多一些taskmanager,做冗余。
-jm:jobmanager的内存(MB)
-nm:每个taskmanager的内存(MB)
-d:后台执行
3.执行任务
./flink run -c 全路径类名 jar包名称 --host xxx -port xxx
4.取消yarn-session
yarn application --kill yarn应用的ID号
Per-Job-Cluster
一个Job会对应一个集群,每提交一个作业会根据自身的情况,都会单独想yarn申请资源,知道作业执行完成。一个作业的失败与否并不会影响下一个作业的正常提交和运行。独享Dispatcher和ResourceManager,按需接收资源申请;适合规模大,长时间运行的作业。
每次提交都会床架你哥新的flink集群,任务之间相互独立,互不影响,方便管理,任务完成后创建的集群也会消失。
步骤
1.启动hadoop集群
2.不启动yarn-session,直接执行job
./flink run -m yarn-cluster -c 全路径类名 jar包名称 --host xxx -port xxx
K8s
基于Docker镜像运行能够让用户更加方便地对应用进行管理和运维,容器管理工具中最为流行的就是K8s。
步骤
1.搭建k8s集群
2.配置各组件的yaml文件
在k8s上构建Flink Session Cluster,需要将Flink集群的组件对应的docker镜像分别在k8s上启动,包括jobmanager,taskmanager,jobmanagerService三个镜像服务。
3.启动Flink Session Cluster
//启动jobmanager-service服务
kubectl create -f jobmanager-service.yaml
//启动jobmanager-deployment服务
kubectl create -f jobmanager-deployment.yaml
//启动taskmanager-deployment服务
kubectl create -f taskmanager-deployment.yaml