Flink HA配置 (Standalone Cluster)

96
Michael_林
2018.01.14 23:23 字数 1192

说明: 该配置过程基于flink1.3, 参考了官方文档。如有任何问题请联系我改正,谢谢!


flink ha配置 (Standalone Cluster)

er High Availability 独立集群高可用)
要启用flink JobManager的高可用性,必须要做如下配置:
(1) 将高可用性模式设置为zookeeper(high-availability: zookeeper),
(2) 配置ZooKeeper仲裁集(zookeeper 集群地址);
(3)设置包含所有JobManager主机及其Web UI端口的主文件(masters文件)。

Flink利用ZooKeeper在所有运行的JobManager实例之间进行分布式协调。 ZooKeeper是Flink独立的服务,需要提前安装好。 zookeeper通过领导选举和轻量级一致的状态存储提供高度可靠的分布式协调服务。 Flink中也包含脚本来引导一个简单的ZooKeeper安装,后文介绍。
详细配置过程如下:

1. masters file 配置

为了启动HA群集,需要conf/masters文件中中配置masters信息
masters文件内容: 包含启动JobManager的所有主机以及Web用户界面绑定的端口
配置格式:

jobManagerAddress1:webUIPort1
[...]
jobManagerAddressX:webUIPortX  

配置示例:
jobmanager1:8081
jobmanager2:8081
jobmanager3:8081

默认情况下,JobManager将选择一个随机端口进行进程间通信。 也可以通过high-availability.jobmanager.port属性来改变它。 该属性可以指定单个端口(例如50010),也可以指定一个范围(50000-50025)或两者的组合(50010,50011,50020-50025,50050-50075)来使用。
availability.jobmanager.port 属性在conf/flink-conf.yml文件中配置

2.Config File (flink-conf.yaml)配置

为了启动flink HA群集,需要将以下配置属性添加到conf/flink-conf.yaml文件中:

  1. high-availability mode (必须)
    作用: 设置高可用用的模式,一般使用zookeeper来做flink ha的协调服务.
    配置示例: high-availability: zookeeper

  2. ZooKeeper quorum (必须)
    作用: ZooKeeper quorum(仲裁集)是ZooKeeper服务器的备份组,它提供分布式协调服务。
    配置示例: zk1:2181,zk2:2181,zk3:2181

  3. ZooKeeper root (必须)
    作用: flink 在zookeeper上的根节点,下面给存放集群其他节点
    配置示例:

  4. ZooKeeper cluster-id (推荐配置)
    作用: cluster-id ZooKeeper节点,下面放置一个集群所需的全部协调数据。
    配置示例: high-availability.cluster-id: /default_ns
    重要说明:运行YARN群集,每作业YARN会话或其他群集管理器时,不应手动设置此值。 在这种情况下,将根据应用程序ID自动生成一个cluster-id。 在YARN中手动设置cluster-id将覆盖此行为。 使用-z CLI选项指定cluster-id,将覆盖手动配置。 如果在裸机上运行多个Flink HA群集,则必须为每个群集手动配置单独的群集标识。

  5. Storage directory (必须)
    作用: JobManager元数据会保存在文件系统storageDir中,且只有一个指向这个状态的指针存储在ZooKeeper中。
    配置示例: high-availability.zookeeper.storageDir: hdfs:///flink/recovery
    说明: storageDir存储恢复JobManager失败所需的所有元数据。

3.启动ha集群

配置完masters和ZooKeeper仲裁集之后,可以照常使用flink启动集群的集群启动脚本。 他们将启动一个HA集群。 注意,使用脚本启动ha集群时必须已经运行ZooKeeper服务,并确保为每个启动的HA群集配置单独的ZooKeeper根路径。

配置示例(包括zookeeper的配置):
配置一个2个独立主机(standalone)集群模式的fink ha集群

  1. 在 conf/flink-conf.yaml:中配置高可用模式和zookeeper仲裁集
    high-availability: zookeeper
    high-availability.zookeeper.quorum: localhost:2181
    high-availability.zookeeper.path.root: /flink
    high-availability.cluster-id: /cluster_one # important: customize per cluster
    high-availability.zookeeper.storageDir: hdfs:///flink/recovery

  2. 在 conf/masters 配置ha所有的节点地址及访问端口
    localhost:8081
    localhost:8082

  3. 配置zookeeper服务 conf/zoo.cfg(如果已经由zk服务,该步骤忽略)
    server.0=localhost:2888:3888
    注意: 目前只能在每台机器上运行一个ZooKeeper服务器

  4. 启动zookeeper 服务
    $ bin/start-zookeeper-quorum.sh
    Starting zookeeper daemon on host localhost.

  5. 启动ha集群
    $ bin/start-cluster.sh
    Starting HA cluster with 2 masters and 1 peers in ZooKeeper quorum.
    Starting jobmanager daemon on host localhost.
    Starting jobmanager daemon on host localhost.
    Starting taskmanager daemon on host localhost.

  6. 停止zookeeper服务和ha集群
    $ bin/stop-cluster.sh
    Stopping taskmanager daemon (pid: 7647) on localhost.
    Stopping jobmanager daemon (pid: 7495) on host localhost.
    Stopping jobmanager daemon (pid: 7349) on host localhost.
    $ bin/stop-zookeeper-quorum.sh
    Stopping zookeeper daemon (pid: 7101) on host localhost.

基于yarn的flink ha集群,请看当前文集中的另一篇 【flink ha配置 (YARN Cluster Cluster)】

Flink