如何在Yarn ApplicationMaster代码中获取所有正在运行的容器?

时间:2018-09-20 05:22:22

标签: yarn

我正在使用Yarn框架开发长期运行的服务。 ApplicationMaster代码只是分配并启动一些容器,并使其永久运行。 AM还定期报告每个正在运行的容器的状态。通过将它们明确存储到内存映射中,AM知道了它分配并启动的每个容器。

现在的问题是:在AM重新启动的情况下,即进行了新的尝试。新的AM如何知道旧AM分配的所有正在运行的容器?新的AM需要此功能,因为它需要报告它们的状态。

AMRMClient显然没有用于AM的接口来获取其应用程序的容器列表。

1 个答案:

答案 0 :(得分:0)

AM(每个作业一个)是在RM(每个群集一个)为该作业保留内存和Vcore之后初始化的容器。 您是在说AM故障,需要重新启动吗?如果是这样,则新的AM将使用新的容器开始新的尝试(它将失去与旧容器的连接),并且由于NM(NodeManager)对RM的心跳(这会定期发生),在超时后,旧的AM将被释放。

关于代码,我不确定如何实现。