Standalone Cluster HA

前面我们配置的 Standalone 集群实际上只有一个 JobManager,此时是存在单点故障的,所以官方提供了 Standalone Cluster HA 模式来实现集群高可用。

1. 前置条件

在 Standalone Cluster HA 模式下,集群可以由多个 JobManager,但只有一个处于 active 状态,其余的则处于备用状态,Flink 使用 ZooKeeper 来选举出 Active JobManager,并依赖其来提供一致性协调服务,所以需要预先安装 ZooKeeper 。

另外在高可用模式下,还需要使用分布式文件系统来持久化存储 JobManager 的元数据,最常用的就是 HDFS,所以 Hadoop 也需要预先安装。

使用该模式前,需要确保所有服务器间都已经配置好 SSH 免密登录服务。这里我以三台服务器为例,hadoop001,hadoop002,hadoop003。

2. 搭建步骤

角色分配:

主机名 master worker 进程名
hadoop001 StandaloneSessionClusterEntrypoint、TaskManagerRunner
hadoop002 StandaloneSessionClusterEntrypoint、TaskManagerRunner
hadoop003 TaskManagerRunner

Flink 所有版本的安装包可以直接从其官网进行下载,这里我下载的 Flink 的版本为 1.12.4,要求的 JDK 版本为 1.8.x +。 下载后解压到指定目录:

tar -zxvf flink-1.12.4-bin-scala_2.11.tgz -C /usr/apps

修改 conf/masters 文件,将 hadoop001 和 hadoop002 都配置为 master 节点:

hadoop001:8081
hadoop002:8081

修改 conf/workers文件,将hadoop001、hadoop002和hadoop003配置为workers节点:

hadoop001
hadoop002
hadoop003

修改 conf/flink-conf.yaml 文件,增加如下配置:

//配置参数本机名
jobmanager.rpc.address: hadoop001
# 配置使用zookeeper来开启高可用模式
high-availability: zookeeper
# 配置zookeeper的地址,采用zookeeper集群时,可以使用逗号来分隔多个节点地址
high-availability.zookeeper.quorum: hadoop001:2181,hadoop002:2181,hadoop003:2181
# 在zookeeper上存储flink集群元信息的路径
high-availability.zookeeper.path.root: /flink
# 集群id
high-availability.cluster-id: /standalone_cluster_one
# 持久化存储JobManager元数据的地址,zookeeper上存储的只是指向该元数据的指针信息
high-availability.storageDir: hdfs://hadoop001:9000/flink/ha
#如果默认端口8081被占用,可以去更改默认端口为8082,同时masters的web端口也修改为8082
#rest.port: 8082

修改zoo.cfg如下,或将zookeeper/conf目录下的zoo.cfg复制到flink的conf目录下。

# The number of milliseconds of each tick
tickTime=2000# The number of ticks that the initial  synchronization phase can take
initLimit=10# The number of ticks that can pass between  sending a request and getting an acknowledgement
syncLimit=5# The directory where the snapshot is stored.
# dataDir=/tmp/zookeeper# The port at which the clients will connect
clientPort=2181# ZooKeeper quorum peers
server.0=hadoop001:2888:3888
server.1=hadoop002:2888:3888
server.2=hadoop003:2888:3888

将配置好的 Flink 安装包分发到其他两台服务器上:

scp -r /usr/app/flink-1.12.4 hadoop002:/usr/apps
scp -r /usr/app/flink-1.12.4 hadoop003:/usr/apps

确保 Hadoop 和 ZooKeeper 已经启动后,在 hadoop001 上使用如下命令来启动集群:

bin/start-cluster.sh

此时输出如下:

//启动之后会显示如下日志信息
Starting HA cluster with 2 masters.
Starting standalonesession daemon on host hadoop001.
Starting standalonesession daemon on host hadoop002.
Starting taskexecutor daemon on host hadoop001.
Starting taskexecutor daemon on host hadoop002.
Starting taskexecutor daemon on host hadoop003.

可以看到集群已经以 HA 的模式启动,此时还需要在各个节点上使用 jps 命令来查看进程是否启动成功,正常情况如下:

//已经有了
$ jps
16596 NameNode
9959 ResourceManager
16888 SecondaryNameNode
17016 QuorumPeerMain
17976 Jps
10073 NodeManager
16698 DataNode
8349 StandaloneSessionClusterEntrypoint
8396 TaskManagerRunner

只有 hadoop001 和 hadoop002 的 JobManager 进程StandaloneSessionClusterEntrypoint,hadoop001、hadoop002 和 hadoop003 上的 TaskManager 进程TaskManagerRunner都已经完全启动,才表示 Standalone Cluster HA 模式搭建成功。

3. 常见异常

如果进程没有启动,可以通过查看 log 目录下的日志来定位错误,常见的一个错误如下:

    2022-03-17 17:18:35,877 INFO  org.apache.flink.runtime.entrypoint.ClusterEntrypoint      - Shutting StandaloneSessionClusterEntrypoint down with application status FAILED. Diagnosticsjava.io.IOException: Could not create FileSystem for highly available storage (high-availability.storageDir).......Caused by: org.apache.flink.core.fs.UnsupportedFileSystemSchemeException: Could not find a file system implementation for scheme 'hdfs'. The scheme is not directly supported by Flink and no Hadoop file system to support this scheme could be loaded......Caused by: org.apache.flink.core.fs.UnsupportedFileSystemSchemeException: Hadoop is not in the classpath/dependencies.......

可以看到是因为在 classpath 目录下找不到 Hadoop 的相关依赖,此时需要检查是否在环境变量中配置了 Hadoop 的安装路径,如果路径已经配置但仍然存在上面的问题,可以从 Flink 官网下载对应版本的 Hadoop 组件包:

下载完成后,将该 JAR 包上传至所有 Flink 安装目录的 lib 目录,重新启动集群即可。

flink-conf.yaml参数说明:

参数 说明
jobmanager.rpc.address centoshadoop1 jobmanager所在节点
jobmanager.rpc.port 6123 jobManager端口,默认为6123
jobmanager.heap.size 2048m jobmanager可用内存
taskmanager.heap.size 4096m 每个TaskManager可用内存,根据集群情况指定
taskmanager.numberOfTaskSlots 3 每个taskmanager的并行度(5以内)
parallelism.default 2 启动应用的默认并行度(该应用所使用总的CPU数)
rest.port 8081 如果Flink web UI默认端口与spark的端口8081冲突,更改为8082或其他没被占用的端口

访问web界面 http://hadoop001:8081 可以对 flink 集群和任务进行监控管理。

Flink Standalone模式HA部署相关推荐

  1. flink yarn模式HA部署

    文章目录 1.yarn cluster 模式部署介绍 2.flink session HA模式 3.flink-per-job模式 该文章基于上一篇: Flink的local和standalone H ...

  2. flink Standalone模式部署

    部署前环境准备(基本的环境变量配置这里就不赘述了) jdk8和flink-1.14.0-bin-scala_2.12我这里准备了四台服务器,分别为node100~node103将安装包上传至各个服务器 ...

  3. Flink Standalone 集群部署

    Flink 支持使用多种部署模式来满足不同规模应用的需求,常见的有单机模式,Standalone Cluster 模式,同时 Flink 也支持部署在其他第三方平台上,如 YARN,Mesos,Doc ...

  4. spark standalone zookeeper HA部署方式

    虽然spark master挂掉的几率很低,不过还是被我遇到了一次.以前在spark standalone的文章中也介绍过standalone的ha,现在详细说下部署流程,其实也比较简单. 一.机器 ...

  5. SS00004.flink——|HadoopFlink计算领域锋利的武器.v04|——|Flink.v01|StandAlone模式部署|

    一.Flink安装和部署 ### --- Flink支持多种安装模式~~~ local(本地):单机模式,一般本地开发调试使用 ~~~ StandAlone 独立模式:Flink自带集群,自己管理资源 ...

  6. 【学会了学会了】Flink官网翻译——Standalone以及YARN部署

    Standalone 开始(Getting Started) This Getting Started section guides you through the local setup (on o ...

  7. Flink学习1——运行时架构(standalone模式)

    本篇主要讲述Flink Standalone模式下的运行时架构以及各个组件负责的功能,Flink的运行方式有很多,但都大同小异,本文基本可以满足对flink运行时架构的学习. 正文 Flink系统是主 ...

  8. Flink (四) Flink 的安装和部署- Flink on Yarn 模式 / 集群HA / 并行度和Slot

    接上一篇 Flink (三) Flink 的安装和部署- -Standalone模式 3. Flink  提交到 Yarn Flink on Yarn 模式的原理是依靠 YARN 来调度 Flink ...

  9. Flink Standalone部署模式

    独立模式(Standalone)是部署 Flink 最基本也是最简单的方式: 所需要的所有 Flink 组件, 都只是操作系统上运行的一个 JVM 进程. 独立模式是独立运行的, 不依赖任何外部的资源 ...

最新文章

  1. 基于深度学习的目标检测的研究进展2
  2. SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户
  3. 小型服务器的操作系统,小型机服务器的操作系统
  4. tomcat启动停止在 Initializing Spring root WebApplicationContext,就不运行了
  5. 第三次学JAVA再学不好就吃翔(part114)--Properties类
  6. z-index失效的情况
  7. 滴滴升级“极速拼车”:未拼成可享折扣 拼成更便宜
  8. Linux 一切皆文件认知
  9. MASQUERADE
  10. 设计模式(十七)—— 迭代器模式
  11. slf4j打印未捕获异常信息_谁再悄咪咪的吃掉异常,我上去就是一 JIO
  12. Servlet菜鸟教程
  13. typora 免费版, 最后一个beta版本下载
  14. 基于app_inventor的手机aap与单片机蓝牙互联教程
  15. 麒麟信安携手河南IT联盟召开 《麒麟信安信创应用解决方案》线上分享会
  16. 阿里云S级新游上云最佳实践
  17. 怎么从图片中提取文字?
  18. HTML简单学习记录
  19. 服务器基础知识:包含基本概念,作用,服务器选择,服务器管理等(学习来自米拓建站)
  20. java安卓屏幕护眼效果好_手机电脑用一天太伤眼!那是因为你不知道这些“护眼”的屏幕设置...

热门文章

  1. 香港TVB专访袁辉:科技需要商业回报,但变现不易
  2. 我看"越狱"的一点观后感 - 樱空弑
  3. 目标检测之IoU(box:[top, left, bottom, right])
  4. JAVA隐藏手机号部分数字
  5. 【计算机毕业设计】303汽车租赁系统
  6. 阴阳历转换(1936-2031)
  7. destoon 调用汇总
  8. 学钢琴必须要知道的乐理知识…
  9. GoLang之语法糖讲解
  10. 网工必备工具,你用过几个??