点一下关注吧!!!非常感谢!!持续更新!!!
目前已经更新到了:
- Hadoop(已更完)
- HDFS(已更完)
- MapReduce(已更完)
- Hive(已更完)
- Flume(已更完)
- Sqoop(已更完)
- Zookeeper(已更完)
- HBase(已更完)
- Redis (已更完)
- Kafka(已更完)
- Spark(已更完)
- Flink(正在更新!)
章节内容
上节完成了如下的内容:
- Flink 重要角色
- TaskManager
- ResourceManager
- 各个组件之间的关系
- Sink Task SubTask 等等内容
安装模式
Flink支持多种安装模式:
- local(本地):单机模式,一般本地开发调试
- Standalone独立模式:Flink自带集群,自己管理资源调度,部分生产环境会这么用
- YARN模式:计算资源统一由Hadoop YRAN管理,生产环境大部分是这种
基础环境
基于我们之前的大数据的环境:
- JAVA_HOME 之前已经配好了
- SSH 免密登录 三台节点之间 之前也配置好了
集群规划
我们对应的机器是:
- h121 2C4G
- h122 2C4G
- h123 2C2G
下载安装
选择的版本是:Flink 1.11.1 版本
https://www.apache.org/dyn/closer.lua/flink/flink-1.11.1/flink-1.11.1-bin-scala_2.12.tgz
你也可以直接使用 wget 下载,目前我们登录到服务器 h121 节点上
cd /opt/software/
wget https://archive.apache.org/dist/flink/flink-1.11.1/flink-1.11.1-bin-scala_2.12.tgz
等待下载完毕:
解压配置:
tar -zxvf flink-1.11.1-bin-scala_2.12.tgz
处理过程如下:
解压完成之后,移动到目录下:
mv flink-1.11.1 ../servers/
cd ../servers/
ls
Standalone模式部署
上述我们已经完成了 h121 服务器节点的配置安装,接下来我们修改配置文件。
Standalone 模式是一种相对简单的 Flink 集群部署方式,适合在拥有固定资源的环境中运行 Flink 应用程序。所有的 Flink 组件(如 JobManager 和 TaskManager)都是手动配置和启动的,没有依赖外部的资源管理系统。
启动与配置
- 手动启动:在 Standalone 模式下,JobManager 和 TaskManager 需要通过脚本手动启动。可以通过 Flink 提供的启动脚本(如 start-cluster.sh)来启动整个集群,或者单独启动每个组件。
- 配置文件:Standalone 模式的配置主要通过 flink-conf.yaml 文件进行,配置内容包括 JobManager 和 TaskManager 的数量、内存和 CPU 资源、网络设置等。
flink-conf.yaml
cd /opt/servers/flink-1.11.1/conf
vim flink-conf.yaml
我们修改的内容有这么两处:
jobmanager.rpc.address: h121.wzk.icu
taskmanager.numberOfTaskSlots: 2
修改内容如下所示:
Works
不同的版本可能叫不同的名字,我这里是 works
cd /opt/servers/flink-1.11.1/conf
vim workers
写入如下的内容,我们有三台云节点:
h121.wzk.icu
h122.wzk.icu
h123.wzk.icu
写入的结果如下图所示:
Master
cd /opt/servers/flink-1.11.1/conf
vim masters
写入如下的内容:
h121.wzk.icu:8081
写入的结果如下图:
服务启动
暂时就可以先启动进行测试了:
cd /opt/servers/flink-1.11.1/bin/
./start-cluster.sh
启动过程如下所示:
启动结果
这里要注意,由于我们之前配置过Spark环境,Spark的Web也是8081端口。
记得把Spark的服务停掉(暂时用不到Spark相关的内容了)。
启动后,我们访问:
http://h121.wzk.icu:8081/#/overview
可以通过 JPS 命令查看主机当前的状态:(不需要的你可以停掉)
- Hadoop
- HDFS
- Flink
- 等等
测试效果
官方提供的Demo,可以运行测试一下是否正常
cd /opt/servers/flink-1.11.1/bin
./flink run ../examples/streaming/WordCount.jar
执行结果如下图:
可视化的页面也可以看到:
特点与优缺点
优点
- 简洁易用:Standalone 模式不需要额外的资源管理系统,配置相对简单,特别适合在资源固定的小型集群中运行。
- 独立性强:这种模式下,Flink 集群不依赖于外部系统,可以在没有 Yarn、Kubernetes 等资源管理平台的环境中独立运行。
- 低延迟:由于不涉及外部资源调度系统,Standalone 模式在资源调度上的延迟相对较低,适合需要低延迟任务调度的场景。
缺点
- 资源弹性差:由于没有集成外部资源管理系统,Standalone 模式的资源调度和管理相对固定,不支持动态扩展或缩减资源。这在面对变化的工作负载时,可能会导致资源浪费或不足。
- 管理复杂:在大规模集群中,手动管理多个 JobManager 和 TaskManager 可能变得复杂,特别是在需要高可用性和故障恢复的情况下。
- 缺乏高级特性:相比于集成 Yarn 或 Kubernetes 的部署模式,Standalone 模式缺乏一些高级的资源管理特性,如自动化资源分配、动态扩展、集群隔离等。
使用场景
- 开发与测试:Standalone 模式非常适合用于 Flink 应用的开发与测试阶段,因为它配置简单,易于快速部署和运行作业。
- 小型集群:在资源固定且规模较小的集群中,Standalone 模式可以提供足够的灵活性和控制力。
- 边缘计算:在某些资源有限的环境(如边缘计算或嵌入式设备)中,Standalone 模式可以提供一种轻量级的分布式计算解决方案。
扩展性与限制
- 扩展性有限:虽然 Standalone 模式允许在固定资源下进行扩展,但由于缺乏动态资源管理,扩展能力有限,难以应对大规模或动态变化的工作负载。
- 适应性:对于需要频繁调整资源的场景,Standalone 模式可能不太适用,但在资源固定且作业负载相对稳定的情况下,它可以提供稳定可靠的服务。
添加依赖
<build>
<plugins>
<!-- 打jar插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
pom结构如下所示: