Flink Standalone 集群 HA 配置

1. HA 集群环境规划 使用三台节点实现两主两从集群(由于笔记本性能限制,不能开启太多虚拟机,其实使用三 台和四台机器在安装配置上没有本质区别) Jobmanager:hadoop100hadoop101【一个 active,一个 standby】 Taskmanager:hadoop101hadoop102 zookeeper:hadoop100【建议使用外置 zk 集群,在这里我使用单节点 zk 来代替】
注意: 要启用 JobManager 高可用性,必须将高可用性模式设置为 zookeeper, 配置一个 ZooKeeper quorum,并配置一个 masters 文件 存储所有 JobManagerhostname 及其 WebUI 端口号。
Flink 利用 ZooKeeper 实现运行中的 JobManager 节点之间的分布式协调。ZooKeeper 是独立 于 Flink 的服务,它通过领导选举制和轻量级状态一致性存储来提供高度可靠的分布式协调。
2. 开始配置+启动 集群内所有节点的配置都一样,所以先从第一台机器 hadoop100 开始配置 sshhadoop100 #首先按照之前配置 standalone 的参数进行修改 viconf/flink-conf.yaml jobmanager.rpc.address:hadoop100
viconf/slaves hadoop101 hadoop102
# 然后修改配置 HA 需要的参数 viconf/masters
hadoop100:8081 hadoop101:8081
viconf/flink-conf.yaml high-availability:zookeeper high-availability.zookeeper.quorum:hadoop100:2181 #ZooKeeper 节点根目录,其下放置所有集群节点的 namespace high-availability.zookeeper.path.root:/flink #ZooKeeper 节点集群 id,其中放置了集群所需的所有协调数据 high-availability.cluster-id:/cluster_one # 建议指定 hdfs 的全路径。如果某个 flink 节点没有配置 hdfs 的话,不指定全路径无法识别 #storageDir 存储了恢复一个 JobManager 所需的所有元数据。 high-availability.storageDir:hdfs://hadoop100:9000/flink/ha
# 把 hadoop100 节点上修改好配置的 flink 安装目录拷贝到其他节点 cd/data/soft/ scp-rqflink-1.4.2hadoop101:/data/soft scp-rqflink-1.4.2hadoop102:/data/soft
# 【先启动 hadoop 服务】 sbin/start-all.sh # 【先启动 zk 服务】 bin/zkServer.shstart # 启动 flinkstandaloneHA 集群,在 hadoop100 节点上启动如下命令 bin/start-cluster.sh
# 启动之后会显示如下日志信息 StartingHAclusterwith2masters. Startingstandalonesessiondaemononhosthadoop100. Startingstandalonesessiondaemononhosthadoop101. Startingtaskexecutordaemononhosthadoop101. Startingtaskexecutordaemononhosthadoop102.
3. 验证 HA 集群进程 查看机器进程会发现如下情况【此处只列出 flink 自身的进程信息,不包含 zk,hadoop 进程 信息】 登录 hadoop100 节点 执行 jps: 20159StandaloneSessionClusterEntrypoint
登录 hadoop101 节点 执行 jps: 7795StandaloneSessionClusterEntrypoint
8156TaskManagerRunner
登录 hadoop102 节点 执行 jps: 5046TaskManagerRunner
因为 jobmanager 节点都会启动 web 服务,也可以通过 web 界面进行验证 访问 http://hadoop100:8081/#/jobmanager/config 发现以下信息: 注意:此时就算是访问 hadoop101:8081 也会跳转回 hadoop100:8081 因为现在 hadoop100 是 active 的 jobmanager。从下图中也可以看出,点击 jobmanager 查看,显示哪个节点,就 表示哪个节点现在是 active 的。
4. 模拟 jobmanager 进程挂掉 现在 hadoop100 节点上的 jobmanager 是 active 的。我们手工把这个进程 kill 掉,模拟进程 挂掉的情况,来验证hadoop101上的standby状态的jobmanager是否可以正常切换到active。 sshhadoop100 执行 jps: 20159StandaloneSessionClusterEntrypoint
kill20159
5. 验证 HA 切换 hadoop100 节点上的 jobmanager 进程被手工 kill 掉了,然后 hadoop101 上的 jobmanager 会 自动切换为 active,中间需要有一个时间差,稍微等一下 访问 http://hadoop101:8081/#/jobmanager/config 如果可以正常访问并且能看到 jobmanager 的信息变为 hadoop101,则表示 jobmanager 节点 切换成功
6. 重启之前 kill 掉的 jobmanager 进入到 hadoop100 机器 sshhadoop100 执行下面命令启动 jobmanager bin/jobmanager.shstart
启动成功之后,可以访问 http://hadoop100:8081/#/jobmanager/config 这个节点重启启动之后,就变为 standby 了。hadoop101 还是 active。

Flink on yarn 集群 HA 配置

1. HA 集群环境规划 flinkonyarn 的 HA 其实是利用 yarn 自己的恢复机制。
在这需要用到 zk,主要是因为虽然 flink-on-yarnclusterHA 依赖于 Yarn 自己的集群机制,但 是 FlinkJob 在恢复时,需要依赖检查点产生的快照,而这些快照虽然配置在 hdfs,但是其元 数据信息保存在 zookeeper 中,所以我们还要配置 zookeeper 的信息
hadoop 搭建的集群,在 hadoop100,hadoop101,hadoop102 节点上面【flinkon yarn 使用 伪分布 hadoop 集群和真正分布式 hadoop 集群,在操作上没有区别】 zookeeper 服务也在 hadoop100 节点上
2. 开始配置+启动 主要在 hadoop100 这个节点上配置即可
首先需要修改 hadoop 中 yarn-site.xml 中的配置,设置提交应用程序的最大尝试次数 <property> <name>yarn.resourcemanager.am.max-attempts</name> <value>4</value> <description> Themaximumnumberofapplicationmasterexecutionattempts. </description> </property>
# 把修改后的配置文件同步到 hadoop 集群的其他节点 scp-rqetc/hadoop/yarn-site.xml hadoop101:/data/soft/hadoop-2.7.5/etc/hadoop/ scp-rqetc/hadoop/yarn-site.xml hadoop102:/data/soft/hadoop-2.7.5/etc/hadoop/
然后修改 flink 部分相关配置 可以解压一份新的 flink-1.6.1 安装包 tar-zxvfflink-1.6.1-bin-hadoop27-scala_2.11.tgz
修改配置文件【标红的目录名称建议和 standaloneHA 中的配置区分开】 viconf/flink-conf.yaml high-availability:zookeeper high-availability.zookeeper.quorum:hadoop100:2181 high-availability.storageDir:hdfs://hadoop100:9000/flink/ha-yarn high-availability.zookeeper.path.root:/flink-yarn yarn.application-attempts:10
3. 启动 flinkonyarn,测试 HA 先启动 hadoop100 上的 zookeeper 和 hadoop bin/zkServer.shstart sbin/start-all.sh
在 hadoop100 上启动 Flink 集群 cd/data/soft/flink-1.6.1 bin/yarn-session.sh-n2
到 resoucemanager 的 web 界面上查看对应的 flink 集群在哪个节点上
jobmanager 进程就在对应的节点的(YarnSessionClusterEntrypoint)进程里面
所以想要测试 jobmanager 的 HA 情况,只需要拿 YarnSessionClusterEntrypoint 这个进程进行 测试即可。
执行下面命令手工模拟 kill 掉 jobmanager(YarnSessionClusterEntrypoint)、 sshhadoop102 jps 5325YarnSessionClusterEntrypoint
kill5325
然后去 yarn 的 web 界面进行查看:
发现这个程序的 AttemptId 变为 00002 了
如果想查看 jobmanager 的 webui 界面可以点击下面链接:
注意:针对上面配置文件中的一些配置参数的详细介绍信息可以参考此文章 https://blog.csdn.net/xu470438000/article/details/79633824 但是需要注意一点,此链接文章中使用的 flink 版本是 1.4.2。我们本课程中使用的 flink 版本 是 1.6.1,这两个版本中的一些参数名称会有细微不同。但是参数的含义基本没有什么变化。

flink两种安装方式的更多相关文章

  1. wdcp支持两种安装方式

    v3.2版本已发布,支持多PHP版本共存共用,支持SSL证书,更多可看论坛 v3版讨论区 更多安装说明请看 http://www.wdlinux.cn/bbs/thread-57643-1-1.htm ...

  2. Linux 下wdcp支持两种安装方式

    wdcp支持两种安装方式1 源码编译 此安装比较麻烦和耗时,一般是20分钟至一个小时不等,具体视机器配置情况而定2 RPM包安装 简单快速,下载快的话,几分钟就可以完成源码安装(ssh登录服务器,执行 ...

  3. ZendFramework 两种安装方式

    1. 在线安装(基于composer) Zend 应用程序骨架 GitHub 地址: https://github.com/zendframework/ZendSkeletonApplication ...

  4. eclipse中testNG的两种安装方式

    今天给大家带来两种关于testNG中的安装方式:1.在线安装(本人亲测有效!!!)2.离线安装 一.在线安装testNG插件的步骤: 1.给大家提供一个testNG在线的安装的地址:http://dl ...

  5. Windows下Yii2框架的两种安装方式及升级最新版

    第一种:归档文件形式安装(适合于没有安装composer的机器) 进入下载页https://www.yiiframework.com/download,选择下载第一个 下载完成之后是一个压缩包,解压文 ...

  6. MY SQL 两种安装方式

    MySQL基础知识-安装MySQL   前导: 昨天去参加了一个面试,公司不太大,是一家日资企业,在国内有几家分公司,面试官问到了MySQL的基本操作和性能优化,说了一大堆,倒是比较轻松的过了,但是面 ...

  7. struts2+spring的两种整合方式

    也许有些人会因为学习了struts1,会以为struts2.struts1与spring的整合也是一样的,其实这两者相差甚远.下面就来讲解一下struts2与spring的整合两种方案.(部分转载,里 ...

  8. Windows校验文件哈希hash的两种常用方式

    大家经常都到哪儿去下载软件和应用程序呢?有没想过下载回来的软件.应用程序或资源是否安全呢?在 Windows 10 和 Office 2016 发布当初,很多没权限的朋友都使用第三方网站去下载安装映像 ...

  9. Adobe Acrobat XI Pro 两种破解方式 Keygen秘钥 license替换 亲测有效

    大家平时看paper比较多的话想必都是用Adobe Acrobat而非Adobe Reader吧,其功能全面之处就不啰嗦了,下面给大家分享下Adobe Acrobat XI Pro的两种破解方式(两种 ...

随机推荐

  1. C到汇编[1]

    这篇文字解释这个问题:C语言函数调用在汇编语言是怎么实现的?栈模型很好的满足了函数调用的需求,以最简单的函数调用说明. : int add2(int a, int b){return a+b;} 00 ...

  2. shell 重定向0,1,2

    .1和2分别表示标准输入.标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出,比如 >a.txt 表示将错误信息输出到文件a.txt中. #将1,2输出转发给/dev/null设 ...

  3. C语言问答九问

    C语言问题观: 一.环境搭建问题:linux,(可以是w10下linux子系统):vim(notepad++),gcc编译器,gdb调试器,make自动编译工具,ddd分析工具和valgrind分析工 ...

  4. Linux下 Java 读取文件路径

    一般文件路径在windows中用 \ 表示,但是在其他系统平台下比如linux中就不是 \ 所以java给我们提供了一个与平台无关的表示路径的常量 File.separator在windows中则表示 ...

  5. MySql的Linux版安装

    1,官网下载MySql的Linux版: 下载地址:http://dev.mysql.com//downloads/mysql/ 2.上传到Linux服务器,建议放在/opt/目录下 3.检查当前系统是 ...

  6. Kafka - SASL认证

    kafka SASL认证配置 1.找到kafka安装根目录,在config文件夹下创建kafka_server_jaas.conf,写入 KafkaServer { org.apache.kafka. ...

  7. Flume-自定义 Sink

    Sink 不断地轮询 Channel 中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统.或者被发送到另一个 Flume Agent. Sink 是完全事务性的. 在从 Channel 批 ...

  8. PHP学习之文件上传类

    <?php $up = new Upload(); $newPath = $up->uploadFile('fm'); if ($newPath === false) { var_dump ...

  9. IP拨号器

    是一个最终的接收者 package com.example.ip; import android.content.BroadcastReceiver; import android.content.C ...

  10. python连接mysql数据库(MySQL)

    在介绍python在数据库中的操作之前先简单介绍点mysql中的操作语言: [root@elk-server --]# mysql -u root -p Enter password: Welcome ...