1. 部署说明
Flink 有三种部署模式,分别是 Local、Standalone Cluster 和 Yarn Cluster。对于 Local 模式来说,JobManager 和 TaskManager 共用一个 JVM,Local模式的部署请点击http://www.jianshu.com/p/26c9ef86fb19。如果要验证一个简单的应用,Local 模式是最方便的。实际应用中大多使用 Standalone 或者 Yarn Cluster。
Flink是Master/Slave架构,充当Master角色的是JobManager,充当Slave角色是SlaveTaskManager。和所有Master/Slave架构的集群一样,JobManager也存在单点故障的问题;Flink也提供了Master HA的方案,是由Zookeeper支撑的;本次部署暂不考虑HA的情况,仅仅达到了集群运行起来的目标。
2. 部署要求
机器三台,IP是192.168.1.90—92,主机名分别是vm1、vm2、vm3。
Linux操作系统,本次使用Centos 7.1。
-
JDK1.7或者更高版本,本次使用JDK 1.8,并配置环境变量。
[root@vm1 ~]# vi /etc/profile #在文件的末尾配置JAVA_HOME和Path export JAVA_HOME=/opt/jdk export PATH=$PATH:$JAVA_HOME/bin [root@vm1 ~]# source /etc/profile
-
设置ssh免登录
-
生成ssh密码的命令,-t 参数表示生成算法,有rsa和dsa两种;-P表示使用的密码,这里使用“”空字符串表示无密码。直接回车。
[root@vm1 ~]# ssh-keygen -t rsa -P ""
-
将生成的密钥写入authorized_keys文件。
[root@vm1 ~]# cat .ssh/id_rsa.pub >>.ssh/authorized_keys
-
将.ssh目录拷贝到其它主机相同目录下。
[root@vm1 ~]# scp -r ~/.ssh root@192.168.1.91:~/ [root@vm1 ~]# scp -r ~/.ssh root@192.168.1.92:~/
-
3. 部署过程
3.1 部署Flink
把Flink的压缩包解压到/opt目录下,即Flink的Home路径是/opt/flink-1.1.2,保持各台机器上flink目录一致。
3.2 Flink参数设置
Flink的配置文件路径是/opt/flink-1.1.2/conf,目录下的文件包括
- flink-conf.yaml #flink的主配置文件
- log4j-cli.properties
- log4j.properties
- log4j-yarn-session.properties
- logback.xml
- logback-yarn.xml
- masters # master(jobmanager)配置文件
- slaves # slave(taskmanager)配置文件
- zoo.cfg # Zookeeper配置文件
本次部署,修改了vm1上的flink-conf.yaml、mastes和slaves,并在修改完成后拷贝到了vm2和vm3上。
3.2.1 flink-conf.yaml的修改
文件路径是/opt/flink-1.1.2/conf/flink-conf.yaml
,主要关注以下参数,具体的含义见注释。还有更多的参数配置,例如前端页面的配置、文件存储的配置(支持HDFS)、HA的配置等,更多配置说明参考:Flink官方配置说明。
# Master的主机名或者ip
jobmanager.rpc.address: vm1
# JobManager监听端口
jobmanager.rpc.port: 6123
# JobManager的内存参数
jobmanager.heap.mb: 512
# 每台taskmanager可用的总内存
taskmanager.heap.mb: 8192
# 每台taskmanager可用的solt数目,一般设置成CPU的core数
taskmanager.numberOfTaskSlots: 2
# NumTaskManagers(slave的个数) * NumSlotsPerTaskManager
parallelism.default: 4
# 酌情修改临时目录。/tmp中的数据重启就没了。
taskmanager.tmp.dirs: /tmp
3.2.1 masters的修改
在配置jobmanager(master)文件时,除了配置master的主机名(IP)之外,还需要指定 JobManager 的 UI 监听端口。
vm1:8081
3.2.1 slaves的修改
修改slaves文件,配置多个taskmanager(slave)。
vm2
vm3
3.3 集群启动和停止
3.3.1 启动集群
在master节点,即本例中的vm1节点上执行以下命令,启动集群。其过程就是先启动本机的jobmanager,然后ssh到各个slave节点上启动taskmanager。
[root@vm1 flink-1.1.2]# bin/start-cluster.sh
访问http://vm1:8081,可以看到有2个taskmanager,和4个slot。
3.3.2 停止集群
在master节点,即本例中的vm1节点上执行以下命令,启动集群。其过程是先ssh到各个slave节点上停止taskmanager,再停止本机的jobmanager。
[root@vm1 flink-1.1.2]# bin/stop-cluster.sh
3.3.3 启停集群中的一个节点
如果想要启动或者停止机器中的节点,不论是jobmanager或者taskmanager,都可以在对应的主机上执行以下命令。
# 启动本机的jobmanager
bin/jobmanager.sh start
# 启动本机的taskmanager
bin/taskmanager.sh start
# 停止本机的taskmanager
bin/taskmanager.sh stop
# jobmanager
bin/jobmanager.sh stop
https://ci.apache.org/projects/flink/flink-docs-release-1.1/quickstart/setup_quickstart.html#cluster-setup
https://ci.apache.org/projects/flink/flink-docs-release-1.1/setup/cluster_setup.html
(完)