zoukankan      html  css  js  c++  java
  • Flink HA 搭建坑

    目前网上能找到的做HA的教程基本都无法真正做到多机高可用,包括官方文档,经过很久的折腾,终于做到了多机高可用,希望其它人不再被坑。

    集群模式安装

    前提条件:

    • 机器已经安装好Java环境

    • jobManager到taskManager的机器做ssh免密登录(非必须)

    以下操作都是直接使用的机器名,并保证可访问(/etc/hosts里配置)

    standalone模式

    该格式下一个master, 多个worker。

    如下使用了三台机器,其中一台名为flink-master,另两台分别为:flink-slave1flink-slave2

    修改flink配置flink-conf.yaml,更改其jobmanager.rpc.address地址如下:

    
    jobmanager.rpc.address: flink-master
    
    

    然后修改其conf/slaves文件内容如下:

    
    flink-slave1
    
    flink-slave2
    
    

    把该文件打包并上传至这三台机器,在master机器上启动:bin/start-cluster.sh start

    在另外两台slave机器上分别执行: bin/taskmanager.sh start

    ha模式

    官方文档中的高可用只是针对localhost做的,是伪高可用,并且说明不细,真正在使用多机做高可用时无效,按官方说明无法搭建成功

    前置条件:

    • java

    • 高可用数据的存储:在此使用的hadoop,其支持多种,如HDFS, S3, Ceph, nfs等

    • 机器准备:在此准备了三台机器,分别为flink-master1,flink-master2,flinkslave1.

    • 在三台机器上都安装好flink

    环境说明:

    1. flink-master1:只运行JobManager

    2. flink-master2:只运行JobManager

    3. flink-slave1:只运行TaskManager

    配置步骤:

    1.修改conf/flink-yaml.conf,内容如下:

    (master1上的配置文件)jobmanager.rpc.address: flink-master1
    (master2上的配置文件)jobmanager.rpc.address: flink-master2

    2,其他taskmanager 节点上关闭1 中的配置 (加 # 号即可)
    #jobmanager.rpc.address: 。。。。。。。。
    
    

    3.修改conf/flink-conf.yaml,其内容如下:

    以下为必须要配置的内容:

    
    high-availability: zookeeper
    
    high-availability.storageDir: hdfs://192.168.0.15:9000/flink/ha/
    
    high-availability.zookeeper.quorum: 192.168.0.15:2181
    
    
    • high-availability: 高可用模式,必须为zookeeper

    • high-availability.storageDir: JobManager的元数据持久化保存的位置

    • high-availability.zookeeper.quorum: zk集群地址,在此我使用已有的zk,没有使用自带的

    以下两项为建议配置项,根据需要配置:

    • high-availability.zookeeper.path.root: /flink

    • high-availability.cluster-id: /default_ns,该选项只有在有多个flink集群并共用同一个zk集群时才需要,否则其默认为default

    4.把以上配置同步到三台机器的flink的conf目录下。

    5.重要,官网坑就在此:修改flink-master机器的flink-conf.yaml中的jobmanager.rpc.address地址为flink-master, 修改flink-slave1机器的flink-conf.yaml的jobmanager.rpc.address地址为flink-slave1如果不修改,会导致JobManager启动成功,但TaskManager无法连接到JobManager,其官方文档里面并没有修改,目前查看网上所有资料也没有人建议更改此配置,经查看其zookeeper中/flink/default/leader/resource_manager_lock节点值,发现配置不对,确定到JobManager注册的地址不对,其配置文档中说明也有问题,经尝试,发现需要修改该地址为每台JobManager自己机器地址即可

    6.在flink-master1机器的flink/bin目录下执行:jobmanager.sh start 。然后在 master2 再同样启动 jobmanager ,, 最后再启动 所有的taskmanager 。

    7.输入相应地址后(http://flink-master1:8081)后,界面如下:

     
    image.png

    这时如果停掉一个JobManager,另一个会生效(需要等一会,待其检测到并初始化JobManager的元数据后才能看到),输入另一机器的web地址,也会自动跳转到为leader的机器。

    经过测试,在 1.7.2 版本,在无任务运行的情况下HA 切换无问题。在有任务运行的情况下 jobmanager 切换有问题,问题还比较严重。后续。继续研究。

  • 相关阅读:
    开源推荐 | 可实现门禁、AI测温敏捷开发的人脸识别应用套件
    如何快速实现人脸识别通道?一文了解具体技巧
    虹软人脸识别——官方 Qt Demo 移植到 Linux
    人脸识别Demo解析C#
    智东西公开课干货盘点 | 全方位解析人脸识别商用落地
    智东西公开课 | 虹软带你读懂人脸识别商用那些事【第二期】
    虹软人脸识别
    虹软AI 人脸识别SDK接入 — 参数优化篇
    虹软2.0版本离线人脸识别C#类库分享
    虹软人脸识别Android Sample Code
  • 原文地址:https://www.cnblogs.com/hit-zb/p/9604067.html
Copyright © 2011-2022 走看看