hadoop 2.6 YarnScheduler接口用到的类分析
来源:互联网 发布:游戏锁定fps软件 编辑:程序博客网 时间:2024/06/10 12:52
YarnScheduler是Yarn所有调度器必须实现的接口,因此,分析它所用的类对于理解调度器的功能,为以后自定义调度器打下了基础。
1. QueueInfo
QueueInfo 报告了一个队列在运行时的信息。它包含以下信息:队列名称。队列中的容量。队列的最大容量。队列的当前容量。子队列。正在运行的程序。队列的状态。
QueueState 是一个枚举类,有两个元素:
STOPPED --Stopped状态不接受任何新程序。
RUNNING --正常状态
public enum QueueState { /** * Stopped - Not accepting submissions of new applications. */ STOPPED, /** * Running - normal operation. */ RUNNING}
QueueACL是一个枚举类,有两个元素:
SUBMIT_APPLICATIONS -- 可以把程序提交到这个队列的ACL。
ADMINISTER_QUEUE -- 管理这个队列的ACL。
public enum QueueACL { /** * ACL to submit applications to the queue. */ SUBMIT_APPLICATIONS, /** * ACL to administer the queue. */ ADMINISTER_QUEUE,}
ApplicationAttemptId 就是ApplicationMaster的一次运行尝试,有两个成员,一个是ApplicationId,一个是int attemptId。
ApplicationId代表一个应用的全局唯一标识,标识的字符串内容为:appIdStrPrefix + this.getClusterTimestamp() + "_" + appIdFormat.get().format(getId());
其中:appIdStrPrefix = "application_";
cluster timestamp = start-time of theResourceManager
getId() 返回当前程序的ID,程序的ID用一个单向递增的计数器生成,然后再格式化成最少4位数的字符串。
allocate方法是最重要的方法,定义如下所示:
Allocation allocate(ApplicationAttemptId appAttemptId, List<ResourceRequest> ask, List<ContainerId> release, List<String> blacklistAdditions, List<String> blacklistRemovals);
ResourceRequest: 代表一个应用程序向ResourceManager申请获得各种Container的请求。它包含
Priority: request的优先级(Priority )
Location: 所需要容器所在的服务器或者机架的位置。‘*’代表任何服务器都可以。
Resource: 以上条件下的容器的数量。
RelaxLocality: 是否可以宽松本地化,默认为true。
ContainerId: 代表一个容器在集群中的全局唯一标识, 包括ApplicationAttemptId appAttemptId, long containerId
SchedulerNodeReport getNodeReport(NodeId nodeId);
NodeId 是一个结点的唯一标识,包括结点的主机名称和端口。
SchedulerNodeReport有三个字段,第一个是已经使用了的资源,第二个是未分配的资源,第三个是正在运行的容器数量。
SchedulerAppReport有三个字段,第一个是正在使用的资源,第二个是保留的资源,第三个是是否处于暂停状态。
ApplicationResourceUsageReport 有以下字段:
numUsedContainers:已经使用了的容器数量。
numReservedContainers:已经保留了的容器数量。
usedResources:已经使用了的资源。
reservedResources:保留的资源。
neededResources: 需要的资源。
memory_seconds:程序分配的内存乘以运行的时间(以秒计)。
vcore_seconds:程序分配的cpu数乘以运行的时间(以秒计)。
public enum RMContainerState { NEW, RESERVED, ALLOCATED, ACQUIRED, RUNNING, COMPLETED, EXPIRED, RELEASED, KILLED}Container代表一个集群中分配了的资源。ResourceManager有对应用分配容器的唯一权威。分配的Container总是在单个结点上,并且有唯一的ContainerId.它有一定量的资源。它包括以下内容:
ContainerId:全局唯一。
NodeId: 分配的结点。
nodeHttpAddress:结点的uri.
Resource:分配的资源。
Priority:优先级
Token:Container的Token.
一般来说,在资源协商过程中,ApplicationMaster从ResourceManager接收Container,然后和NodeManager交互来启动或者停止Container.
QueueEntitlement是队列的应得权益。 在FairScheduler中是weights,在CapacityScheduler中代表Capacity.
- hadoop 2.6 YarnScheduler接口用到的类分析
- hadoop 2.6.0 BlockManager 用到的类分析
- 数据分析要用到的
- hadoop测试用到的天气文件
- 学习Hadoop时用到的linux命令
- smartsniff用到的pcap接口函数
- Hadoop源代码分析(包hadoop.mapred中的MapReduce接口)
- 平时用到的日志分析命令
- 接口和抽象类的理解 和因该在什么时候用到!
- Hadoop源码分析:Writable接口和WritableComparable接口
- 使用Hadoop的IPC接口
- 写几个Hadoop部署用到的小脚本
- 在配置hadoop集群时常用到的基本命令
- ERROR YarnScheduler: Lost executor
- ERROR YarnScheduler: Lost executor
- Hadoop源码分析笔记(十):数据节点--流式接口的实现
- Hadoop Configuration配置类的分析
- hadoop的RPC分析
- 整理 javaweb 连接数据库方法
- 逻辑斯蒂回归1 -- 逻辑斯蒂回归模型
- 悬浮框的探究
- Tomcat启动问题汇总
- 编程练习题 没答案版
- hadoop 2.6 YarnScheduler接口用到的类分析
- JSTL
- 2015 年最受 Linux 爱好者欢迎的软硬件大盘点
- Firefox restClient如何发送post请求解决方法---谷营乡中西软件科技园--zdd
- nc命令详解
- 浙大PAT 1099
- 在面板中绘制图形
- UITableViewCell初始化
- ThinkPHP 2:添加修改删除数据