Flink-部署模式

Posted by Chai's Blog on November 25, 2018

本文仅对Flink集群的部署模式作简单探讨,并未对如何部署(如环境变量,节点互信,hadoop集成配置)作说明,相关方法可百度获取。

在Local模式下仅模拟cluster集群,仅启动JobManager完成应用的运行。JobManager进程信息如下: jobmanager_local.jpg

提交应用方式: ./flink run -p 1 ../examples/batch/WordCount.jar

使用./start-cluster.sh 启动flink集群 JobManager进程信息 : jobManager_standalone.jpg

TaskManager进程信息 :

taskmanager_standalone.jpg

提交Flink作业:

1
./flink run -p 2  ../examples/batch/WordCount.jar --input hdfs://192.168.242.133:9000/tmp/input  --output hdfs://192.168.242.133:9000/tmp/output

FLink on yarn 有两种运行模式

1
2
* 创建一个yarn-session,后续提交应用至该session
* 直接 yarncluster模式提交应用至yarn服务

yarn-session模式:

该模式下,创建session以后,会启动一个Yarn applicationMaster和指定数目的Yarn Container。查看ApplicationMaster及Container进程信息可以看出,二者启动类分别为YarnAPplicationMasterRunner和YarnTaskManager。查看源码可以看出,本质上ApplicationMaster扮演的是JobManager的角色,Contaienr扮演的是TaskManager的角色,类似于启动一个Flink的集群。

然后可以通过直接提交应用至该session,由该Session负责运行应用

创建yarn-session

启动flink的yarn-session,可以使用如下命令:

1
./yarn-session.sh -n 3 -jm 768 -tm 768

ApplicationMaster/JobManager 进程信息

jobmanager_session.jpg

Container/TaskManager进程信息: taskmanager_session.jpg

提交Flink作业命令:

  • 使用相同用户,在启动yarn-sesion的节点上可以通过如下命令提交应用至yarn-session:

    ./flink run -p 2 ../examples/batch/WordCount.jar

  • 指定yarn服务中yarn-session对应的applicationId,提交作业

    ./flink run -p 2 -yid application_1543030627541_0003 ../examples/batch/WordCount.jar

yarn-cluster模式

可以直接通过yarn-cluster模式提交应用至yarn服务,可使用如下命令:

1
./flink run -m yarn-cluster -yn 1 -yjm 1024 -ytm 1024  ../examples/batch/WordCount.jar

ApplicationMaster/JobManager

jobmanager_cluster.jpg

Container/TaskManager进程信息: taskmanager_cluster.jpg

PS: 以上各部署模式架构图可参考:https://www.jianshu.com/p/0f4725f1b7d8