yarn 学习心得 yarn 上的程序开发
1 概况
YARN 是 Hadoop 系统上的资源统一管理平台,其主要作用
是实现集群资源的统一管理和调度。 YARN 是一个高速发展
中的资源管理与调度平台,目前还不是很完善,当前只支持
CPU 和内存的分配。作为资源调度器, YARN 支持如下几个
资源调度语义:获取指定节点的特定资源量,如 node1上 4
个虚拟 CPU 核, 1GB 内存 (YARN 上的资源使用容器包装 );
获取指定机架上的特定资源量;
支持资源黑名单 (添加 /删除 );
要求某些应用归还指定的资源,通常用于抢占场景。
YARN 目前不支持的调度语义有 (或者说支持得不是很好 ):
获取任意节点上的特定资源量;
获取任意机架上的特定资源量;
获取一组或几组符合特定规则的资源量;
细粒度资源分配,如获取主频大于 2.4G 的 CPU 等;
动态调整资源容器容量 (对长应用比较重要 )。
YARN 上的应用按其运行的生命周期长短,可以分为长应用
和短应用,短应用通常是分析作业,作业从提交到完成,所
耗的时间是有限的, 作业完成后, 其占用的资源就会被释放,
归还给 YARN 进行再次分配。 长应用通常是一些服务, 应用
启动后除非意外或人为终止,将一直运行下去。长应用通常
长期占用集群上的一些资源,且运行期间对资源的需求也时
常变化,因此,动态调整资源对长应用来说比较重要。 目前,
YARN 对长应用的支持还不是很好,从社区讨论来看,受
hortonworks 的 Hoya 项目推动, YARN 在 2.20版本后加强了
对长应用的支持。
2 应用开发
2.1 概述
YARN 的应用开发主要过程如下: 图 2.1 YARN 应
用开发流程
YARN 主要由 ResourceManager和 NodeManager
组成, ResourceManager负责资源的管理与分配,
NodeManager 则负责具体资源的隔离。 YARN 中,资源使用
容器进行封装。 用户在 YARN 上开发应用时, 需要实现如下
三个模块: Application Client: 应用客户端用于将应用提交到
YARN 上,使应用运行在 YARN 上,同时,监控应用的运行
状态,控制应用的运行;
资源/YARN/支持/获取/开发/特定/运行/对长/分配/资源量/
资源/YARN/支持/获取/开发/特定/运行/对长/分配/资源量/
-->