当前位置: 首页 > news >正文

Flink-介绍

Flink 运行模式

模式名称
依赖环境
高可用支持
弹性伸缩
部署复杂度
适用场景
优点
缺点
Local 模式
个人开发、功能调试、学习测试:适用于单机运行,快速验证逻辑,不需要集群。
部署最简单,只需本地安装 Flink;无需额外配置;启动速度快;调试方便。
只能在单机运行,无法利用多节点计算能力;不能用于生产环境;无容错能力。
Standalone 模式(独立集群模式)
★★
小型测试集群、简单生产环境:适用于固定规模、不需要频繁扩容的任务。
不依赖外部系统;部署简单;可运行在多台机器组成的小集群;资源可控。
无自动弹性伸缩;高可用需额外配置;集群维护需要人工操作;容错能力弱。
Standalone HA 高可用模式
ZooKeeper
★★★
中小型生产环境:适用于需要高可用,但不需要自动扩容的任务。
通过 ZooKeeper 提供 JobManager 主备切换;比普通 Standalone 更稳定;部署相对简单。
仍无自动伸缩;需要维护 ZooKeeper;扩容需人工执行;不适合频繁变化的任务负载。
Yarn 会话模式
Hadoop/Yarn
★★★
多任务共享集群:适用于多个 Flink 作业同时运行,共享 Yarn 集群资源。
利用 Yarn 提供的资源调度和容错;无需单独维护集群;任务启动速度快(因为集群已存在);可动态分配资源。
需要 Hadoop/Yarn 环境;任务间可能竞争资源;集群生命周期需人工管理。
Yarn 单任务模式
Hadoop/Yarn
★★★
独立任务运行:适用于一次性任务或任务隔离要求高的场景。
每个任务独立集群,互不影响;任务结束自动释放资源;更好隔离。
启动开销大(每次都要创建集群);需要 Hadoop/Yarn 环境;不适合频繁短任务。
Kubernetes 会话集群模式
Kubernetes
★★★★
云原生多任务共享:适用于云环境中多个 Flink 作业共享同一个 K8s 集群。
云原生弹性伸缩;容器化部署方便;与其他云服务集成容易;任务启动快(集群已存在)。
需要 Kubernetes 环境;任务间可能竞争资源;集群生命周期需人工维护。
Kubernetes 应用集群模式
Kubernetes
★★★★
云原生单任务运行:适用于云环境中一次性任务或任务隔离要求高的场景。
每个任务独立集群,自动销毁;隔离性好;利用 K8s 弹性伸缩;资源利用率高。
启动开销大;需要 Kubernetes 环境;不适合频繁短任务;集群启动时间依赖 K8s 资源调度速度。

额外说明

  • 高可用支持:指 JobManager 能否在故障时自动切换到备用节点,保证作业继续运行。
  • 弹性伸缩:指能否根据任务负载自动增加或减少 TaskManager 数量。
  • 部署复杂度:★ 越少表示越简单,★ 越多表示依赖环境和配置越复杂。

建议如果是 **开发/测试**:
  • Local 模式 或 **Standalone 模式**(简单快速)
如果是 **生产环境**:
  • 小规模稳定任务 → Standalone HA
  • 大数据平台(Hadoop) → Yarn 模式
  • 云原生环境 → Kubernetes 模式
 
 

Flink Standalone 模式

 

1. 什么是 Flink Standalone 模式?

Flink Standalone 模式,顾名思义,就是 **Flink 自己管理集群,不依赖外部资源管理平台(如 Yarn、Kubernetes、Mesos)**。
在这种模式下,**JobManager** 和 TaskManager 进程由你自己启动和维护,集群的生命周期完全由你掌控。
 
📌 **关键词**:
  • 独立运行(Standalone = 独立)
  • 无外部依赖(只需要 Java 环境)
  • 手动管理集群
     

 

2. 架构原理

在 Standalone 模式下,Flink 集群主要由两类进程组成:
 
  1. JobManager
    1. 负责作业调度、任务分配、容错管理。
    2. 类似于“指挥官”,告诉 TaskManager 要执行哪些任务。
       
  2. TaskManager
    1. 负责实际执行任务(算子),并与其他 TaskManager 交换数据。
    2. 类似于“工人”,执行 JobManager 下发的任务。
       
架构示意图
+-------------------+
|    JobManager     |  <-- 调度、协调、容错
+-------------------+|v
+-------------------+    +-------------------+
|   TaskManager 1   |    |   TaskManager 2   |  <-- 执行算子任务
+-------------------+    +-------------------+
 
client客户端提交任务给JobManager
JobManager负责Flink集群计算资源管理,并分发任务给TaskManager执行
TaskManager定期向JobManager汇报状态
flink的TM就是运行在不同节点上的JVM进程(process),这个进程会拥有一定量的资源。比如内存,cpu,网络,磁盘等。flink将进程的内存进行了划分到多个slot中.图中有2个TaskManager,每个TM有2个slot的,每个slot占有1/2的内存。
 

3. 优点

  • 部署简单:只要有 Java 环境即可运行,适合快速搭建测试集群。
  • 无外部依赖:不需要 Yarn、Kubernetes 等复杂环境。
  • 资源可控:你可以完全掌握集群资源分配。
  • 轻量级:适合小规模任务或学习测试。
     

4. 缺点

  • 无自动弹性伸缩:不能根据负载自动增加或减少节点。
  • 高可用需额外配置:需要手动配置 ZooKeeper 才能实现 HA。
  • 集群维护成本高:节点故障需要人工处理,无法自动恢复。
  • 不适合大规模生产环境:资源调度和管理能力有限。
     

5. 适用场景

  • 开发测试:本地或简单集群环境中快速验证 Flink 程序。
  • 小规模生产环境:任务量稳定、节点数量固定的场景。
  • 学习实验:初学者用来熟悉 Flink 集群运行机制。
     

部署方式

安装包下载https://flink.apache.org/downloads/
先安装java11

JobManager

在JobManager服务器下载安装包,解压安装包:
tar -xzf flink-1.15.4-bin-scala_2.12.tgz -C /data/flink/
修改配置文件flink-conf.yaml
Flink的配置文件都存放于安装目录下的conf目录。在JobManager服务器,进入该目录,执行以下操作。
vim conf/flink-conf.yaml
将文件中jobmanager.rpc.address属性的值改为JobManager机器的ip地址,如下:
jobmanager.rpc.address: 10.20.0.93
jobmanager.bind-host: 0.0.0.0

workers

workers文件必须包含所有需要启动的TaskManager节点的主机名,且每个主机名占一行。在JobManager服务器,执行以下操作
vim conf/workers
修改为其余两台TaskManager的ip地址:(也可以都在同一台服务器上,那么这里是两个相同的ip)
10.20.0.92
10.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
启动流程 Flink 会:
  • 启动本地 JobManager
  • SSH 到 workers 文件中的 IP,启动 TaskManager
启动完毕后,在集群各服务器上通过jsp命令查看Java进程。若各节点存在以下进程,则说明集群启动成功:
JobManager节点:StandaloneSessionClusterEntrypoint
TaskManager1节点:TaskManagerRunner
TaskManager2节点:TaskManagerRunner
尝试提交一个简单任务,如果任务正常执行完毕,则集群一切正常。提交Flink自带的简单任务如下:
./bin/flink run examples/streaming/WordCount.jar

3.6、查看WebUI

通过JobManager节点访问WebUI,可以看到此时是1个JobManager,2个TaskManager,也能以上执行完毕的任务,如下图: ip:8081
 
 

Docker部署

1、配置文件
docker run --name flink-temp flink:2.1 sleep 5
docker cp flink-temp:/opt/flink/conf /home/flink/
docker rm flink-temp
 
 

docker run -d \
--name jobmanager \
-p 6123:6123 \
-p 8081:8081 \
-v /home/flink/conf:/opt/flink/conf \
-v /home/flink/logs:/opt/flink/logs \
-e FLINK_PROPERTIES="jobmanager.rpc.address: 10.10.220.230" \
flink:2.1 jobmanager

 

docker run -d \
--name flink-taskmanager \
-v /home/flink/conf:/opt/flink/conf \
-v /home/flink/logs:/opt/flink/logs \
-e FLINK_PROPERTIES="jobmanager.rpc.address: 10.10.220.230" \
flink:2.1 taskmanager

注意:修改了配置文件中"jobmanager.rpc.address为10.10.220.230  但是启动后还是会被重置。所以加了-e FLINK_PROPERTIES="jobmanager.rpc.address: 10.10.220.230" \

 

 

 

http://www.jsqmd.com/news/29904/

相关文章:

  • 2025 年攻牙机源头厂家最新推荐排行榜:聚焦核心技术与定制能力,精选实力企业采购指南铝材钻孔攻牙机/多轴自动攻牙机公司推荐
  • 2025年金黄色聚合氯化铝制造企业权威推荐榜单:喷雾干燥型聚合氯化铝/棕褐色聚合氯化铝/碱式聚合氯化铝源头厂家精选
  • xxl-job provider netty_http server caught exception
  • 2025 年滑台源头厂家最新推荐口碑排行榜:精选行业实力口碑俱佳企业,涵盖直线 / 电动 / 线性 / 同步带 / 丝杆滑台
  • 2025 最新推荐!钻孔机定制厂家权威排行榜发布,全品类非标定制实力品牌 + 技术测评优选指南强力/轮毂多孔钻孔机/钻孔机专机定制公司推荐
  • 2025年新疆初三复读班权威推荐榜单:户籍地中考复读/中考复读/初三补习班学校精选
  • 线程同步机制
  • 2025 年最新电缸源头厂家推荐排行榜:聚焦优质供应企业,助力企业精准选择传动元件合作伙伴同步带电缸/电动缸公司推荐
  • 从客户流失到口碑爆棚:我们如何用ttkefu让满意度飙升30%
  • 这是一场豪赌
  • 2025.11.03
  • MIT_65840测试网络环境的搭建与实现
  • 特征提取之自动编码器
  • 2025 年最新推荐!天津网站建设公司综合实力排行榜:含外贸、高端、模板建站等领域,助力企业选靠谱服务商
  • 2025年新疆高三复读班权威推荐榜单:高三集训班/高三冲刺班/高三复读全日制学校精选
  • 2025 年最新磁健大健康烯磁 60 床垫厂家推荐榜:精选优质品牌,展现卓越品质与专业实力磁健/巴马地磁/地磁 60 床垫公司推荐
  • 服务器文件夹自动同步解决方案,实现高效、安全的数据管理
  • WTAPI框架微信开发经验
  • 高斯分布
  • NSSCTF-Pwn-[HGAME 2023 week1]simple_shellcode
  • 【一句日历】2025年11月
  • Just Daydreaming CSP2025 游记
  • CSP 2025 邮寄
  • .NET 8.0 + Vue 企业级在线培训系统(开源、免费、支持多种主流数据库)
  • 2025年度电厂钢格栅生产厂家TOP5权威推荐:全面解析,精准选型指南
  • 如何排查“链接 HTTPS”问题,工程化思路与iOS抓包流程
  • 2025年靠谱精密轧机服务厂商推荐,精密轧机源头厂家与靠谱生产商全解析
  • 为什么2025的小程序开始“去轻量化”?谈新一代小程序设计趋势
  • 2025年新疆初三复读班权威推荐榜单:中考复读/户籍地中考复读/初三补习班学校精选
  • 2025年中国高效油雾净化设备公司排名:油雾净化设备供应企业与服务商家权威测评与推荐