9.15 分布式资源调度框架yarn
分布式资源调度框架yarn
yarn的前世今生
-
Hadoop1.x 版本中最大的问题是资源问题
-
对数据的处理和资源调度主要依赖MapReduce完成,只能运行MapReduce程序
-
JobTracker负责资源管理和程序调度,压力较大
-
-
Hadoop2.x 版本添加 YARN
- 主要负责集群资源管理
yarn概述
- YARN(Yet Another Resource Negotiator)核心思想是将资源管理和任务的监控和调度分离
- 通用的资源管理系统,可为不同的应用(MapReduce、Spark、Flink等)提供统一的资源管理和调度
- 它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处
yarn的基本架构核心组件
-
YARN的架构是master/slaves的主从架构
-
master:ResourceManager->全局资源管理
- 负责集群全局统一的资源管理、调度、分配
-
slave:NodeManager->节点资源管理器
-
启动了NodeManager进程的节点
-
负责管理节点的资源及使用情况
-
-
YARN核心组件(包含ResourceManager和NodeManager)
- ApplicationMaster
- Container
-
yarn架构核心组件-ResouceManager
- ResourceManager组成
- ResourceScheduler->资源调度器,根据节点的容量、队列情况,为应用程序分配资源
- Application Manager->应用程序管理器,负责接受Client端传输的job请求
- ResourceManager功能
- 处理客户端请求
- 监控NodeManager
- 启动和监控ApplicationMaster,进行必要的重启
- 整个系统的资源分配和调度
yarn架构核心组件-NodeManager
- NodeManager功能
- 本节点上的资源管理和任务管理
- 定时向ResourceManager汇报本节点上的资源使用情况和各个Container的运行情况
- 接收和处理来自ResourceManager的Container启动和停止的各种命令
- 处理来自ApplicationMaster的指令,比如启动MapTask和ReduceTask指令
YARN架构核心组件-ApplicationMaster
- ApplicationMaster功能
- 每个应用程序对应一个ApplicationMaster,负责单个应用程序的管理
- 负责数据切分
- 为应用程序向ResourceManager申请资源(Container),并分配内部任务(MapTask和ReduceTask)
- 与NodeManager通信来启动/停止任务,Task都是运行在Container中的
- 负责任务的监控和容错,当某些Task运行出错,进行容错处理
YARN架构核心组件-Container
- Container是YARN中的资源抽象,封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等
- Container类似于一个虚拟机,可以在上面执行任务
yarn的工作机制
yarn上提交MapReduce程序
- 运行框架自带的MapReduce程序
- Jar位置
- $HADOOP_HOME/share/hadoop/mapreduce
- Jar名称
- hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar
- Jar位置
- 执行WordCount程序
- 使用YARN WebUI查看任务执行情况
- YARN整体资源情况
- Mapper运行情况详细信息
- Reducer运行情况详细信息
- 任务历史信息
启动JboHistoryServer
- JobHistoryServer:作业历史服务
- 记录在yarn中调度的作业历史运行情况情况
- 启动JobHistoryServer
- 命令位置
- $HADOOP_HOME/sbin/mr-jobhistory-daemon.sh
- 启动命令(集群中每台都执行)
- mr-jobhistory-daemon.sh start historyserver
- 验证
- jps查看进程,存在JobHistoryServer进程证明启动成功
- 命令位置
yarn的资源调度器
- 目前Hadoop作业调度器有三种
- FIFO:先进先出调度器
- Capacity Scheduler:容量调度器
- Fair Scheduler:公平调度器
- 默认的作业调度器可以在yarn-default.xml文件中查看,属性如下
- yarn.resourcemanager.scheduler.class
调度器 - Fair Scheduler:公平调度器
- yarn.resourcemanager.scheduler.class
- 默认的作业调度器可以在yarn-default.xml文件中查看,属性如下
- yarn.resourcemanager.scheduler.class
- Hadoop版本2.6.0-cdh5.14.2的默认调度器是公平调度器