FLINK ON YRAM
- flink on yram 提交流程
- yarn-session提供两种模式
- 会话模式(适合大量的小任务不用重新调度)
- 分离模式(适合大任务)
flink on yram 提交流程
flink运行在YARN上,可以使用yarn-session
来快速提交作业到YARN集群。我们先来看下Flink On Yarn模式,Flink是如何和Yarn进行交互的。
- 上传jar包和配置文件到HDFS集群上
- 申请资源和请求AppMaster容器
- Yarn分配资源AppMaster容器,并启动JobManager
JobManager和ApplicationMaster运行在同一个container上。
一旦他们被成功启动,AppMaster就知道JobManager的地址(AM它自己所在的机器)。
它就会为TaskManager生成一个新的Flink配置文件(他们就可以连接到JobManager)。
这个配置文件也被上传到HDFS上。
此外,AppMaster容器也提供了Flink的web服务接口。
YARN所分配的所有端口都是临时端口,这允许用户并行执行多个Flink
4.申请worker资源,启动TaskManager
yarn-session提供两种模式
会话模式(适合大量的小任务不用重新调度)
- 使用Flink中的yarn-session(yarn客户端),会启动两个必要服务
JobManager
和TaskManager
- 客户端通过yarn-session提交作业
- yarn-session会一直启动,不停地接收客户端提交的作用
- 有大量的小作业,适合使用这种方式
- 使用步骤:
- 在flink目录启动yarn-session
bin/yarn-session.sh -n 2 -tm 800 -s 1 -d
# -n 表示申请2个容器,
# -s 表示每个容器启动多少个slot
# -tm 表示每个TaskManager申请800M内存
# -d 表示以后台程序方式运行
yarn-session.sh脚本可以携带的参数:
Required
-n,--container <arg> 分配多少个yarn容器 (=taskmanager的数量)
Optional
-D <arg> 动态属性
-d,--detached 独立运行 (以分离模式运行作业)
-id,--applicationId <arg> YARN集群上的任务id,附着到一个后台运行的yarn session中
-j,--jar <arg> Path to Flink jar file
-jm,--jobManagerMemory <arg> JobManager的内存 [in MB]
-m,--jobmanager <host:port> 指定需要连接的jobmanager(主节点)地址
使用这个参数可以指定一个不同于配置文件中的jobmanager
-n,--container <arg> 分配多少个yarn容器 (=taskmanager的数量)
-nm,--name <arg> 在YARN上为一个自定义的应用设置一个名字
-q,--query 显示yarn中可用的资源 (内存, cpu核数)
-qu,--queue <arg> 指定YARN队列
-s,--slots <arg> 每个TaskManager使用的slots数量
-st,--streaming 在流模式下启动Flink
-tm,--taskManagerMemory <arg> 每个TaskManager的内存 [in MB]
-z,--zookeeperNamespace <arg> 针对HA模式在zookeeper上创建NameSpace
启动有观察yram会发现多了一个Flink session cluste
2.使用flink提交任务
./bin/flink run examples/batch/WordCount.jar
运行结果
运行中的job任务
3.如果程序运行完了,可以使用yarn application -kill application_id
杀掉任务
yarn application -kill application_1578014136245_0003
分离模式(适合大任务)
- 直接提交任务给YARN
- 大作业,适合使用这种方式
- 使用flink直接提交任务
./bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar