请教大佬们一个问题,flink on yarn,用FlinkYarnSessionCli启动session时,tracking-url是如何注册的,也就是yarn app list中tracking-url是怎么注册成flink的dashbord url的,是哪块代码逻辑的,求大佬们指点一下?
tracking URL 是通过 FlinkYarnSessionCli 类中的 run 方法中的 createApplicationSubmissionContext 方法来注册的。具体来说,Flink 在 YARN 上启动时会创建一个 YARN Application,其中会包含 Flink 的 Dashboard URL 信息。在 FlinkYarnSessionCli 类中,会将 Dashboard URL 注册到 YARN 的 Application Report 中,这样就可以在 YARN 的应用列表中看到 Flink 的 Dashboard URL。相关的代码逻辑主要在 FlinkYarnSessionCli 类中的 run 方法中实现。,此回答整理自钉群“【②群】Apache Flink China社区”
在Flink on YARN中,tracking-url
是通过FlinkYarnSessionCli启动session时注册的。具体来说,当您使用FlinkYarnSessionCli启动一个Flink session时,它会创建一个YARN Application,并将该Application的信息注册到YARN的ResourceManager上。
在FlinkYarnSessionCli的代码中,tracking-url
是通过以下步骤注册的:
registerApplicationMaster()
方法,将Flink应用程序注册到YARN的ResourceManager上。registerApplicationMaster()
方法。tracking-url
注册到YARN的Application Report中,以便在YARN的应用列表中显示。具体的代码逻辑可以在FlinkYarnSessionCli类的run()
方法中找到。该方法负责创建YARN ApplicationMaster并执行注册过程。
请注意,以上是一般的流程和代码逻辑,具体的实现可能会因Flink的版本和配置而有所不同。建议您查阅Flink的官方文档和源代码,以获取更详细的信息和准确的代码位置。
在 Apache Flink 中,当您使用 FlinkYarnSessionCli
启动一个 YARN 会话时,tracking URL 的注册是通过与 YARN ResourceManager 的交互完成的。具体逻辑如下:
当 FlinkYarnSessionCli
调用 run()
方法来启动 Flink on YARN 应用程序时,它会创建并提交一个 ApplicationSubmissionContext
给 YARN ResourceManager。
在创建 ApplicationSubmissionContext
的过程中,会设置一系列属性和配置,包括主类(通常是 org.apache.flink.yarn.YarnApplicationMasterRunner
)、应用程序 jar 包、配置文件以及其他相关的资源请求信息。
当 ApplicationMaster (AM) 在 YARN 容器中启动后,它会初始化 Flink 运行环境,并启动 Web UI 服务。Web UI 服务的地址由 Flink 自身生成并绑定到一个随机的本地端口上。
AM 在初始化完成后,会将其运行状态报告给 YARN ResourceManager,其中就包含了 Web UI 的地址信息。这部分逻辑通常位于 Flink YARN 客户端代码中,例如 YarnClusterDescriptor
类及其子类中关于如何封装和提交 YARN 应用的相关方法里。
YARN ResourceManager 收到 AM 的状态报告后,在其内部维护的应用列表中更新该应用的状态信息,其中包括了 tracking URL,即指向 Flink Dashboard 的 URL。
用户可以通过 yarn application -list
或者查询 YARN ResourceManager 的 REST API 来获取这些已注册的 tracking URL。
具体的代码实现可以参考 Flink 源码中的 org.apache.flink.yarn.YarnClusterDescriptor
和相关类的方法,比如 createApplicationSubmissionContext()
,以及 YarnApplicationMasterRunner
类的初始化逻辑。由于 Flink 版本的差异,实际代码位置可能略有不同,请查阅对应版本的源代码了解详细实现。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。