一、flink在standalone模式主节点下有HA的部署实战

当Flink程序运行时,如果jobmanager崩溃,那么整个程序都会失败。为了防止jobmanager的单点故障,
借助于zookeeper的协调机制,可以实现jobmanager的HA配置—-1主(leader)多从(standby)。
这里的HA配置只涉及standalone模式,yarn模式暂不考虑。

flink添加hadoop依赖 flink hadoop 配置_数据

注意:
1.由于flink jobmanager的HA配置依赖 zookeeper,因此要先配置并启动zookeeper集群
2.由于flink的HA模式下的state backend在要依赖hdfs,因此要先配置并启动Hadoop集群

1.部署规划

flink添加hadoop依赖 flink hadoop 配置_数据_02

2.配置flink-conf.yaml文件

执行命令:

vim ${FLINK_HOME}/conf/flink-conf.yaml

配置内容:

在flink-conf.yaml文件中进行一些基本的配置,本此要修改的内容如下。  

1.jobmanager端口
    jobmanager.web.port: 8085
    spark有个端口已经占用了8081,如果要和spark部署到同一个集群中,应当防止端口冲突
1.jobmanager地址
    注释jobmanager.rpc.address:flink配置项
    HA模式下,jobmanager不需要指定,在master file中配置,由zookeeper选出leader与standby。

2.checkpoints目录
    检查点生成的分布式快照的保存地点,默认是jobmanager的memory,但是HA模式必须配置在hdfs上,
    且保存路径需要在hdfs上创建并指定路径
    state.backend: filesystem
    state.backend.fs.checkpointdir: hdfs:///flink-metadata/checkpoints

3.hadoopconf路径:
    指定hadoop conf路径,这里需要告诉Flink,hadoop配置的路径,否则会报错
    fs.hdfs.hadoopconf: $HADOOP_HOME/etc/hadoop

4.zookeeper信息
    recovery.mode: zookeeper
    recovery.zookeeper.quorum: qingcheng11:2181,qingcheng12:2181,qingcheng13:2181
    recovery.zookeeper.storageDir: hdfs:///flink-metadata/recovery
    recovery.zookeeper.path.root: /flink001
    recovery.zookeeper.path.namespace: /flink001

    配置项说明:
    storageDir存储jobmanager的元数据信息,包括用于恢复的信息;
    recovery.zookeeper.path.root代表zookeeper中节点信息;
    recovery.zookeeper.path.namespace,如果Flink集群有不止一个,那么这个值需要指定,不能用默认的名字。

3.配置masters文件

执行命令:

vim ${FLINK_HOME}/conf/masters

配置内容:

qingcheng11:8085
qingcheng12:8085
qingcheng13:8085

注意:
spark有个端口已经占用了8081,如果要和spark部署到同一个集群中,应当防止端口冲突

4.分发配置文件

scp -r ${FLINK_HOME}/conf/*  qingcheng12:${FLINK_HOME}/conf/
scp -r ${FLINK_HOME}/conf/*  qingcheng13:${FLINK_HOME}/conf/

5.重启flink集群

执行命令:

1.关闭集群
    ${FLINK_HOME}/bin/stop-cluster.sh    
2.启动集群
    ${FLINK_HOME}/bin/start-cluster.sh 
3.启动web客户端
    ${FLINK_HOME}/bin/webclient.sh start

执行效果:

flink添加hadoop依赖 flink hadoop 配置_apache_03

http://192.168.0.11:8085

选举过程中的效果:

Service temporarily unavailable due to an ongoing leader election. Please refresh.

选举成功后的效果:

flink添加hadoop依赖 flink hadoop 配置_zookeeper_04

重启后的flink集群会进行主节点选举,本次使用选举结果是qingcheng13作为active jobmanager