返回

Flink on Yarn per-job 模式的提交流程及源码分析

闲谈



今天为大家带来 秒懂 Flink 系列的第 25 篇原创文章 Flink On Yarn per-job 模式的提交流程及源码分析。

在云计算日益盛行的时代,如何将大数据处理引擎与云计算资源进行高效整合,成为众多数据工程师和开发人员面临的共同挑战。Apache Flink作为一款先进的分布式大数据处理框架,提供了多种与云平台对接的方案,其中Flink on Yarn就是其中之一。Flink on Yarn 允许用户将Flink作业提交到Hadoop Yarn 集群上运行,从而充分利用Hadoop Yarn的资源管理和调度机制,提高资源利用率和作业性能。

在 Flink on Yarn 中,存在两种作业提交模式:session模式和per-job模式。本文将主要关注per-job 模式。在per-job 模式下,每个 Flink 作业都会被提交为一个独立的 Yarn 作业,这使得作业的隔离性和资源分配更加灵活。

Flink on Yarn per-job 模式的提交流程

  1. 作业提交
    用户将Flink作业提交给Flink客户端。

  2. 客户端解析作业配置
    Flink客户端解析作业配置,生成作业图。

  3. 客户端与ResourceManager 通信
    Flink客户端与Yarn的ResourceManager通信,申请资源并启动ApplicationMaster。

  4. ApplicationMaster 启动并注册
    ApplicationMaster启动后,向ResourceManager注册并报告自己的状态。

  5. ApplicationMaster 分配资源
    ApplicationMaster根据作业需求向ResourceManager申请资源,并启动TaskManager。

  6. TaskManager 启动并注册
    TaskManager启动后,向ApplicationMaster注册并报告自己的状态。

  7. 作业部署
    ApplicationMaster将作业图分发给各个TaskManager。

  8. 作业执行
    TaskManager执行作业任务,处理数据。

  9. 作业完成
    作业完成后,TaskManager向ApplicationMaster报告状态,ApplicationMaster向ResourceManager注销并释放资源。

  10. 客户端获取作业结果
    Flink客户端从ApplicationMaster获取作业结果。

Flink on Yarn per-job 模式的源码分析

Flink on Yarn per-job 模式的源码主要集中在flink-yarn模块中。

  1. ApplicationMaster
    ApplicationMaster的源码位于flink-yarn/src/main/java/org/apache/flink/yarn/アプリケーションマスター.java

  2. TaskManager
    TaskManager的源码位于flink-yarn/src/main/java/org/apache/flink/yarn/taskmanager/taskmanager.java

  3. ResourceManager通信
    ResourceManager通信的源码位于flink-yarn/src/main/java/org/apache/flink/yarn/FlinkYarnClient.java

总结

Flink on Yarn per-job 模式是一种灵活高效的作业提交方式,可满足各种复杂场景的需求。通过对Flink on Yarn per-job 模式的提交流程及源码分析,我们对Flink on Yarn的运行机制有了更深入的了解,也为广大开发者提供了实用指南和深入理解。