目前网上能找到的做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 切换有问题,问题还比较严重。后续。继续研究。

Flink HA 搭建坑的更多相关文章

  1. Flink HA

    standalone 模式的高可用 部署 flink 使用zookeeper协调多个运行的jobmanager,所以要启用flink HA 你需要把高可用模式设置成zookeeper,配置zookee ...

  2. Spark集群基于Zookeeper的HA搭建部署笔记(转)

    原文链接:Spark集群基于Zookeeper的HA搭建部署笔记 1.环境介绍 (1)操作系统RHEL6.2-64 (2)两个节点:spark1(192.168.232.147),spark2(192 ...

  3. HBase HA + Hadoop HA 搭建

    HBase 使用的是 1.2.9 的版本.  Hadoop HA 的搭建见我的另外一篇:Hadoop 2.7.3 HA 搭建及遇到的一些问题 以下目录均为 HBase 解压后的目录. 1. 修改 co ...

  4. hadoop HA + HBase HA搭建:

    hadoop HA搭建参考:https://www.cnblogs.com/NGames/p/11083640.html (本节:用不到YARN 所以可以不用考虑部署YARN部分) Hadoop 使用 ...

  5. Spark HA搭建

    正文 下载Spark版本,这版本又要求必须和jdk与hadoop版本对应. http://spark.apache.org/downloads.html tar -zxvf 解压到指定目录,进入con ...

  6. Flink源码学习笔记(3)了解Flink HA功能的实现

    使用Flink HA功能维护JobManager中组件的生命周期,可以有效的避免因为JobManager 进程失败导致任务无法恢复的情况. 接下来分享下 Flink HA功能的实现 大纲 基于Zook ...

  7. yarn上运行flink环境搭建

    主要完成hadoop集群搭建和yarn上运行flink 1.搭建hadoop伪集群 主要是搭建hadoop MapReduce(yarn)和HDFS 1.1 下载&配置环境变量 这里下载的ha ...

  8. flink ha zk集群迁移实践

    flink为了保证线上作业的可用性,提供了ha机制,如果发现线上作业失败,则通过ha中存储的信息来实现作业的重新拉起. 我们在flink的线上环境使用了zk为flink的ha提供服务,但在初期,由于资 ...

  9. Docker安装flink及避坑指南

    Docker安装flink 导航 无处不在的大数据 安装flink 拉取flink镜像 编写docker-compose.yml 生成启动 查看安装效果 常见坑及解决方案 问题1 问题2 参考   本 ...

随机推荐

  1. PHP——敏感词过滤

    前言 如果可以用第三方的话,那么你是幸运的,因为现在这种敏感词过滤,敏感图片,敏感语音过滤的第三方服务还是挺多的 敏感词过滤 核心代码 利用PHP内置的三个函数 array_combine() | a ...

  2. Katu Puzzle POJ - 3678(水2 - sat)

    题意: 有n个未知量,m对未知量之间的关系,判断是否能求出所有的未知量且满足这些关系 解析: 关系建边就好了 #include <iostream> #include <cstdio ...

  3. 【XSY2679】修墙 最短路

    题目描述 有一个\((n+1)\times (m+1)\)的网格,每条边都有一个边权.有一些格子是城市.你要用一个环圈住所有城市,要求环上所有边的边权和最小.重合的边边权算多次.保证左上角\((1,1 ...

  4. Nagios 监控 Mysql

    被监控机的Mysql监控创建专用数据库.专用数据库账户mysql -uroot -pcreate database nagios_monitor;grant select on nagios_moni ...

  5. Outsider(HNOI2019)

    这不是一篇退役记,因为NOIP2018之后就写完了. Day-1 清明时节雨纷纷. 最后的时光,应该是怎么样的呢? 是像水滴一样,悄无声息地从指缝中溜走 还是如火焰一般,燃烧着最后的留恋? 晚上一直在 ...

  6. Hdoj 1248.寒冰王座 题解

    Problem Description 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店前. 死亡 ...

  7. linux中shell脚本引用另一shell脚本

    调用有三种方法: 1.fork:不同的shell,调用后返回父shell,子shell从父shell中继承变量,但子shell的变量不会带回父shell,直接用path/to/file.sh调用: 2 ...

  8. rt-thread之 for (fn_ptr = &__rt_init_rti_board_start; fn_ptr < &__rt_init_rti_board_end; fn_ptr++) 理解

    @2019-01-30 [小记] 利用宏 INIT_EXPORT() --- __attribute__() 将函数重新放置在自定义段,执行时去该段获取函数地址 RT-Thread 的 INIT_BO ...

  9. 【dfs】LETTERS

    1212:LETTERS [题目描述] 给出一个roe×colroe×col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母.问最多可以经过几个字母. [ ...

  10. [ZJOI2016]小星星&[SHOI2016]黑暗前的幻想乡(容斥)

    这两道题思路比较像,所以把他们放到一块. [ZJOI2016]小星星 题目描述 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有n颗小星星,用m条彩色的细线串了起来,每条细线连着两颗小星星. ...