1.Flink on yarn执行方式和提交命令
第一种:是先开辟资源然后在进行资源的调度使用,开辟的资源是供所有的flink进程来使用的,如果某一时刻没有flink程序执行开辟的资源会空转等待新的flink进程。
第二种:是一边开辟资源一边进行使用,一个资源供一个flink进程使用,flink进程执行完毕之后就释放资源。
flink的提交命令: |
默认查找当前yarn集群中已有的yarn-session信息中的jobmanager(Flink on yarn的第一种执行方式) 【/tmp/.yarn-properties-root】:./bin/flink run ./examples/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1
连接指定host和port的jobmanager:(-m参数直接指定flink的集群位置) ./bin/flink run -m hadoop100:1234 ./examples/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1
启动一个新的yarn-session(flink on yarn的第二种方式): ./bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1 |
注意:yarn session命令行的选项也可以使用./bin/flink 工具获得。它们都有一个y或者yarn的前缀 例如:./bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar
|
Flink on Yarn →ResourceManager →NodeManager →applicationMaster(flink的jobmanager和它运行在一个Container中) →Container(taskmanager运行在上面) |
注Ⅰ:一个container启动applicationMaster和jobmanager,其余的container启动taskmanager
2.Flink on yarn 的内部流程:
on-yarn 的优势:
- 提高集群机器的利用率
- 一套集群,可以执行MR任务,spark任务,flink任务等...
Flink on yarn的流程:
第一步:上传flink 相关jar包和配置到hdfs
第二步:向yarn(resourceManager)申请资源并请求启动applicationMaster的容器
第三步:resourceManager分配applicationMaster的容器启动appMaster和flink jobManager,flink jobManager会修改hdfs的配置文件,供taskManager获悉jobManager的位置。
第四步:appMaster开始分配worker在其他的container上,每一个container启动一个Flink TaskManager任务,flink taskManager会读取hdfs的配置文件找到jobManager来运行flink程序。