Flink 1.12.2 部署

648 阅读7分钟

1. flink 的几种部署模式

Flink是一个流处理和批处理的开源框架,广泛应用于大数据领域。要学习Flink,首先需要搭建好Flink环境。根据部署方式的不同,Flink有多种部署模式,包括Local(本地单机模式)、Standalone(独立集群模式)、Standalone-HA(独立集群高可用模式)和On Yarn(计算资源统一由Hadoop YARN管理)。本文将详细介绍这几种部署模式的安装部署和测试验证,帮助读者更好地理解和使用Flink。

  • Local(本地单机模式) 是学习测试时常用的部署模式,可以在单机环境下运行Flink任务。安装部署Local模式的步骤相对简单,只需要下载并解压Flink安装包即可。测试验证时,可以编写一个简单的Flink程序并提交到本地环境运行,观察输出结果是否符合预期。

  • Standalone(独立集群模式) 是Flink自带的一种集群部署模式,适用于开发测试环境。安装部署Standalone模式需要先搭建一个Flink集群,包括主节点和多个工作节点。安装完成后,可以通过Flink提供的命令行工具提交Flink任务到集群运行。测试验证时,可以观察集群中的任务是否正常运行,并对比不同节点间的输出结果是否一致。

  • Standalone-HA(独立集群高可用模式) 是为了提高Flink集群的可用性而设计的部署模式。与Standalone模式不同的是,Standalone-HA模式采用了高可用性架构,可以自动处理节点故障并保证任务的正常运行。安装部署Standalone-HA模式需要更多的配置工作,包括设置节点间的通信、配置ZooKeeper等。测试验证时,可以模拟节点故障并观察Flink集群是否能够自动恢复并继续运行任务。

  • On Yarn(计算资源统一由Hadoop YARN管理) 是生产环境下常用的部署模式。Yarn是Hadoop生态系统中的资源管理系统,可以统一管理和调度计算资源。在On Yarn模式下,Flink程序作为Yarn应用程序运行,共享Hadoop集群的计算资源。安装部署On Yarn模式需要先安装并配置好Hadoop和Yarn环境,然后将Flink程序打包成Yarn应用程序提交到Yarn集群运行。测试验证时,可以观察Yarn UI界面中Flink程序的运行状态,并对比输出结果是否符合预期。

总的来说,根据实际需求选择合适的部署模式是搭建Flink环境的关键。无论是学习测试还是生产环境,都需要充分了解每种部署模式的特性和适用场景,并根据实际情况进行合理的配置和优化。通过本文的介绍,相信读者已经对Flink的部署模式有了更深入的了解,可以更好地在实际应用中使用Flink。

2. 前置条件

我这里是部署到Ubuntu24.04

2.1 关闭防火墙

# 查看防火墙状态
sudo ufw status

# 关闭防火墙
sudo ufw disable

2.2 同步时间

sudo apt instal ntpdate
sudo nptdate -u ntp.sjtu.edu.cn

2.3 配置免密登录

参考我前面的文章Hadoop2.7.2 + Spark 2.4.3 + Hive 2.3.3 集群部署

如果是单机的模式,不需要这一个步骤。

3. Flink的单机模式部署

3.1 下载安装包

解压到/usr/local/路径下,并改名flink,配置所有者owner

sudo tar -zxvf flink-1.12.2-bin-scala_2.11.tgz  -C /usr/local/flink

# 这里我的用户名是hadoop
sudo chown -R hadoop /usr/local/flink 

3.2 启动Flink

注意,运行之前需要确保机器上已经安装了JDK1.8或者以上的版本,并配置了JAVA_HOME和PATH环境变量。

java -version

执行flink启动命令

cd /usr/local/flink/
bin/start-cluster.sh 

3.3 验证启动成功

执行jps命令查看java进程,可以看到相关进程已经启动。

[hadoop@master flink]# jps
3577 Jps
3242 StandaloneSessionClusterEntrypoint
3549 TaskManagerRunner

通过浏览器,可以访问Flink的web 页面,链接是 http://your_ip:8081

image.png

3.4 Flink关闭

cd /usr/local/flink
bin/stop-cluster.sh

4. Flink的Standalone模式部署

4.1 服务器规划

我这边使用了三台服务器。

hostnameIP角色|
master192.168.3.10master节点
slave1192.168.3.11slave节点
slave2192.168.3.12slave节点

4.2 前置条件

  • 免密登录
  • 安装java,配置JAVA_HOME、PATH环境变量
  • 配置hostname、hosts

4.3 下载解压Flink

同上面本地部署。

4.4 配置Flink

cd /usr/local/flink/conf
  • workers 配置
vim workers

配置文件内容

slave1
slave2
  • flink-conf.yaml 配置
vim flink-conf.yaml

修改后的内容

# 这里把web服务端口改了,因为和Spark冲突了。不改的话,启动不起来,也不报错
rest.port: 8071

# 配置master IP
jobmanager.rpc.address: 192.168.3.10  # 这里也可以配置成master节点的hostname,但是要求所有节点要配置hosts文件

4.5 拷贝文件

scp -rq /usr/local/flink slave1:/usr/local/
scp -rq /usr/local/flink slave2:/usr/local/

4.6 启动Flink

[root@master ~]# cd /usr/local/flink/
[root@master flink]# bin/start-cluster.sh 
Starting cluster.
Starting standalonesession daemon on host master.
Starting taskexecutor daemon on host slave1.
Starting taskexecutor daemon on host slave2.

4.7 查看启动情况

# master节点
[hadoop@master flink]# jps
4983 StandaloneSessionClusterEntrypoint
5048 Jps

# slave1、或者slave2节点
[hadoop@slave1 ~]# jps
4122 TaskManagerRunner
4175 Jps

访问web页面,访问http://master:8071 。如果你没改端口的话,默认端口应该是8081。http://master:8081

image.png

4.8 启动或关闭Flink

  • 集群的启动和关闭
bin/start-cluster.sh
bin/stop-cluster.sh
  • 单独启动、停止进程

启动和停止StandaloneSessionClusterEntrypoint

cd /usr/local/flink
bin/jobmanager.sh start
bin/jobmanager.sh stop

启动和停止TaskManagerRunner (常用于向集群添加新的slave节点)

cd /usr/local/flink
bin/taskmanager.sh start
bin/taskmanager.sh stop

5. Flink的On Yarn 模式部署

Flink on Yarn 模式使用Yarn作为任务调度系统,即在Yarn上启动运行flink。好处是可以充分利用集群资源,可以和Hadoop、Spark联合部署。Hadoop集群中有配置Yarn,因此可以先搭建一个Hadoop集群,利用Hadoop配置的Yarn。

Hadoop的安装可以参考我前面的文章Hadoop2.7.2 + Spark 2.4.3 + Hive 2.3.3 集群部署

5.1 Flink on Yarn 的两种方式

  1. 在YARN中预先初始化一个Flink集群,占用Yarn中的固定资源。该Flink集群常驻Yarn中。这种方式的缺点是,无论有没有Flink任务执行,Flink都会占用资源,除非手动停止。如果Yarn中给Flink集群配置的资源耗尽,就智能等待Yarn中的一个作业执行完毕,释放资源后,才能提交一个Flink作业。这种方式适合小规模、短时间的任务。

  2. 每次提交Flink任务给Yarn,Yarn分配资源,即每次都在yarn上新建一个Flink集群,任务结束,Flink集群终止,释放资源。这种方式能够使得资源利用最大化,适合长时间、大规模的计算任务。它的缺陷也是明显的,每次都要申请资源,创建集群,执行的准备时间比较久。

5.2 方式1 安装

5.2.1 启动Hadoop集群

5.2.2 拷贝jar包

cp /usr/local/hadoop/share/hadoop/yarn/hadoop-yarn-api-2.7.2.jar /usr/local/flink/lib
cp /usr/local/hadoop/share/hadoop/yarn/sources/hadoop-yarn-api-2.7.2-sources.jar /usr/local/flink/lib

还需要flink-shaded-hadoop-2-uber-2.8.3-10.0.jar,可以从maven仓库下载,放到/usr/local/flink/lib路径下。

5.2.3 创建启动Flink 集群

在flink目录下 /usr/local/flink/lib执行:

bin/yarn-session.sh -n 2 -jm 512 -tm 512 -d

由于flink 集群是yarn创建的,因此可以在yarn控制台看到。http://master:8088/cluster

image.png

创建成功后,flink控制台会输出web页面的访问地址。可以在该地址,查看flink的任务执行情况。

5.3 方式2 安装

这种方式就是在提交flink任务时候,创建flink集群。

cd /usr/local/flink
bin/flink run -m yarn-cluster -yjm 1024 ./examples/batch/WordCount.jar

需要在执行上述命令的机器上配置环境变量YARN_CONF_DIR、HADOOP_CONF_DIR或者HADOOP_HOME环境变量。flink 会通过这个环境变量读取Yarn和HDFS的配置信息。

6. 总结

我认为还是stand alone的模式部署起来比较方便,也实用。

7. 参考资料

Flink教程(1)-集群安装与部署