开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink on YARN 流程之客户端提交流程是什么?

Flink on YARN 流程之客户端提交流程是什么?

展开
收起
Lee_tianbai 2020-12-30 11:58:18 969 0
1 条回答
写回答
取消 提交回答
    1. 执行命令 :bin/flink run -d -m yarn-cluster ... 或 bin/yarn-session.sh ... 来提交 per-job 运行模式或 session 运行模式的应用;
    2. 解析命令参数项并初始化,启动指定运行模式,如果是 per-job 运行模式将 根据命令行参数指定的 Job 主类创建 job graph; ● 如果可以从命令行参数 (-yid ) 或 YARN properties 临时文件 (${java.io.tmpdir}/.yarn-properties-${user.name}) 中获取应用 ID,向指定的应用提交 Job; ● 否则当命令行参数中包含 -d(表示 detached 模式)和 -m yarn-cluster(表 示指定 YARN 集群模式),启动 per-job 运行模式; ● 否则当命令行参数项不包含 -yq(表示查询 YARN 集群可用资源)时,启动 session 运行模式;
    3. 获取 YARN 集群信息、新应用 ID 并启动运行前检查; ● 通 过 YarnClient 向 YARN ResourceManager( 下 文 缩 写 为:YARN RM,YARN Master 节点,负责整个集群资源的管理和调度 ) 请求创建一个 新应用(YARN RM 收到创建应用请求后生成新应用 ID 和 container 申请的 资源上限后返回),并且获取 YARN Slave 节点报告(YARN RM 返回全部 slave 节点的 ID、状态、rack、http 地址、总资源、已使用资源等信息); ● 运行前检查:(1) 简单验证 YARN 集群能否访问;(2) 最大 node 资源能否满足 flink JobManager/TaskManager vcores 资源申请需求;(3) 指定 queue 是 否存在 ( 不存在也只是打印 WARN 信息,后续向 YARN 提交时排除异常并退 出 );(4) 当预期应用申请的 Container 资源会超出 YARN 资源限制时抛出异 常并退出;(5) 当预期应用申请不能被满足时(例如总资源超出 YARN 集群可 用资源总量、Container 申请资源超出 NM 可用资源最大值等)提供一些参考 信息。
    4. 将应用配置 (flink-conf.yaml、logback.xml、log4j.properties) 和相关文 件 (flink jars、ship files、user jars、job graph 等 ) 上传至分布式存储 ( 例 如 HDFS) 的应用暂存目录 (/user/${user.name}/.flink/);
    5. 准备应用提交上下文 (ApplicationSubmissionContext,包括应用的名 称、类型、队列、标签等信息和应用 Master 的 container 的环境变量、 classpath、资源大小等 ),注册处理部署失败的 shutdown hook(清理应 用对应的 HDFS 目录),然后通过 YarnClient 向 YARN RM 提交应用;
    6. 循环等待直到应用状态为 RUNNING,包含两个阶段: ● 循环等待应用提交成功(SUBMITTED):默认每隔 200ms 通过 YarnClient 获取应用报告,如果应用状态不是 NEW 和 NEW_SAVING 则认为提交成 功并退出循环,每循环 10 次会将当前的应用状态输出至日志:"Application submission is not finished, submitted application is still in ",提交成功后 输出日志:"Submitted application " ● 循环等待应用正常运行(RUNNING):每隔 250ms 通过 YarnClient 获取应 用报告,每轮循环也会将当前的应用状态输出至日志:"Deploying cluster, current state "。应用状态成功变为 RUNNING 后将输出日志 "YARN application has been deployed successfully." 并退出循环,如果等到的是非预期状态 如 FAILED/FINISHED/KILLED, 就会在输出 YARN 返回的诊断信息("The YARN application unexpectedly switched to state during deployment. Diagnostics from YARN: ...")之后抛出异常并退出。
    2020-12-30 16:42:36
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载