上一篇博客中主要是Flink的了解性知识以及如何使用在local Flink上跑一个程序,这篇博客我们主要介绍下Flink的standalone集群的搭建以及其基于ha 的一个搭建。对于flink的安装我默认你已经做好节点间的免秘钥以及各个节点关闭防火墙,jdk1.8的安装等操作,开始之前我先给大家介绍一款非常使用的软件,大家可以看下使用效果,喜欢的话可以下载着玩玩。
lrzsz--方便上传下载文件
安装方式也非常简单,如下
sudo yum install lrzsz
其中rz是上传命令,sz是下载命令,效果图如下:
Flink standalone
flink的安装步骤与hadoop的安装步骤相似,
主机名 ip 角色
master 192.168.1.150 master
slave2 192.168.1.151 slave
slave3 192.168.1.152 slave
slave4 192.168.1.153 slave
1.去官网选择合适的安装包(https://flink.apache.org/downloads.html),对于flink而言如果后续需要使用hadoop生态圈的成员,比如yarn,hdfs之类的那么就需要根据你安装的hadoop版本选择flink版本,如果不适用hadoop生态圈的话,可以随便下载。
我之前安装的hadoop版本是2.7.3所以选择 flink-1.7.2-bin-hadoop27-scala_2.11.tgz版进行下载。直接下载到本地,然后使用rz 命名把安装包上传到虚拟机上master节点上。
2.解压缩,我一般是把安装文件放置在/usr/local 目录下,使用解压命令
tar -zxvf flink-1.7.2-bin-hadoop27-scala_2.11.tgz -C /usr/local
进入/usr/local/下,将改文件名改为flink,
mv flink-***** flink
cd flink
ls //查看文件
其中bin目录下的是flink集群的启停相关命令,conf的是flink的配置文件,examples放置的是一些小例子,上一篇中我们就运行了其中的wordcount程序。
3.修改配置文件
cd conf
我们需要修改的是一些几个文件
vim flink-conf.yaml
其中jobmanager.rpc.address:master(master节点的名称)
对于masters文件因为此时不是基于高可用的所以此时不需要修改,只需要在slaves中加入slave节点即可,
4.至此配置结束,分发flink文件到slaves中记录的节点中
scp -r /usr/local/flink/ root@slave2:/usr/local
scp -r /usr/local/flink/ root@slave3:/usr/local
scp -r /usr/local/flink/ root@slave4:/usr/local
5.修改/etc/profile
再次分发/etc/profile文件
至此集群配置就已经结束,我们可以直接启动该集群了:
可以看到在四个节点的flink的集群已经启动了,我在访问下web端
至此Flink 的Standalone 模式启动成功。
Flink Standalone ha
Jobmanager协调每个flink部署,他负责调度和资源管理,默认情况下,每个flink集群只有一个jonmanager实例,这会造成单点故障(SPOF),如果Jobmanager挂掉的话则无法提交新作业并且导致运行中作业失败。使用jobmanager的高可用性的模式可以避免这个问题,其原理是:搭建集群时有两个或以上的jobmanager,其中一个为active,其他的均为standby,当活动的节点不幸宕机那么,由zookeeper依据其自身的选举机制从standby 的节点中再次选举出一个active jobmanager。故Flink的高可用性是基于zookeeper的,安装zookeeper的教程可以参考网上其他教程。
相关配置描述
##基础配置
# jobManager 的IP地址
jobmanager.rpc.address: localhost
# JobManager 的端口号
jobmanager.rpc.port: 6123
# JobManager JVM heap 内存大小
jobmanager.heap.size: 1024m
# TaskManager JVM heap 内存大小
taskmanager.heap.size: 1024m
# 每个 TaskManager 提供的任务 slots 数量大小
taskmanager.numberOfTaskSlots: 1
# 程序默认并行计算的个数
parallelism.default: 1
# 文件系统来源
# fs.default-scheme
##高可用性配置
# 可以选择 'NONE' 或者 'zookeeper'.
# high-availability: zookeeper
# 文件系统路径,让 Flink 在高可用性设置中持久保存元数据
# high-availability.storageDir: hdfs://主机名:端口号/flink/ha/
# zookeeper 集群中仲裁者的机器 ip 和 port 端口号
# high-availability.zookeeper.quorum: localhost:2181
# 默认是 open,如果 zookeeper security 启用了该值会更改成 creator
# high-availability.zookeeper.client.acl: open
##容错和检查点
# 用于存储和检查点状态
# state.backend: filesystem
# 存储检查点的数据文件和元数据的默认目录
# state.checkpoints.dir: hdfs://namenode-host:port/flink-checkpoints
# savepoints 的默认目标目录(可选)
# state.savepoints.dir: hdfs://namenode-host:port/flink-checkpoints
# 用于启用/禁用增量 checkpoints 的标志
# state.backend.incremental: false
##web 前端配置
# 基于 Web 的运行时监视器侦听的地址.
#jobmanager.web.address: 0.0.0.0
# Web 的运行时监视器端口
rest.port: 8081
# 是否从基于 Web 的 jobmanager 启用作业提交
# jobmanager.web.submit.enable: false
其他配置请查看官网。
再次修改配置文件,基于standalone模式下
修改masters
修改zoo.cfg
再次分发flink至各个节点。
先启动hadoop集群和zookeeper,在启动集群 start-cluster.sh
可以看到slave2节点中出现了和两个进程。
测试:开始时master节点是active,kill -9 进程id 干掉master的jobmanager
在web端输入 slave2:8081,开始是报一个error,大致是没有选举出avtive节点,不断刷新后
再次启动master节点上的jobmanager节点 jobmanager.sh start
再web端输入master:8081自动跳转到slave2:8081,Flink ha 成功。
结束语
水平有限,博客依然有不足,很多该介绍的地方都一概而过,望见谅!!!!