Flink on Yarn的两种运行方式

Flink安装步骤:
环境配置需要jdk1.8以上

解压缩flink压缩包至opt目录下

配置flink的配置文件: conf/flink-conf.yaml

1.编辑

JobManager runs. 主节点所在ip

jobmanager.rpc.address: 192.168.1.201

The RPC port where the JobManager is reachable. 集群内部的通信端口

jobmanager.rpc.port: 6123

The heap size for the JobManager JVM 主节点的运行内存

jobmanager.heap.size: 1024m

The heap size for the TaskManager JVM 从节点运行内存

taskmanager.heap.size: 4096m

The number of task slots that each TaskManager offers. Each slot runs one parallel pipeline.运行槽数最好与核心线程数一致

taskmanager.numberOfTaskSlots: 4

The parallelism used for programs that did not specify and other parallelism. 并行数为1

parallelism.default: 1

配置flink/conf/masters/

localhost:8081

配置flink/conf/slaves/

server1
server3
server4
server5
server6

参考https://ci.apache.org/projects/flink/flink-docs-release-1.6/ops/deployment/cluster_setup.html

flink启动./bin/yarn-session.sh
此时会报一个错误,没有类异常,需要导入zookeeper/lib下面的相关依赖包到flink/lib

flink也可以加入ambari的界面管理

参考https://github.com/abajwa-hw/ambari-flink-service

tips:里面的

ambari-flink-service/configuration/flink-ambari-config.xml

里的最后一个配置

<property>

​		 <name>flink_download_url</name>

​		<value>hhttp://www.us.apache.org/dist/flink/flink-1.2.0/flink-1.2.0-bin-hadoop2-scala_2.11.tgz</value>

​		<description>Snapshot download location. Downloaded when setup_prebuilt is true</description>

</property> 

这里由于是在内网的环境内搭建所以无法下载包 需要先将对应的版本flink下载好 并把连接指向包所在的位置

Flink on Yarn的两种运行方式
第一种【yarn-session.sh(开辟资源)+flink run(提交任务)】
•启动一个一直运行的flink集群

•./bin/yarn-session.sh -n 2 -jm 1024 -tm 1024 [-d]

•附着到一个已存在的flink yarn session

•./bin/yarn-session.sh -id application_1463870264508_0001

•执行任务

•./bin/flink run ./data/batch/WordCount.jar -input hdfs://hadoop00:9000/LICENSE -output hdfs://hadoop00:9000/wordcount-result.txt

•停止任务 【web界面或者命令行执行cancel命令】

第二种【flink run -m yarn-cluster(开辟资源+提交任务)】
•启动集群,执行任务

•./bin/flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 ./data/batch/WordCount.jar

注意:client端必须要设置YARN_CONF_DIR或者HADOOP_CONF_DIR或者HADOOP_HOME环境变量,通过这个环境变量来读取YARN和HDFS的配置信息,否则启动会失败

./bin/yarn-session.sh 命令分析
用法:

必选

 -n,--container <arg>   分配多少个yarn容器 (=taskmanager的数量) 

可选

 -D <arg>                        动态属性 

 -d,--detached                   独立运行 

 -jm,--jobManagerMemory <arg>    JobManager的内存 [in MB] 

 -nm,--name                     在YARN上为一个自定义的应用设置一个名字 

 -q,--query                      显示yarn中可用的资源 (内存, cpu核数) 

 -qu,--queue <arg>               指定YARN队列. 

 -s,--slots <arg>                每个TaskManager使用的slots数量 

 -tm,--taskManagerMemory <arg>   每个TaskManager的内存 [in MB] 

 -z,--zookeeperNamespace <arg>   针对HA模式在zookeeper上创建NameSpace

 -id,--applicationId <yarnAppId>        YARN集群上的任务id,附着到一个后台运行的yarn session中

./bin/flink run 命令分析
run [OPTIONS]

• “run” 操作参数:

•-c,–class 如果没有在jar包中指定入口类,则需要在这里通过这个参数指定

•-m,–jobmanager host:port 指定需要连接的jobmanager(主节点)地址,使用这个参数可以指定一个不同于配置文件中的jobmanager

•-p,–parallelism 指定程序的并行度。可以覆盖配置文件中的默认值。

默认查找当前yarn集群中已有的yarn-session信息中的jobmanager【/tmp/.yarn-properties-root】:

•./bin/flink run ./data/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1

连接指定host和port的jobmanager:

•./bin/flink run -m hadoop00:1234 ./data/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1

启动一个新的yarn-session:

•./bin/flink run -m yarn-cluster -yn 2 ./data/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 ./data/batch/WordCount.jar

Flink 在yarn上的分布
Flink on Yarn

•ResourceManager

•NodeManager

•AppMater(jobmanager和它运行在一个Container中)

•Container(taskmanager运行在上面)

使用on-yarn的好处

•提高集群机器的利用率

•一套集群,可以执行MR任务,spark任务,flink任务等…

JobManager 高可用(HA)
1、说明

jobManager协调每个flink任务部署。它负责任务调度和资源管理。默认情况下,每个flink集群只有一个JobManager,这将导致一个单点故障(SPOF):如果JobManager挂了,则不能提交新的任务,并且运行中的程序也会失败。使用JobManager HA,集群可以从JobManager故障中恢复,从而避免SPOF(单点故障) 。 用户可以在standalone或 YARN集群 模式下,配置集群高可用

2、配置步骤

Standalone集群的高可用

•Standalone模式(独立模式)下JobManager的高可用性的基本思想是,任何时候都有一个 Master JobManager ,并且多个Standby JobManagers 。 Standby JobManagers可以在Master JobManager 挂掉的情况下接管集群成为Master JobManager。 这样保证了没有单点故障,一旦某一个Standby JobManager接管集群,程序就可以继续运行。 Standby JobManager和Master JobManager实例之间没有明确区别。 每个JobManager都可以成为Master或Standby节点

Yarn 集群高可用

•flink on yarn的HA 其实主要是利用yarn自己的job恢复机制

HA机制详细配置步骤见下篇博客

作者:Jiny_li
来源:CSDN
原文:https://blog.csdn.net/Jiny_li/article/details/85944203
版权声明:本文为博主原创文章,转载请附上博文链接!

发布了124 篇原创文章 · 获赞 0 · 访问量 7870

猜你喜欢

转载自blog.csdn.net/weixin_43680708/article/details/90214471