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
3.4 Flink关闭
cd /usr/local/flink
bin/stop-cluster.sh
4. Flink的Standalone模式部署
4.1 服务器规划
我这边使用了三台服务器。
| hostname | IP | 角色| |
|---|---|---|
| master | 192.168.3.10 | master节点 |
| slave1 | 192.168.3.11 | slave节点 |
| slave2 | 192.168.3.12 | slave节点 |
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
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 的两种方式
-
在YARN中预先初始化一个Flink集群,占用Yarn中的固定资源。该Flink集群常驻Yarn中。这种方式的缺点是,无论有没有Flink任务执行,Flink都会占用资源,除非手动停止。如果Yarn中给Flink集群配置的资源耗尽,就智能等待Yarn中的一个作业执行完毕,释放资源后,才能提交一个Flink作业。这种方式适合小规模、短时间的任务。
-
每次提交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
创建成功后,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的模式部署起来比较方便,也实用。