Flink 集群 zookeeper 高可用部署手册

安装前的准备

环境

  • 操作系统:Linux(CentOS、SUSE)
  • JDK:1.8.0 并设置好环境变量
  • 开放 Flink 相关端口(如:6123、8081)或关闭系统防火墙
  • 集群机器之间相互 SSH 免密已配置
  • 如果是采用高可用集群,需要安装 Hadoop 集群以及 Zookeeper
  • 安装 Apache Http 服务,或者 Ngxin 环境并配置一个 Http server

安装包

  • Flink:
    • 独立包:flink-1.6.4-bin-scala_2.11.tgz
    • 带 Hadoop 依赖包:flink-1.6.4-bin-hadoop26-scala_2.11.tgz(推荐,并选择与 Hadoop 版本一致的)
  • Hadoop:hadoop-2.6.5-src.tar.gz
  • Zookeeper:zookeeper-3.4.9.tar.gz

集群部署规划

IPCPU内存角色
10.12.22.xx1816master、worker
10.12.22.xx2816master(如果做高可用)、worker
10.12.22.xx3816worker

部署

安装

解压

$ cd /home/flink
$ tar -xzvf flink-1.6.4-bin-hadoop26-scala_2.11.tgz

配置

配置 master

$ vim conf/masters

添加以下内容:

10.12.22.xx1:8081

如果做 HA 配置,可以加入多个 master:

10.12.22.xx1:8081
10.12.22.xx2:8081

配置 slaves

$ vim conf/slaves

添加以下内容:

10.12.22.xx1
10.12.22.xx2
10.12.22.xx3

配置 flink-conf.yaml

$ vim conf/flink-conf.yaml

各个配置项说明如下:

序号配置项示例值说明
01jobmanager.rpc.address10.12.22.xx1jobmanager 节点地址
02jobmanager.rpc.port6123rpc 通讯端口
03jobmanager.heap.size8192mjobmanager JVM 内存大小,可以设置为单机内存大小
04taskmanager.heap.size8192mtaskmanager JVM 内存大小,可以设置为单机内存大小
05taskmanager.numberOfTaskSlots10每 taskmanager 的 slot 数,可以设置为单机 cpu 核数
06parallelism.default10默认并行度,可以设置为集群所有 cpu 核数
07jobmanager.web.address10.12.22.xx1jobmanager web 服务地址
08rest.port8081rest 服务端口
09taskmanager.memory.preallocatetruetaskmanager 是否预分配内存
10fs.hdfs.hadoopconf/etc/hadoop-confhadoop 配置地址。若 flink 部署机器上未安装hadoop,hadoop 配置文件可从安装 hadoop 机器拷贝或从 cdh 页面进行下载。
11io.tmp.dirs/temp/flink临时文件目录
12state.checkpoints.num-retained30容错快照数据保留分数
13security.kerberos.login.keytab/root/hdfs_dev.keytabKerberos 密钥表文件的绝对路径
14security.kerberos.login.principalhdfs@CSDEV.COM认证主体名称
15security.kerberos.login.use-ticket-cachefalse指示是否从 Kerberos ticket 缓存中读取

如果需要做 HA 高可用配置,需要设置 zookeeper 相关内容:

配置 flink-conf.yaml

$ vim conf/flink-conf.yaml

增加如下内容:

# 高可用模式 (必须的): 要启用高可用,需要配置文件 conf/flink-conf.yaml 中的 high-availability mode 必须设置为 zookeeper。
high-availability: zookeeper
# ZooKeeper 仲裁(quorum) (必须的): 一个 ZooKeeper quorum 是一组可以复制的 ZooKeeper 服务器,提供分布式协调服务。每组 addressX:port 表示一个 ZooKeeper 服务, Flink 必须可通过对应的地址和端口通信。
high-availability.zookeeper.quorum: zk01:2181,zk02:2181,zk03:2181
# ZooKeeper root (推荐的): ZooKeeper 节点根目录,其下放置所有集群节点的 namespace。
high-availability.zookeeper.path.root: /flink
# ZooKeeper 命名空间 (推荐的): ZooKeeper节点的命名空间,其中放置了集群所需的所有协调数据。
high-availability.cluster-id: /cluster_one # important: customize per cluster
# 存储目录 (必须的): JobManager 的元数据保存在文件系统存储目录* storageDir *中,只有一个指向此状态的指针存储在 ZooKeeper 中。storageDir 存储了所有恢复一个 JobManager 挂掉所需的元数据。
high-availability.storageDir: hdfs:///flink/recovery

分发至其他两台机器相同路径

$ scp -r /home/flink flink@10.12.22.xx2:/home/flink
$ scp -r /home/flink flink@10.12.22.xx3:/home/flink

注意

  • 如果机器既是 master 又是 slave 角色,那么这台机器的 flink-conf.yaml 中,jobmanager.rpc.address 需要配置为本机的 IP 地址。

  • 从 hdfs Kerberos 认证取得密钥表文件,需要放置到每台 Flink 安装机器统一路径中。

  • 如果 Hadoop 配置里的是主机名而不是 IP 地址的话,Flink 集群机器的 hosts 也必须配置相应的信息。

启动和关闭集群

执行 Shell 脚本 start-cluster.sh 启动 Flink 集群

$ bin/start-cluster.sh

执行 Shell 脚本 stop-cluster.sh 关闭 Flink 集群

$ bin/stop-cluster.sh

某 jobmanager 停止或想添加一个 jobmanager

$ bin/jobmanager.sh start
$ bin/jobmanager.sh stop

某 taskmanager 停止或想添加一个 taskmanager

$ bin/taskmanager.sh start
$ bin/taskmanager.sh stop

取消任务

运行以下命令查看运行中的 job

$ ./flink list

根据 job ID 来关闭

$ ./flink cancel jobxxxxxxxx

补充

  • 使用 Flink 快照功能,必须有 Hadoop 的支持。
  • 如果后期可以提供 Hadoop 环境的支持,只需修改相应配置,然后重启集群即可。
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值