
本文共 928 字,大约阅读时间需要 3 分钟。
状态机解析:RMApp、RMAppAttempt、RMContainer
1. 概述
在Hadoop的资源管理框架中,RMApp(资源管理应用)是核心状态机之一。它与RMAppAttempt和RMContainer共同构成了资源管理的关键流程。状态机的主要流程如下:
RMApp → RMAppAttempt → RMContainer
在实际运行中,RMApp负责接收用户提交的资源请求,并根据预定的规则完成应用的提交流程。
2. RMApp
RMApp(资源管理应用程序)是Hadoop资源管理的入口。它负责处理用户提交的应用程序,并将其转化为RMAppAttempt(资源管理应用尝试)进行后续处理。
RMAppImpl(RMApp的实现类)不仅管理应用程序的状态,还保存了丰富的应用信息,包括但不限于:
- 应用程序名称
- 所属队列名称
- 启动时间
- 所有Attempt信息
状态说明
RMApp的运行状态分为多个阶段,主要包括以下几种状态:
NEW_SAVING:在这个状态下,RMAppImpl会将应用程序的基本信息暂时存储起来,以便在系统故障或需要重启时恢复应用程序的运行状态。
SUBMITTED:在合法性校验通过后,RMAppImpl会创建对应的RMAppAttempt。这个阶段是应用程序提交的关键节点。
ACCEPTED:资源调度器(如Capacity Scheduler)完成资源检查后,RMAppImpl会进入这个状态。此时管理员可以根据配置的限制进行资源分配,超过限制的提交请求会被拒绝。
3. RMAppAttempt
RMAppAttempt是RMApp的直接子状态,负责处理单个应用程序的运行。它是资源管理流程中的关键节点,负责接收资源分配指令并启动应用程序。
在实际运行中,RMAppAttempt负责跟踪应用程序的运行状态,并根据调度器的反馈调整资源分配策略。
4. RMContainer
RMContainer是RMAppAttempt的最终目标状态,代表应用程序已经被分配到具体的资源容器中。这个阶段是应用程序执行的实际开始点。
通过上述状态机流程,可以清晰地看到Hadoop资源管理框架如何高效地管理用户提交的应用程序。
发表评论
最新留言
关于作者
