flink笔记@tanghc
1.HA集群环境规划
使用三台节点实现两主两从集群(由于笔记本性能限制)
jobmanager:master 、slave1
Taskmanager:slave1、slave2(slave1是一台机器上同时跑jobmanager和Taskmanager)
zookeeper:master 、slave1、slave2
NOTE:
要启用jobManager高可用性,必须将高可用性模式设置为zookeper,配置一个Zookeeper quorum,并配置一个masters文件储存所有的jobManager hostname及其Web UI 端口号。
Flink利用zookeeper实现运行中的jobManager节点之间的分布式协调。Zookeeper是独立于flink的服务,它通过领导选举制和轻量级转态一致性存储来提供高度可靠的分布式协调。
2.配置
集群内所有配置都一样,所以从第一台机器master开始配置,之后分发到各个节点就好了
- 进入到Flink的安装目录下(先按照standalone的参数进行修改):
vi conf/flink-conf.yaml
jobmanager.rpc.address:master
一定注意冒号和参数之间要空一格
- 设置从节点
vi conf/slaves
将你需要设置为从节点的主机名写入此文件中(注意:也可以直接设置ip地址)
- 设置主节点
vi conf/masters
- List item
.设置HA
vi conf/flink-conf.yaml
具体设置如下:
high-availability:zookeeper
#zookeeper节点地址,如果是多节点的话“,”逗号隔开
high-availability.zookeeper.quorum:master:2181 ,slave1:2181,slave2:2181
#ZooKeeper 节点根目录,其下放置所有集群节点的 namespace
high-availability.zookeeper.path.root:/flink
#ZooKeeper 节点集群 id,其中放置了集群所需的所有协调数据
high-availability.cluster-id:/cluster_one
# 建议指定 hdfs 的全路径。如果某个 flink 节点没有配置 hdfs 的话,不指定全路径无法识别 #storageDir 存储了恢复
JobManager 所需的所有元数据。
highavailability.storageDir:hdfs://master:9000/flink/ha
- List item
.把master上配置好的flink安装目录拷贝到其他节点
scp -rq flink-1.4.2 root@slave1:/usr/local
scp -rq flink-1.4.2 root@slave2:/usr/local
-
启动集群
#【先启动 zk 服务】bin/zkServer.sh start
#【再启动 hadoop 服务】
sbin/start-all.sh
#启动 flinkstandaloneHA 集群,在 master 节点上启动如下命令(进入到flink安装目录下)】
bin/start-cluster.sh
#【jps查看进程】
master
slave1
slave2
#【查看web界面】
因为 jobmanager 节点都会启动 web 服务,也可以通过 web 界面进行验证 访问 http://master:8081/#/jobmanager/config 发现以下信息:
(注意:此时就算是访问 master:8081 也会跳转回 master :8081 因为现在 master 是 active 的 jobmanager。从下图中也可以看出,点击 jobmanager 查看,显示哪个节点,就 表示哪个节点现在是 active 的。)
*如果没有添加主机映射,需要直接输入ip地址如(master的主机ip是:192.168.56.101):
http://192.168.56.101:8081/#/jobmanager/config
3.验证HA切换
master 节点上的 jobmanager 进程被手工 kill 掉了,然后 master上的 jobmanager 会 自动切换为 active,中间需要有一个时间差,稍微等一下 访问 http://master:8081/#/jobmanager/config 如果可以正常访问并且能看到 jobmanager 的信息变为 master,则表示 jobmanager 节点 切换成功
[root@master flink-1.6.1]# jps
2464 QuorumPeerMain
2969 ResourceManager
3946 StandaloneSessionClusterEntrypoint
2813 SecondaryNameNode
2622 NameNode
4014 Jps
[root@master flink-1.6.1]# kill 3946
访问http://slave1:8081/#/jobmanager/config发现slave1变成了jobmanager
进入到master下的flink安装目录下重新启动之前kill掉的jobmanager
bin/jobmanager.shstart
这个节点重启启动之后,就变为 standby 了。slave1 还是 active