大数据-110 Flink 安装与部署指南 支持 Local/Standalone/YARN 的多种模式

点一下关注吧!!!非常感谢!!持续更新!!!

🚀 AI篇持续更新中!(长期更新)

AI炼丹日志-31- 千呼万唤始出来 GPT-5 发布!"快的模型 + 深度思考模型 + 实时路由",持续打造实用AI工具指南!📐🤖

💻 Java篇正式开启!(300篇)

目前2025年09月29日更新到: Java-136 深入浅出 MySQL Spring Boot @Transactional 使用指南:事务传播、隔离级别与异常回滚策略 MyBatis 已完结,Spring 已完结,Nginx已完结,Tomcat已完结,分布式服务正在更新!深入浅出助你打牢基础!

📊 大数据板块已完成多项干货更新(300篇):

包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈! 大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT案例 详解

章节内容

上节完成了如下的内容:

  • Flink 重要角色
  • TaskManager
  • ResourceManager
  • 各个组件之间的关系
  • Sink Task SubTask 等等内容

安装模式

Flink支持多种安装模式:

1. Local(本地)模式

  • 定义:单机运行模式,适合开发和调试
  • 特点
    • 无需额外配置,开箱即用
    • 只能在单个JVM进程中运行
    • 支持本地IDE调试(如IntelliJ IDEA)
  • 适用场景
    • 本地开发测试
    • 小规模数据验证
    • 学习Flink基础功能
  • 示例 :通过bin/start-local.sh启动本地环境

2. Standalone独立模式

  • 定义:Flink自带的集群管理方式
  • 特点
    • 需要手动部署和管理集群
    • 包含JobManager和TaskManager
    • 资源分配由Flink自身完成
  • 优势
    • 不依赖外部资源管理器
    • 部署相对简单
  • 适用场景
    • 中小规模生产环境
    • 对Hadoop生态依赖较少的场景
    • 需要快速搭建Flink集群的情况
  • 配置要点
    • 需配置flink-conf.yaml中的集群参数
    • 需要设置TaskManager数量及资源分配

3. YARN模式

  • 定义:基于Hadoop YARN的资源管理模式
  • 特点
    • 计算资源由YARN统一调度
    • 支持动态资源分配
    • 可与其他YARN应用共存
  • 运行模式
    • Session模式(长期运行集群)
    • Per-Job模式(按作业分配资源)
  • 优势
    • 资源利用率高
    • 与Hadoop生态无缝集成
    • 适合大规模生产环境
  • 适用场景
    • 企业级大数据平台
    • 需要与其他Hadoop组件协同工作的场景
    • 资源需求波动的应用
  • 配置要求
    • 需要正确配置Hadoop环境
    • 需设置YARN相关参数
    • 通常需要配置高可用(HA)## Flink支持多种安装模式:

基础环境

基于我们之前的大数据的环境:

  • JAVA_HOME 之前已经配好了
  • SSH 免密登录 三台节点之间 之前也配置好了

集群规划

我们对应的机器是:

  • h121 2C4G
  • h122 2C4G
  • h123 2C2G

下载安装

选择的版本是:Flink 1.11.1 版本

shell 复制代码
https://www.apache.org/dyn/closer.lua/flink/flink-1.11.1/flink-1.11.1-bin-scala_2.12.tgz

你也可以直接使用 wget 下载,目前我们登录到服务器 h121 节点上

shell 复制代码
cd /opt/software/
wget https://archive.apache.org/dist/flink/flink-1.11.1/flink-1.11.1-bin-scala_2.12.tgz

等待下载完毕: 解压配置:

shell 复制代码
tar -zxvf flink-1.11.1-bin-scala_2.12.tgz

处理过程如下: 解压完成之后,移动到目录下:

shell 复制代码
mv flink-1.11.1 ../servers/
cd ../servers/
ls

Standalone模式部署

上述我们已经完成了 h121 服务器节点的配置安装,接下来我们修改配置文件。 Standalone 模式是一种相对简单的 Flink 集群部署方式,适合在拥有固定资源的环境中运行 Flink 应用程序。与 YARN 或 Kubernetes 等资源管理平台不同,Standalone 模式完全由用户自行管理集群资源。

在这种模式下,所有的 Flink 组件(如 JobManager 和 TaskManager)都是手动配置和启动的:

  1. JobManager 作为集群的主节点,负责协调分布式执行、调度任务和故障恢复
  2. TaskManager 作为工作节点,负责执行具体的数据处理任务
  3. 用户需要手动配置每个节点的资源分配(如内存、CPU等)

典型的使用场景包括:

  • 开发和测试环境
  • 小规模生产环境
  • 资源需求稳定的长期运行作业

优势在于部署简单,不需要额外的资源管理框架;但缺点是缺乏动态资源分配能力,当作业需求变化时需要人工干预调整资源配置。用户可以通过修改 conf/flink-conf.yaml 文件来配置集群参数,如并行度、内存分配等。

启动与配置

  • 手动启动:在 Standalone 模式下,JobManager 和 TaskManager 需要通过脚本手动启动。可以通过 Flink 提供的启动脚本(如 start-cluster.sh)来启动整个集群,或者单独启动每个组件。
  • 配置文件:Standalone 模式的配置主要通过 flink-conf.yaml 文件进行,配置内容包括 JobManager 和 TaskManager 的数量、内存和 CPU 资源、网络设置等。
shell 复制代码
cd /opt/servers/flink-1.11.1/conf
vim flink-conf.yaml

我们修改的内容有这么两处:

shell 复制代码
jobmanager.rpc.address: h121.wzk.icu
taskmanager.numberOfTaskSlots: 2

修改内容如下所示:

Works

不同的版本可能叫不同的名字,我这里是 works

shell 复制代码
cd /opt/servers/flink-1.11.1/conf
vim workers

写入如下的内容,我们有三台云节点:

shell 复制代码
h121.wzk.icu
h122.wzk.icu
h123.wzk.icu

写入的结果如下图所示:

Master

shell 复制代码
cd /opt/servers/flink-1.11.1/conf
vim masters

写入如下的内容:

shell 复制代码
h121.wzk.icu:8081

写入的结果如下图:

服务启动

暂时就可以先启动进行测试了:

shell 复制代码
cd /opt/servers/flink-1.11.1/bin/
./start-cluster.sh

启动过程如下所示:

启动结果

这里要注意,由于我们之前配置过Spark环境,Spark的Web也是8081端口。 记得把Spark的服务停掉(暂时用不到Spark相关的内容了)。 启动后,我们访问:

shell 复制代码
http://h121.wzk.icu:8081/#/overview

可以通过 JPS 命令查看主机当前的状态:(不需要的你可以停掉)

  • Hadoop
  • HDFS
  • Flink
  • 等等

测试效果

官方提供的Demo,可以运行测试一下是否正常

shell 复制代码
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 应用开发与测试阶段的理想选择。开发者无需配置复杂的集群管理工具(如 YARN 或 Kubernetes),只需在单机或少量机器上快速启动 Flink 进程即可运行作业。例如,开发者可以在本地笔记本电脑上运行 Standalone 模式,验证数据处理逻辑的正确性,或通过 IDE 直接调试代码。此外,Standalone 模式支持快速重启和日志查看,便于排查问题,显著提升开发效率。

  • 小型集群 :对于资源固定且规模较小的生产环境(如 10 台以下节点的集群),Standalone 模式能够提供足够的灵活性和控制力。用户可以通过手动配置 flink-conf.yaml 文件定义 TaskManager 和 JobManager 的资源分配,无需依赖外部资源调度系统。例如,一个数据分析团队可能使用 5 台物理服务器组成 Standalone 集群,长期运行批处理报表作业,既避免了管理复杂集群的开销,又能保证稳定的资源隔离和作业优先级控制。

  • 边缘计算:在资源受限的边缘计算场景(如工业物联网网关、车载设备或远程传感器节点)中,Standalone 模式可作为轻量级的分布式计算解决方案。其优势包括:

    1. 低开销:无需部署 Kubernetes 等容器化平台,减少内存和 CPU 占用;
    2. 快速部署:通过预编译的 Flink 二进制包即可在 ARM 等边缘设备架构上运行;
    3. 离线支持 :适应边缘网络不稳定的环境,独立完成本地数据处理。
      例如,在风力发电机监测系统中,边缘设备可通过 Standalone 模式实时分析振动传感器数据,仅将异常结果上传至云端,大幅降低带宽消耗。

扩展性与限制

  • 扩展性有限:虽然 Standalone 模式允许在固定资源下进行扩展,但由于缺乏动态资源管理,扩展能力有限,难以应对大规模或动态变化的工作负载。
  • 适应性:对于需要频繁调整资源的场景,Standalone 模式可能不太适用,但在资源固定且作业负载相对稳定的情况下,它可以提供稳定可靠的服务。

添加依赖

xml 复制代码
<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结构如下所示:

相关推荐
qinyuan152 小时前
生产环境go-redsync使用示例
后端·go
专家大圣2 小时前
Bililive-go+cpolar:跨平台直播录制的远程管理方案
开发语言·网络·后端·golang·内网穿透·设计工具
zskj_qcxjqr2 小时前
数字大健康崛起:艾灸机器人重构就业生态,传统与科技如何共生?
大数据·人工智能·科技·机器人
Cache技术分享3 小时前
202. Java 异常 - throw 语句的使用
前端·后端
程序员小假3 小时前
我们来说一说 ThreadLocal 内存泄漏
java·后端
IT研究室3 小时前
大数据毕业设计选题推荐-基于大数据的青光眼数据可视化分析系统-大数据-Spark-Hadoop-Bigdata
大数据·hadoop·信息可视化·spark·毕业设计·源码·bigdata
moisture3 小时前
SGLang 混合并行
后端·llm
我不是混子3 小时前
聊聊Spring事件机制
java·后端
Mintopia3 小时前
🚪 当 Next.js 中间件穿上保安制服:请求拦截与权限控制的底层奇幻之旅
前端·后端·next.js