2021年大数据Flink(五):Standalone-HA高可用集群模式

举报
Lansonli 发表于 2021/09/29 01:14:38 2021/09/29
【摘要】 目录 Standalone-HA高可用集群模式 原理 操作 1.集群规划 2.启动ZooKeeper 3.启动HDFS 4.停止Flink集群 5.修改flink-conf.yaml 6.修改masters 7.同步 8.修改node2上的flink-conf.yaml 9.重新启动Flink集群,node1上执...

目录

Standalone-HA高可用集群模式

原理

操作

1.集群规划

2.启动ZooKeeper

3.启动HDFS

4.停止Flink集群

5.修改flink-conf.yaml

6.修改masters

7.同步

8.修改node2上的flink-conf.yaml

9.重新启动Flink集群,node1上执行

10.使用jps命令查看

11.查看日志

12.下载jar包并在Flink的lib目录下放入该jar包并分发使Flink能够支持对Hadoop的操作

13.重新启动Flink集群,node1上执行

14.使用jps命令查看,发现三台机器已经ok

​​​​​​​测试

1.访问WebUI

2.执行wc

3.kill掉其中一个master

4.重新执行wc,还是可以正常执行

5.停止集群


Standalone-HA高可用集群模式

原理

 

 

从之前的架构中我们可以很明显的发现 JobManager 有明显的单点问题(SPOF,single point of failure)。JobManager 肩负着任务调度以及资源分配,一旦 JobManager 出现意外,其后果可想而知。

在 Zookeeper 的帮助下,一个 Standalone的Flink集群会同时有多个活着的 JobManager,其中只有一个处于工作状态,其他处于 Standby 状态。当工作中的 JobManager 失去连接后(如宕机或 Crash),Zookeeper 会从 Standby 中选一个新的 JobManager 来接管 Flink 集群。

 

​​​​​​​操作

1.集群规划

  • - 服务器: node1(Master + Slave): JobManager + TaskManager
  • - 服务器: node2(Master + Slave): JobManager + TaskManager
  • - 服务器: node3(Slave): TaskManager

 

2.启动ZooKeeper


  
  1. zkServer.sh status
  2. zkServer.sh stop
  3. zkServer.sh start

 

3.启动HDFS

/export/serves/hadoop/sbin/start-dfs.sh
 

 

4.停止Flink集群

/export/server/flink/bin/stop-cluster.sh
 

 

5.修改flink-conf.yaml

vim /export/server/flink/conf/flink-conf.yaml
 

增加如下内容G


  
  1. state.backend: filesystem
  2. state.backend.fs.checkpointdir: hdfs://node1:8020/flink-checkpoints
  3. high-availability: zookeeper
  4. high-availability.storageDir: hdfs://node1:8020/flink/ha/
  5. high-availability.zookeeper.quorum: node1:2181,node2:2181,node3:2181

 

配置解释


  
  1. #开启HA,使用文件系统作为快照存储
  2. state.backend: filesystem
  3. #启用检查点,可以将快照保存到HDFS
  4. state.backend.fs.checkpointdir: hdfs://node1:8020/flink-checkpoints
  5. #使用zookeeper搭建高可用
  6. high-availability: zookeeper
  7. # 存储JobManager的元数据到HDFS
  8. high-availability.storageDir: hdfs://node1:8020/flink/ha/
  9. # 配置ZK集群地址
  10. high-availability.zookeeper.quorum: node1:2181,node2:2181,node3:2181

6.修改masters

vim /export/server/flink/conf/masters
 

  
  1. node1:8081
  2. node2:8081

7.同步


  
  1. scp -r /export/server/flink/conf/flink-conf.yaml node2:/export/server/flink/conf/
  2. scp -r /export/server/flink/conf/flink-conf.yaml node3:/export/server/flink/conf/
  3. scp -r /export/server/flink/conf/masters node2:/export/server/flink/conf/
  4. scp -r /export/server/flink/conf/masters node3:/export/server/flink/conf/

 

8.修改node2上的flink-conf.yaml

vim /export/server/flink/conf/flink-conf.yaml
 
jobmanager.rpc.address: node2
 

 

9.重新启动Flink集群,node1上执行


  
  1. /export/server/flink/bin/stop-cluster.sh
  2. /export/server/flink/bin/start-cluster.sh

 

10.使用jps命令查看

发现没有Flink相关进程被启动

 

11.查看日志

cat /export/server/flink/log/flink-root-standalonesession-0-node1.log

发现如下错误

 

因为在Flink1.8版本后,Flink官方提供的安装包里没有整合HDFS的jar

 

12.下载jar包并在Flink的lib目录下放入该jar包并分发使Flink能够支持对Hadoop的操作

下载地址

https://flink.apache.org/downloads.html

 

 

放入lib目录

cd /export/server/flink/lib
 

 

分发

for i in {2..3}; do scp -r flink-shaded-hadoop-2-uber-2.7.5-10.0.jar node$i:$PWD; done
 

13.重新启动Flink集群,node1上执行

/export/server/flink/bin/start-cluster.sh
 

 

14.使用jps命令查看,发现三台机器已经ok

 

 

 

​​​​​​​测试

1.访问WebUI

http://node1:8081/#/job-manager/config

http://node2:8081/#/job-manager/config

 

2.执行wc

/export/server/flink/bin/flink run  /export/server/flink/examples/batch/WordCount.jar
 

3.kill掉其中一个master

 

4.重新执行wc,还是可以正常执行

/export/server/flink/bin/flink run  /export/server/flink/examples/batch/WordCount.jar
 

5.停止集群

/export/server/flink/bin/stop-cluster.sh
 

 

文章来源: lansonli.blog.csdn.net,作者:Lansonli,版权归原作者所有,如需转载,请联系作者。

原文链接:lansonli.blog.csdn.net/article/details/116110052

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。