Flink 集群 zookeeper 高可用部署手册
文章目录安装前的准备环境安装包集群部署规划部署安装解压配置分发至其他两台机器相同路径启动和关闭集群取消任务补充安装前的准备环境操作系统:Linux(CentOS、SUSE)JDK:1.8.0 并设置好环境变量开放 Flink 相关端口(如:6123、8081)或关闭系统防火墙集群机器之间相互 SSH 免密已配置如果是采用高可用集群,需要安装 Hadoop 集群以及 Zookeepe...
安装前的准备
环境
- 操作系统: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
集群部署规划
IP | CPU | 内存 | 角色 |
---|---|---|---|
10.12.22.xx1 | 8 | 16 | master、worker |
10.12.22.xx2 | 8 | 16 | master(如果做高可用)、worker |
10.12.22.xx3 | 8 | 16 | worker |
部署
安装
解压
$ 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
各个配置项说明如下:
序号 | 配置项 | 示例值 | 说明 |
---|---|---|---|
01 | jobmanager.rpc.address | 10.12.22.xx1 | jobmanager 节点地址 |
02 | jobmanager.rpc.port | 6123 | rpc 通讯端口 |
03 | jobmanager.heap.size | 8192m | jobmanager JVM 内存大小,可以设置为单机内存大小 |
04 | taskmanager.heap.size | 8192m | taskmanager JVM 内存大小,可以设置为单机内存大小 |
05 | taskmanager.numberOfTaskSlots | 10 | 每 taskmanager 的 slot 数,可以设置为单机 cpu 核数 |
06 | parallelism.default | 10 | 默认并行度,可以设置为集群所有 cpu 核数 |
07 | jobmanager.web.address | 10.12.22.xx1 | jobmanager web 服务地址 |
08 | rest.port | 8081 | rest 服务端口 |
09 | taskmanager.memory.preallocate | true | taskmanager 是否预分配内存 |
10 | fs.hdfs.hadoopconf | /etc/hadoop-conf | hadoop 配置地址。若 flink 部署机器上未安装hadoop,hadoop 配置文件可从安装 hadoop 机器拷贝或从 cdh 页面进行下载。 |
11 | io.tmp.dirs | /temp/flink | 临时文件目录 |
12 | state.checkpoints.num-retained | 30 | 容错快照数据保留分数 |
13 | security.kerberos.login.keytab | /root/hdfs_dev.keytab | Kerberos 密钥表文件的绝对路径 |
14 | security.kerberos.login.principal | hdfs@CSDEV.COM | 认证主体名称 |
15 | security.kerberos.login.use-ticket-cache | false | 指示是否从 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 环境的支持,只需修改相应配置,然后重启集群即可。
更多推荐
所有评论(0)