10 分钟入门 Flink-- 安装
本文介绍 Flink 的安装步骤,主要是 Flink 的独立部署模式,它不依赖其他平台。文中内容分为 4 块:前置准备、Flink 本地模式搭建、Flink Standalone 搭建、Flink Standalong HA 搭建。
演示使用的 Flink 版本是 1.15.4,官方文档地址:https://nightlies.apache.org/flink/flink-docs-release-1.15/zh/docs/try-flink/local_installation/。
1、前置准备
1.1、因为后面要搭建集群,所以需要准备 3 台 linux 服务器,集群服务器节点提前安装 JDK 8 以上版本。
1.2、给集群的每台服务器分配好角色。类似下图:

1.3、集群的服务器之间配置好 ssh 免密登录,避免后续搭建出现麻烦,这一步一定要做。简单步骤如下:
在 master 机器执行
ssh-keygen -t rsa
在 master 机器执行命令,将密钥拷贝到其余服务器
ssh-copy-id -i /root/.ssh/id_rsa.pub 目标服务器IP
2、Flink 本地模式搭建
搭建本地模式只需要一台服务器。下面以 master 服务器为例。
2.1、下载安装包
安装包下载地址https://flink.apache.org/zh/downloads/#apache-flink-2、https://archive.apache.org/dist/flink/flink-1.15.4。
解压安装包:
2.2、启动集群
进入到解压目录下,执行以下脚本:
通过 jps 查询相关进程:
若出现上述进程,则代表启动成功。StandaloneSessionClusterEntrypoint 为 Flink 主进程,即 JobManager;TaskManagerRunner 为 Flink 从进程,即 TaskManager。
2.3、查看 WebUI
在浏览器中访问服务器 8081 端口即可查看 Flink 的 WebUI,比如http://10.20.0.93:8081/,从 WebUI 中可以看出,当前本地模式的 Task Slot 数量和 TaskManager 数量。访问结果如下图所示:

如果出现访问不通的情况,使用如下方式解决:
正常启动集群后,只能通过http://localhost:8081访问 Flink Web UI,如果通过 IP 地址访问,则出现连接被拒绝的情况。此时需要修改 Flink 配置文件flink-conf.yaml
,将localhost
改成0.0.0.0
,修改之后重启服务就可以使用 IP 地址访问。修改部分见下图:

2.4、停止集群
3、Flink Standalone 搭建
搭建 Flink Standalone 模式,需要 3 台服务器。角色安排见下图:

3.1、下载安装包
安装包下载地址https://flink.apache.org/zh/downloads/#apache-flink-2、https://archive.apache.org/dist/flink/flink-1.15.4。
在 JobManager 服务器下载安装包,解压安装包:
3.2、修改 flink-conf.yaml 配置文件
Flink 的配置文件都存放于安装目录下的 conf 目录。在 JobManager 服务器,进入该目录,执行以下操作。
将文件中 jobmanager.rpc.address 属性的值改为 JobManager 机器的 ip 地址,如下:
3.3、修改 workers 文件
workers 文件必须包含所有需要启动的 TaskManager 节点的主机名,且每个主机名占一行。在 JobManager 服务器,执行以下操作
修改为其余两台 TaskManager 的 ip 地址:
3.4、复制 Flink 安装文件到其他服务器
在 JobManager 服务器执行命令,将安装文件复制到其余 TaskManager 服务器,命令如下:
3.5、启动集群
在 JobManager 节点上进入 Flink 安装目录,执行以下命令启动 Flink 集群:
启动完毕后,在集群各服务器上通过 jsp 命令查看 Java 进程。若各节点存在以下进程,则说明集群启动成功:
尝试提交一个简单任务,如果任务正常执行完毕,则集群一切正常。提交 Flink 自带的简单任务如下:
3.6、查看 WebUI
通过 JobManager 节点访问 WebUI,可以看到此时是 1 个 JobManager,2 个 TaskManager,也能以上执行完毕的任务,如下图:



4、Flink Standalone HA 搭建
4.1、HA 模式介绍
在 Flink Standalone 模式下,实现 HA 的方式可以利用 ZooKeeper 在所有正在运行的 JobManager 实例之间进行分布式协调,实现多个 JobManager 无缝切换。Flink Standalone 模式的 HA 架构如图:

HA 的核心就是:可以在集群中启动多个 JobManager,并使它们都向 ZooKeeper 进行注册,ZooKeeper 利用自身的选举机制保证同一时间只有一个 JobManager 是活动状态(Active)的,其他的都是备用状态(Standby)。当活动状态的 JobManager 出现故障时,ZooKeeper 会从其他备用状态的 JobManager 选出一个成为活动 JobManager。流程见下图:

此外,活动状态的 JobManager 在工作时会将其元数据(JobGraph、应用程序 JAR 文件等)写入一个远程持久化存储系统(例如 HDFS)中,还会将元数据存储的位置和路径信息写入 ZooKeeper 存储,以便能够进行故障恢复,如图下图所示:

4.2、角色分配
下面仍然采用前面的的 3 个节点,在前面已经搭建好的 Flink Standalone 集群上进行操作。集群角色分配如下图:

搭建步骤如下:
4.3、修改 masters 文件
Flink 的 masters 文件用于配置所有需要启动的 JobManager 节点以及每个 JobManager 的 WebUI 绑定的端口。
进入 centos01 节点的 Flink 安装目录,修改 conf/masters 文件,修改内容如下:
上述配置表示在集群 centos01 和 centos02 节点上启动 JobManager,并且每个 JobManager 的 WebUI 访问端口分别为 8081。
4.4、修改 flink-conf.yaml 文件设置高可用模式
进入 centos01 节点的 Flink 安装主目录,修改 conf/flink-conf.yaml 文件,添加以下内容:
4.5、修改 zoo.cfg 文件
Flink 内置了 ZooKeeper 服务和相关脚本文件,如果你的集群中没有安装 ZooKeeper,则可以通过修改 zoo.cfg 文件配置 Flink 内置的 ZooKeeper。生产环境建议使用独立的外部 ZooKeeper。
进入 centos01 节点的 Flink 安装主目录,修改 conf/zoo.cfg 文件,添加以下内容,配置 ZooKeeper 启动节点与选举相关端口:
上述配置表示在 centos01、centos02 和 centos03 节点上启动 ZooKeeper 服务,其中 1、2、3 表示每个 ZooKeeper 服务器的唯一 ID。
4.6、复制 Flink 安装文件到其他节点
继续采用 scp 命令,复制 centos01 的文件到其他节点,scp 命令会把相同文件覆盖。
4.7、启动 ZooKeeper 集群
如果使用 Flink 内置的 ZooKeeper,在 centos01 节点执行以下命令,即可启动整个 ZooKeeper 集群:
启动过程见下图:

启动成功后,在每个 Flink 节点上都会产生一个名为 FlinkZooKeeperQuorumPeer 的进程,该进程是 ZooKeeper 服务的守护进程。使用 jsp 可以查看到如下进程:

4.8、启动 Flink Standalone HA 集群
在 centos01 节点上执行以下命令,启动 Flink Standalone HA 集群:
启动过程类似下图:

单独查看 centos01 的进程,如下图:

单独查看 centos02 的进程,如下图:

单独查看 centos03 的进程,如下图:

在查看/tmp 目录,可以看到相关元数据信息:

4.9、访问 WebUI
之前的防止,只有 centos01 可以访问 dashboard,现在 centos01、centos02 都可以访问。
在提交一个测试,如果能正常执行,说明整个集群正常。
4.10、停止集群
若要停止 Flink Standalone HA 集群,在 centos01 节点上首先执行以下命令停止整个 Flink 集群:
然后执行以下命令,停止 ZooKeeper 集群:
以上是 Flink 的安装步骤!下一篇介绍 Flink DataStream 的概念和使用案例。

评论