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

Flink基于Yarn多种启动方式详解


Flink基于Yarn多种启动方式详解

随着大数据实时计算需求的日益增长,Flink已成为业界主流的流处理引擎。而在企业级大数据平台中,资源管理和作业调度一般交由Yarn完成。Flink与Yarn深度集成后,不仅充分利用Hadoop生态资源,还能灵活应对各种作业调度和资源隔离需求。本文将系统介绍Flink on Yarn的多种启动方式、适用场景、配置方法及常见问题。


一、Yarn简介

Yarn(Yet Another Resource Negotiator)是Hadoop生态的资源管理和调度平台。它负责集群资源统一分配、作业调度和生命周期管理,是目前大数据平台主流的资源管理框架。

Flink on Yarn指的是将Flink集群作为Yarn的一个应用提交和管理,利用Yarn实现弹性资源分配、作业隔离和高可用。


二、Flink on Yarn的三种运行模式

Flink on Yarn主要支持三种运行模式,分别适用于不同的业务场景:

1. Session Cluster(会话模式)

  • 含义:先在Yarn上启动一个长期运行的Flink集群(Session),后续所有作业都提交到该集群上运行。
  • 优点
    • 启动速度快(作业无需重复拉起集群)。
    • 多个作业可共享资源,适合高频、短小作业提交。
  • 缺点
    • 作业间资源竞争,彼此影响;一个作业异常可能影响整个Session。
  • 适用场景:开发测试环境、实时查询、多个小作业并发运行。

2. Per-Job Cluster(每作业独占模式)

  • 含义:每提交一个Flink作业,自动在Yarn上启动一个全新的Flink集群。作业执行完毕后,集群自动销毁。
  • 优点
    • 作业完全隔离,互不影响。
    • 资源独立分配,便于作业级监控和运维。
  • 缺点
    • 启动集群有一定延迟。
    • 不适合大量小作业频繁提交。
  • 适用场景:生产环境、重要作业、作业独立性要求高的场景。

3. Application Mode(应用模式,Flink 1.11+)

  • 含义:Flink程序的main方法在客户端打包后,通过Yarn ApplicationMaster启动并运行。整个应用的生命周期由Yarn管理。
  • 优点
    • 完整的生命周期管理。
    • 支持资源动态分配。
    • 适合自动化运维与云原生场景。
  • 缺点
    • 启动速度略慢于Session模式。
    • 需要Flink 1.11及以上版本。
  • 适用场景:自动化大数据平台、云原生、作业全生命周期管理。

三、Flink on Yarn各模式启动命令与配置

1. Yarn Session Cluster启动方式

启动Yarn Session
./bin/yarn-session.sh -d \-nm FlinkSessionCluster \-d                   # 后台启动-qu root.default     # 指定Yarn队列(可选)-n 2                 # 启动2个TaskManager-s 2                 # 每个TaskManager 2个slot-jm 1024             # JobManager内存-tm 2048             # TaskManager内存
提交作业到Session Cluster
./bin/flink run -m yarn-cluster \-yid <applicationId> \-c com.example.MyJob \myjob.jar

-yid为Yarn Session对应的ApplicationId,需在Web UI或yarn application -list中查询。

关闭Session Cluster
./bin/yarn-session.sh -id <applicationId> -shutdown

2. Per-Job Cluster启动方式

直接提交作业(自动拉起Flink集群)
./bin/flink run -m yarn-cluster \-yqu root.default \-yn 2 \-ys 2 \-yjm 1024m \-ytm 2048m \-c com.example.MyJob \myjob.jar
  • -m yarn-cluster 指定Yarn集群模式
  • -yn TaskManager数量
  • -ys 每个TaskManager的slot数
  • -yjm JobManager内存
  • -ytm TaskManager内存

作业执行完毕后,Yarn会自动回收该Flink集群资源。

3. Application Mode启动方式(Flink 1.11+)

启动命令
./bin/flink run-application -t yarn-application \-Dyarn.application.name=FlinkAppCluster \-Dyarn.application.queue=root.default \-Djobmanager.memory.process.size=1024m \-Dtaskmanager.memory.process.size=2048m \-Dtaskmanager.numberOfTaskSlots=2 \-c com.example.MyApp \myapp.jar
  • -t yarn-application:指定Application模式
  • 其余参数同Per-Job模式

Application模式下,Flink作业的main方法在Yarn ApplicationMaster进程中执行,生命周期与Yarn Application绑定。


四、配置参数详解与优化建议

  • 资源参数
    • -yn/-n:TaskManager数量
    • -ys/-s:每个TaskManager的slot数
    • -yjm/-jm:JobManager内存
    • -ytm/-tm:TaskManager内存
  • 队列参数
    • -qu/-yqu:指定Yarn队列
  • JAR包相关
    • -c:指定主类
    • -j:指定JAR包路径

建议

  • 合理分配内存和slot,避免资源碎片和浪费。
  • 生产环境建议开启Checkpoint、Savepoint,并将其目录指向HDFS或S3等分布式存储。
  • 合理设置Yarn队列,确保不同业务资源隔离。

五、企业应用场景选型建议

  • Session Cluster:适合开发调试、低优先级作业、频繁提交的小作业。
  • Per-Job Cluster:适合生产环境关键作业、作业间需资源隔离、便于独立监控和升级。
  • Application Mode:适合自动化平台、云原生场景、作业全生命周期管理。

企业内部常见做法:开发测试用Session模式,核心生产作业用Per-Job或Application模式。


六、常见问题与排查

  1. 启动失败/资源不足

    • 检查Yarn队列剩余资源、参数设置是否合理。
    • 查看Yarn ResourceManager的Web UI和日志。
  2. 作业提交后无响应

    • 检查Yarn Application状态,确认JobManager是否正常启动。
    • 检查防火墙、端口连通性。
  3. 作业异常退出

    • 查看Flink Web UI和Yarn Application日志,排查代码或资源问题。
  4. 参数未生效

    • 注意Flink/Yarn参数优先级,部分参数需在flink-conf.yaml中全局配置。

七、总结

Flink on Yarn极大提升了流计算作业的资源利用率、弹性扩展能力和运维便捷性。掌握Session、Per-Job、Application三种模式的启动方式和适用场景,有助于企业根据业务需求构建高效、稳定、可扩展的流处理平台。

如需深入了解Flink on Yarn的高可用配置、与Kafka/HBase等组件集成、资源调度优化等内容,欢迎关注后续博客或留言交流!


http://www.xdnf.cn/news/611875.html

相关文章:

  • C++之fmt库介绍和使用(3)
  • CARIS HIPS and SIPS 12.1是专业的多波束水深数据和声呐图像处理软件
  • Graph RAG应用实战
  • socc 19 echash论文部分解读
  • 深度学习优化器相关问题
  • yolov5 安卓运行
  • Docker部署Zookeeper集群
  • C++学习之打车软件—JNI终端编程业务④https协议session开发
  • Open CASCADE学习|非线性方程组求解技术详解
  • 公司内网本地的SVN没有公网IP地址,在家外网也能远程访问SVN服务!
  • postgresql 的优劣势比较
  • 多模态理解大模型高性能优化丨前沿多模态模型开发与应用实战第七期
  • WPF性能优化之延迟加载(解决页面卡顿问题)
  • Python面向对象编程:封装、继承与多态
  • 七彩喜适老化改造:让每个空间成为长者尊严的守护者
  • Jouier 普及组十连测 R4
  • leetcode-快慢指针系列
  • 利用chat搜索需求相关视频链接
  • 45道工程模块化高频题整理(附答案背诵版)
  • `ol/proj`简介
  • 在日本,书法也是美术
  • WebSphere Application Server(WAS)8.5.5教程第十二讲:EJB
  • Zephyr OS 使能和失能蓝牙协议栈的操作
  • [linux] git强行拉取并覆盖
  • VR全景制作方法都有哪些?需要注意什么?
  • IT | 词汇科普手册Ⅱ
  • Leetcode 3313. 查找树中最后标记的节点
  • FreeGPT+内网穿透外网远程连接使用,搞定ChatGPT访问难题!
  • LPRNet实现车牌识别并完成ONNX和TensorRT推理
  • 怎么判断一个Android APP使用了Electron 这个跨端框架