我正在使用Yarn框架开发长期运行的服务。 ApplicationMaster代码只是分配并启动一些容器,并使其永久运行。 AM还定期报告每个正在运行的容器的状态。通过将它们明确存储到内存映射中,AM知道了它分配并启动的每个容器。
现在的问题是:在AM重新启动的情况下,即进行了新的尝试。新的AM如何知道旧AM分配的所有正在运行的容器?新的AM需要此功能,因为它需要报告它们的状态。
AMRMClient显然没有用于AM的接口来获取其应用程序的容器列表。
答案 0 :(得分:0)
AM(每个作业一个)是在RM(每个群集一个)为该作业保留内存和Vcore之后初始化的容器。 您是在说AM故障,需要重新启动吗?如果是这样,则新的AM将使用新的容器开始新的尝试(它将失去与旧容器的连接),并且由于NM(NodeManager)对RM的心跳(这会定期发生),在超时后,旧的AM将被释放。
关于代码,我不确定如何实现。