Flink6:Standalone HA 模式

Flink6:Standalone HA 模式

环境准备

JobManager单节点必然会有单节点故障问题的产生,所以我们可以在StandAlone模式下,借助于Zookeeper,将我们的JobManager实现成为高可用的模式,使用Hadoop Hdfs存储文件。
  • Java
  • Hadoop
  • Zookeeper
  • Flink

我的配置

机器
zookeeper:2181
Hadoop HDFS
Hadoop YARN
Flink
redis01
leader
NameNode、SecondaryNameNode、DataNode
NodeManager、ResourceManager
JobManager、TaskManager
redis02
follower
DataNode
NodeManager
JobManager、TaskManager
redis03
follower
DataNode
NodeManager
TaskManager
notion image

修改配置

  1. redis01执行以下命令修改Flink的配置文件 redis01修改flink-conf.yaml配置文件
root@redis01:/usr/local/flink-standalone/conf# vim flink-conf.yaml
jobmanager.rpc.address: redis01 high-availability: zookeeper high-availability.storageDir: hdfs://redis01:8020/flink high-availability.zookeeper.path.root: /flink high-availability.zookeeper.quorum: redis01:2181,redis02:2181,redis03:2181
notion image
  1. redis01执行以下命令修改master配置文件
# 切换到配置目录 cd /usr/local/flink-standalone/conf # 修复主节点 vim masters redis01:8081 redis02:8081
  1. redis01 执行以下命令修改slaves配置文件
  1. 修改workers文件
# 切换到配置目录 cd /usr/local/flink-standalone/conf # 修复节点 vim workers redis01 redis02 redis03

HDFS创建文件夹

hdfs上面创建flink对应的文件夹
root@redis01:/usr/local/hadoop/bin# hdfs dfs -mkdir -p /flink

下载Flink-Hadoop的包

notion image
  • 下载好放入/usrl/local/flink-standalone/lib目录下
notion image

分发配置文件

将redis01服务器修改后的配置文件拷贝到其他服务器上面去, redis01执行以下命令拷贝配置文件
root@redis01:/usr/local/flink-standalone/conf# xsync flink-conf.yaml root@redis01:/usr/local/flink-standalone/conf# xsync masters root@redis01:/usr/local/flink-standalone/conf# xsync workers root@redis01:/usr/local/flink-standalone/lib# xsync flink-shaded-hadoop-2-uber-2.8.3-10.0.jar

启动Flink集群

启动顺序:先启动Zookeeper和HDFS,再启动Flink。
root@redis01:/usr/local/flink-standalone# ./bin/start-cluster.sh
notion image
notion image

页面访问

notion image
访问:http://redis02:8081 ,redis02的web界面一直提示错误。因为此时,我们的redis01服务器才是真正的active状态的节点.
notion image

模拟故障宕机实现自动切换

将redis01服务器的jobManager进程杀死,然后过一段时间之后查看redis02的jobManager是否能够访问。
notion image
sudo kill 235177
notion image
访问:http://redis02:8081 ,可以正常访问了。
notion image

StandAlone HA模式下提交任务

在HA这种模式下,提交任务与standAlone单节点模式提交任务是一样的,即使JobManager服务器宕机了也没有关系,会自动进行切换 redis01执行以下命令启动socket服务,输入单词。
root@redis01:/usr/local/flink-standalone# nc -lk 9000
notion image
root@redis01:/usr/local/flink-standalone# ./bin/flink run examples/streaming/SocketWindowWordCount.jar --hostname redis01 --port 9000
notion image
  1. redis02服务器执行以下命令查看统计结果
root@redis02:/usr/local/flink-standalone/log# tail -200f flink-root-taskexecutor-4-redis02.out
 
notion image
notion image
 

停止

root@redis01:/usr/local/flink-standalone# ./bin/stop-cluster.sh