FLINK ON YRAM

  • flink on yram 提交流程
  • yarn-session提供两种模式
  • 会话模式(适合大量的小任务不用重新调度)
  • 分离模式(适合大任务)


flink on yram 提交流程

flink运行在YARN上,可以使用yarn-session来快速提交作业到YARN集群。我们先来看下Flink On Yarn模式,Flink是如何和Yarn进行交互的。

dolphinscheduler 配置远程flink flink 远程提交任务_配置文件

  1. 上传jar包和配置文件到HDFS集群上
  2. 申请资源和请求AppMaster容器
  3. Yarn分配资源AppMaster容器,并启动JobManager

JobManager和ApplicationMaster运行在同一个container上。
一旦他们被成功启动,AppMaster就知道JobManager的地址(AM它自己所在的机器)。
它就会为TaskManager生成一个新的Flink配置文件(他们就可以连接到JobManager)。
这个配置文件也被上传到HDFS上。
此外,AppMaster容器也提供了Flink的web服务接口。
YARN所分配的所有端口都是临时端口,这允许用户并行执行多个Flink

4.申请worker资源,启动TaskManager

dolphinscheduler 配置远程flink flink 远程提交任务_jar_02

yarn-session提供两种模式

会话模式(适合大量的小任务不用重新调度)

  • 使用Flink中的yarn-session(yarn客户端),会启动两个必要服务JobManagerTaskManager
  • 客户端通过yarn-session提交作业
  • yarn-session会一直启动,不停地接收客户端提交的作用
  • 有大量的小作业,适合使用这种方式
  • 使用步骤:
  1. 在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

dolphinscheduler 配置远程flink flink 远程提交任务_配置文件_03


2.使用flink提交任务

./bin/flink run examples/batch/WordCount.jar

运行结果

dolphinscheduler 配置远程flink flink 远程提交任务_jar_04


运行中的job任务

dolphinscheduler 配置远程flink flink 远程提交任务_flink_05

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