Flink集群部署详细步骤
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Flink集群部署详细步骤
1.下载Flink压缩包
下载地址:。
CDH集群环境 hadoop2.6,Scala2.11,所以下载:flink-1.5.0-bin-hadoop26-scala_2.11.tgz 2.解压
[root@hadoop2 opt]# tar -zxf flink-1.5.0-bin-hadoop26-scala_2.11.tgz
[root@hadoop2 opt]# cd flink-1.5.0
3.选择⼀个master节点,配置conf/flink-conf.yaml
[root@hadoop2 flink-1.5.0]# vi conf/flink-conf.yaml
# jobmanager.rpc.address IP
jobmanager.rpc.address: 10.108.4.202
4.配置slaves
将所有的worker节点(TaskManager)的IP或者主机名(⼀⾏⼀个)填⼊conf/slaves ⽂件中。
[root@hadoop2 flink-1.5.0]# vi conf/slaves
10.108.4.203
10.108.4.204
5.启动flink集群
[root@hadoop2 flink-1.5.0]# bin/start-cluster.sh
6.停⽌flink集群
[root@hadoop2 flink-1.5.0]# bin/stop-cluster.sh
7. 查看更多可⽤的配置项:
以下都是⾮常重要的配置项:
1、TaskManager总共能使⽤的内存⼤⼩(taskmanager.heap.mb)
2、每⼀台机器上能使⽤的 CPU 个数(taskmanager.numberOfTaskSlots)
3、集群中的总 CPU个数(parallelism.default)
4、临时⽬录(taskmanager.tmp.dirs)
以上就完成了⼀个简单的Flink集群。
添加JobManager或TaskManager实例到集群
1. 2. 可以使⽤和脚本为运⾏中的集群添加和
bin/jobmanager.sh bin/taskmanager.sh JobManager 实例
TaskManager 添加jobmanager:
bin/jobmanager.sh ((start|start-foreground) cluster) | stop | stop-all
添加taskmanager:
bin/taskmanager.sh start | start-foreground | stop | stop-all
⽣产中基本很少使⽤这种模式的,⼤多数都是基于YARN来进⾏提交任务,下⾯主要给出YARN的任务提交配置⽅式。
Flink On YARN
设置Hadoop环境变量:
[root@hadoop2 flink-1.5.0]# vi /etc/profile
export HADOOP_CONF_DIR=/opt/cloudera/parcels/CDH-5.13.3-1.cdh5.13.3.p0.2/lib/hadoop/etc/hadoop 查看使⽤⽅法:[root@hadoop2 flink-1.5.0]# bin/yarn-session.sh -h
Usage:
Required
-n,--container YARN (=Number of Task Managers)
Optional
-D
-d,--detached
-h,--help Yarn session.
-id,--applicationId YARN session
-j,--jar Flink jar
-jm,--jobManagerMemory JobManagerdriver-memory [in MB]
-m,--jobmanager Address of the JobManager (master) to which to connect. Us -n,--container TaskManagerexecutor
-nm,--name YARN
-q,--query YARN (memory, cores)
-qu,--queue YARN
-s,--slots JobManagercoreexecutor-coresslot
-st,--streaming Flink
-t,--ship (t for transfer)
-tm,--taskManagerMemory TaskManagerexecutor-memory [in MB]
-yd,--yarndetached (deprecated; use non-YARN specific option instead) -z,--zookeeperNamespace Zookeeper
1. 以集群模式提交任务,每次都会新建flink集群
[root@hadoop2 flink-1.5.0]# ./bin/flink run -m yarn-cluster -c com.demo.florian.WordCount $DEM
2.启动Session flink集群,提交任务
启动⼀个YARN session⽤2个TaskManager(每个TaskManager分配1GB的堆空间)
[root@hadoop2 flink-1.5.0]# ./bin/yarn-session.sh -n 2 -jm 1024 -tm 1024 -s 2
YARN session启动之后就可以使⽤bin/flink来启动提交作业
[root@hadoop2 flink-1.5.0]# ./bin/flink run -c com.demo.florian.WordCount $DEMO_DIR/target/fli
: run [OPTIONS]
"run" :
-c,--class jar
-m,--jobmanager jobmanager()
jobmanager
-p,--parallelism
使⽤run 命令向yarn集群提交⼀个job。
客户端可以确定jobmanager的地址。
当然,你也可以通过-m参数指定jobmanager。
jobmanager的地址在yarn控制台上可以看到。
后台 yarn session
如果你不希望flink yarn client⼀直运⾏,也可以启动⼀个后台运⾏的yarn session。
使⽤这个参数:-d 或者 --detached
在这种情况下,flink yarn client将会只提交任务到集群然后关闭⾃⼰。
注意:在这种情况下,⽆法使⽤flink停⽌yarn session。
使⽤yarn ⼯具来停⽌yarn session
yarn application -kill
附着到⼀个已存在的session
下⾯命令可以附着到⼀个运⾏中的flink yarn session:
[root@hadoop2 flink-1.5.0]# ./bin/yarn-session.sh -id
附着到⼀个运⾏的session使⽤yarn resourcemanager来确定job Manager 的RPC端⼝。
停⽌yarn session通过停⽌unix进程(使⽤)或者在client中输⼊
CTRL+C stop
flink on yarn的故障恢复
flink 的 yarn 客户端通过下⾯的配置参数来控制容器的故障恢复。
这些参数可以通过conf
/flink-conf.yaml 或者在启动yarn session的时候通过-D参数来指定。
yarn.reallocate-failed:这个参数控制了flink是否应该重新分配失败的taskmanager容器。
默认是true。
yarn.maximum-failed-containers:applicationMaster可以接受的容器最⼤失败次数,达到这个参数,就会认为yarn session失败。
默认这个次数和初始化请求的taskmanager数量相等(-n 参数指定的)。
yarn.application-attempts:applicationMaster重试的次数。
如果这个值被设置为1(默认就是1),当application master失败的时候,yarn session也会失败。
设置⼀个⽐较⼤的值的话,yarn会尝试重启applicationMaster。
⽇志⽂件
在某种情况下,flink yarn session 部署失败是由于它⾃⾝的原因,⽤户必须依赖于yarn的⽇志来进⾏分析。
最有⽤的就是。
启动它,⽤户必须在yarn-site.xml⽂件中设置yarn.log-aggregation-enable 属性为true。
⼀旦启⽤了,⽤户可以通过下⾯的命令来查看⼀个失败的yarn session的所有详细⽇志。
yarn logs -applicationId
yarn client控制台和web界⾯
flink yarn client也会打印⼀些错误信息在控制台上,如果错误发⽣在运⾏时(例如如果⼀个taskmanager停⽌⼯作了⼀段时间)除此之外,yarn resource manager的web界⾯(默认端⼝是8088)。
resource manager的端⼝是通过
yarn.resourcemanager.webapp.address参数来配置的。
它运⾏在yarn 程序运⾏的时候查看⽇志和程序失败的时候查看⽇志⽤户查找问题。
flink on yarn 内部实现
Flink在YARN集群上运⾏时:Flink YARN Client负责与YARN RM通信协商资源请求,Flink JobManager和Flink TaskManager分别申请到Container去运⾏各⾃的进程。
YARN AM与Flink JobManager在同⼀个Container中,这样AM可以知道Flink JobManager的地址,从⽽AM可以申请Container去启动Flink TaskManager。
待Flink成功运⾏在YARN集群上,Flink YARN Client就可以提交Flink Job到Flink JobManager,并进⾏后续的映射、调度和计算处理。
YARN客户端需要访问Hadoop配置来连接YARN资源管理器和HDFS。
它使⽤下⾯的策略来确定Hadoop 的配置:
YARN_CONF_DIR,HADOOP_CONF_DIR,HADOOP_CONF_PATH.其中⼀个变量被设置,就能读取配置
如果上⾯的策略失败(在正确的yarn 设置中不应该出来这种情况),客户端使⽤
HADOOP_HOME环境变量。
如果设置了,那么客户端就会尝试访问$HADOOP_HOME/tect/hadoop
step1 : 当启动⼀个新的Flink YARN session时,客户端⾸先检查资源(container和memory)是否可⽤。
然后,上传⼀个包含Flink和配置的jar包到HDFS上。
客户端请求(step 2)YARN container启动ApplicationMaster(step 3).由于客户端将配置和jar⽂件注册到容器,在特定机器上运⾏的YARN的NodeManager将负责准备container(例如下载⽂件)。
⼀旦完成,ApplicationMaster就被启动了。
JobManager和ApplicationMaster运⾏在同⼀个container上。
⼀旦他们被成功启动,AM就知道JobManager的地址(AM它⾃⼰所在的机器)。
它就会为TaskManager⽣成⼀个新的Flink配置⽂件(他们就可以连接到JobManager)。
这个配置⽂件也被上传到HDFS上。
此外,AM容器也提供了Flink的web服务接⼝。
YARN所分配的所有端⼝都是临时端⼝,这允许⽤户并⾏执⾏多个Flink session。
最后,AM开始为Flink的任务TaskManager分配container,它将从HDFS加载jar⽂件和修改的配置⽂件。
⼀旦这些步骤完成,Flink就准备好接⼝Job的提交了
Flink任务处理过程
当Flink系统启动时,⾸先启动JobManager和⼀⾄多个TaskManager。
JobManager负责协调Flink系统,TaskManager则是执⾏并⾏程序的worker。
当系统以本地形式启动时,⼀个JobManager和⼀个TaskManager会启动在同⼀个JVM中。
当⼀个程序被提交后,系统会创建⼀个Client来进⾏预处理,将程序转变成⼀个并⾏数据流的形式,交给JobManager和TaskManager执⾏。