YARN 资源调度器

1.基本架构
资源调度器是 YARN 中最核心的组件之一,且是插拔式的,它定义了一整套接口规范以便用户可按照需要实现自己的调度器。
YARN 自带了 FIFO,Capacity Scheduler,Fair Scheduler 三种常用资源调度器,用户也可以按照接口规范编写一个新的资源调度器。

可通过参数 yarn.resourcemanager.scheduler.class 设置资源调度器的主类,默认是 Capacity Scheduler 容量调度器
在这里插入图片描述
YARN的资源管理器实际上是一个事件处理器,它需要处理来自外部的六种 Scheduler-EventType 类型的事件,并根据时间的具体含义进行相应的处理,六种事件含义如下:
①NODE_REMOVED:表示集群中移除了一个计算节点(可能是故障或管理员主动移除),资源调度器需要从可分配资源总量中移除相应的资源量
②NODE_ADDED:表示集群中增加了一个计算节点,资源调度器需要将新增的资源量添加到可分配的资源总量中
③APPLICATION_ADDED:表示 ResourceManager 收到一个新的 Application。通常,资源管理器需要为每个 Application 维护一个独立的数据机构,以便于统一管理和资源分配。资源管理器需要将 Application 添加到的数据结构中
④APPLICATION_REMOVED:表示一个 Application 运行结束(可能成功或失败),资源管理器需要将该 Application 从相应的数据结构中清除
⑤CONTAINER_EXPIRED:当资源调度器将一个 Container 分配给某个 ApplicationMaster 后,如果该 ApplicationMaster 在一定时间间隔内没有使用该 Container ,则资源调度器回对该 Container 进行回收后再分配
⑥NODE_UPDATE:ResourceManager 收到 NodeManager 通过心跳机制汇报的信息后,由于此时可能有新的 Container 得到释放,会触发资源分配。该事件是六个事件中最重要的事件,会触发资源调度器最核心的资源分配机制

2.资源表示模型
YARN 支持内存和 CPU 两种资源类型的管理和分配。YARN 采用动态资源分配机制,NodeManager 启动时会向 ResourceManager 注册,注册信息中包括该节点可分配的 CPU 和内存总量,相关配置参数如下:
①yarn.nodemanager.resource.memory-mb:可分配的物理内存总量,默认为 8 * 1024 MB
②yarn.nodemanager.vmem-pmem-ratio:任务使用单位物理内存量对应最多可使用的虚拟内存两,默认值是 2.1,表示每使用 1 MB的物理内存,最多可以使用 2.1 MB 的虚拟内存总量
③yarn.nodemanager.resource.cpu-vcores:可分配的虚拟 CPU 核数,默认是8。为了更细粒度地划分 CPU 资源和考虑到 CPU 性能异构性,YARN允许管理员根据实际需要和 CPU 性能将每

你可能感兴趣的:(笔记,linux,hadoop,yarn)