写点什么

10 分钟入门 Flink-- 安装

  • 2023-08-05
    江苏
  • 本文字数:3453 字

    阅读完需:约 11 分钟

本文介绍 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 免密登录,避免后续搭建出现麻烦,这一步一定要做。简单步骤如下:


  1. 在 master 机器执行ssh-keygen -t rsa

  2. 在 master 机器执行命令,将密钥拷贝到其余服务器ssh-copy-id -i /root/.ssh/id_rsa.pub 目标服务器IP

2、Flink 本地模式搭建

搭建本地模式只需要一台服务器。下面以 master 服务器为例。

2.1、下载安装包

安装包下载地址https://flink.apache.org/zh/downloads/#apache-flink-2https://archive.apache.org/dist/flink/flink-1.15.4


解压安装包:


tar -xzf flink-1.15.4-bin-scala_2.12.tgz
复制代码

2.2、启动集群

进入到解压目录下,执行以下脚本:


./bin/start-cluster.sh
复制代码


通过 jps 查询相关进程:


17409 TaskManagerRunner13597 StandaloneSessionClusterEntrypoint
复制代码


若出现上述进程,则代表启动成功。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、停止集群

./bin/stop-cluster.sh
复制代码

3、Flink Standalone 搭建

搭建 Flink Standalone 模式,需要 3 台服务器。角色安排见下图:


3.1、下载安装包

安装包下载地址https://flink.apache.org/zh/downloads/#apache-flink-2https://archive.apache.org/dist/flink/flink-1.15.4


在 JobManager 服务器下载安装包,解压安装包:


tar -xzf flink-1.15.4-bin-scala_2.12.tgz -C /data/software/
复制代码

3.2、修改 flink-conf.yaml 配置文件

Flink 的配置文件都存放于安装目录下的 conf 目录。在 JobManager 服务器,进入该目录,执行以下操作。


vim conf/flink-conf.yaml
复制代码


将文件中 jobmanager.rpc.address 属性的值改为 JobManager 机器的 ip 地址,如下:


jobmanager.rpc.address: 10.20.0.93jobmanager.bind-host: 0.0.0.0
复制代码

3.3、修改 workers 文件

workers 文件必须包含所有需要启动的 TaskManager 节点的主机名,且每个主机名占一行。在 JobManager 服务器,执行以下操作


vim conf/workers
复制代码


修改为其余两台 TaskManager 的 ip 地址:


10.20.0.9210.20.0.90
复制代码

3.4、复制 Flink 安装文件到其他服务器

在 JobManager 服务器执行命令,将安装文件复制到其余 TaskManager 服务器,命令如下:


scp -r /data/software/flink-15.4/ 10.20.0.92:/data/software/flink-15.4/scp -r /data/software/flink-15.4/ 10.20.0.90:/data/software/flink-15.4/
复制代码

3.5、启动集群

在 JobManager 节点上进入 Flink 安装目录,执行以下命令启动 Flink 集群:


bin/start-cluster.sh
复制代码


启动完毕后,在集群各服务器上通过 jsp 命令查看 Java 进程。若各节点存在以下进程,则说明集群启动成功:


JobManager节点:StandaloneSessionClusterEntrypointTaskManager1节点:TaskManagerRunnerTaskManager2节点:TaskManagerRunner
复制代码


尝试提交一个简单任务,如果任务正常执行完毕,则集群一切正常。提交 Flink 自带的简单任务如下:


./bin/flink run examples/streaming/WordCount.jar
复制代码

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:8081centos02:8082
复制代码


上述配置表示在集群 centos01 和 centos02 节点上启动 JobManager,并且每个 JobManager 的 WebUI 访问端口分别为 8081。

4.4、修改 flink-conf.yaml 文件设置高可用模式

进入 centos01 节点的 Flink 安装主目录,修改 conf/flink-conf.yaml 文件,添加以下内容:


# 将高可用模式设置为ZooKeeper,默认集群不会开启高可用状态high-availability: zookeeper# ZooKeeper集群主机名(或IP)与端口列表,多个以逗号分隔high-availability.zookeeper.quorum: centos01:2181,centos02:2181,centos03:2181# 用于持久化JobManager元数据(JobGraph、应用程序JAR文件等)的HDFS地址,以便进行故障恢复,ZooKeeper上存储的只是元数据所在的位置路径信息high-availability.storageDir: /data/software/flink-15.4/ha# 获取storageDir也可用hdfs,如果使用hdfs的话,则需要单独安装hdfs,本文暂不使用#high-availability.storageDir: hdfs://centos01:9000/flink/recovery
复制代码

4.5、修改 zoo.cfg 文件

Flink 内置了 ZooKeeper 服务和相关脚本文件,如果你的集群中没有安装 ZooKeeper,则可以通过修改 zoo.cfg 文件配置 Flink 内置的 ZooKeeper。生产环境建议使用独立的外部 ZooKeeper。


进入 centos01 节点的 Flink 安装主目录,修改 conf/zoo.cfg 文件,添加以下内容,配置 ZooKeeper 启动节点与选举相关端口:


server.1=centos01:2888:3888server.2=centos02:2888:3888server.3=centos03:2888:388
复制代码


上述配置表示在 centos01、centos02 和 centos03 节点上启动 ZooKeeper 服务,其中 1、2、3 表示每个 ZooKeeper 服务器的唯一 ID。

4.6、复制 Flink 安装文件到其他节点

继续采用 scp 命令,复制 centos01 的文件到其他节点,scp 命令会把相同文件覆盖。


scp -r /data/software/flink-15.4/ centos02:/data/software/flink-15.4/scp -r /data/software/flink-15.4/ centos03:/data/software/flink-15.4/
复制代码

4.7、启动 ZooKeeper 集群

如果使用 Flink 内置的 ZooKeeper,在 centos01 节点执行以下命令,即可启动整个 ZooKeeper 集群:


./bin/start-zookeeper-quorum.sh
复制代码


启动过程见下图:



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


4.8、启动 Flink Standalone HA 集群

在 centos01 节点上执行以下命令,启动 Flink Standalone HA 集群:


bin/start-cluster.sh
复制代码


启动过程类似下图:



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



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



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



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


4.9、访问 WebUI

之前的防止,只有 centos01 可以访问 dashboard,现在 centos01、centos02 都可以访问。


在提交一个测试,如果能正常执行,说明整个集群正常。


./bin/flink run examples/streaming/WordCount.jar
复制代码

4.10、停止集群

若要停止 Flink Standalone HA 集群,在 centos01 节点上首先执行以下命令停止整个 Flink 集群:


 bin/stop-cluster.sh
复制代码


然后执行以下命令,停止 ZooKeeper 集群:


bin/stop-zookeeper-quorum.sh
复制代码


以上是 Flink 的安装步骤!下一篇介绍 Flink DataStream 的概念和使用案例。



用户头像

这里可以找到我 mangod.top 2018-09-11 加入

13年IT行业经验,做过架构创过业,一起交流学习。专注于软件开发、云原生、大数据领域。关注我职业发展不焦虑。

评论

发布
暂无评论
10分钟入门Flink--安装_Flink 平台_不焦躁的程序员_InfoQ写作社区