目录
一、概念理解
Apache Hadoop YARN(Yet Another Resource Negotiator,另一种资源协调者)是一种新的Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来的巨大的好处。
YARN产生背景:
a)JobTracker单点故障
b)JobTracker承受的访问压力大,影响系统的扩展性
c)不支持MapReduce之外的计算框架,比如storm、spark、flink
YARN的优势:
资源的统一管理和调度:
- 集群中所有节点的资源(内存、CPU、磁盘、网络等)抽象为Container。计算框架需要资源进行运算任务时需要向YARN申请Container, YARN按照特定的策略对资源进行调度进行Container的分配。
资源隔离:
- YARN使用了轻量级资源隔离机制Cgroups进行资源隔离以避免相互干扰,一旦Container使用的资源量超过事先定义的上限值,就将其杀死。
二、YARN的架构
从YARN的架构来看,它由ResourceManager、NodeManager、JobHistoryServer、Containers、Application Master、job、Task、Client组成。
组件的主要功能介绍:
(1)ResourceManager:
- 处理客户端请求
- 启动/监控ApplicationMaster
- 监控NodeManager
- 资源分配与调度
(2)ApplicationMaster:
- 为应用程序申请资源,并分配给内部任务
- 任务调度、监控与容错
(3)NodeManager:
- 单个节点上的资源管理
- 处理来自ResourceManger的命令
- 处理来自ApplicationMaster的命令
(4)Container:
- 对资源抽象和封装,目的是为了让每个应用程序对应的任务完成执行
(5)JobHistoryServer:
- 负责查询job运行进度及元数据管理。
(6)job:
- 是需要执行的一个工作单元:它包括输入数据、MapReduce程序和配置信息。job也可以叫作Application。
(7)task:
- 一个具体做Mapper或Reducer的独立的工作单元。task运行在NodeManager的Container中。
(8)Client:
- 一个提交给ResourceManager的一个Application程序。
(1)ResourceManager
ResourceManager(RM)是一个全局的资源管理器,负责整个系统