yarn

yarn
Apache Hadoop YARN  Yet Another Resource Negotiator ,另一种资源协调者)是一种新的  Hadoop  资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
 
YARN 的基本思想
将JobTracker 的两个主要功能(资源管理和作业调度 / 监控)分离,主要方法是创建一个全局的 ResourceManager RM )和若干个针对应用程序的 ApplicationMaster AM )。这里的应用程序是指传统的 MapReduce 作业或作业的 DAG (有向无环图)。
 
YARN的核心思想
将JobTracker TaskTacker 进行分离,它由下面几大构成组件:
a.  一个全局的资源管理器  ResourceManager
b.ResourceManager的每个节点代理  NodeManager
c.  表示每个应用的  ApplicationMaster
d.  每一个 ApplicationMaster 拥有多个 Container 在NodeManager 上运行 [2]  
2 YARN的主要架构
ResourceManager(RM)
RM 是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器( Scheduler )和应用程序管理器( Applications Manager AM )。
调度器 调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。需要注意的是,该调度器是一个“ 纯调度器 ,它不再从事任何与具体应用程序相关的工作,比如不负责监控或者跟踪应用的执行状态等,也不负责重新启动因应用执行失败或者硬件故障而产生的失败任务,这些均交由应用程序相关的 ApplicationMaster 完成。调度器仅根据各个应用程序的资源需求进行资源分配,而资源分配单位用一个抽象概念 资源容器 Resource Container ,简称 Container )表示, Container 是一个动态资源分配单位,它将内存、 CPU 、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量。 此外,该调度器是一个可插拔的组件,用户可根据自己的需要设计新的调度器,YARN 提供了多种直接可用的调度器,比如 Fair Scheduler Capacity Scheduler 等。
应用程序管理器应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster 、监控 ApplicationMaster 运行状态并在失败时重新启动它等。 [2]  
ApplicationMaster(AM)
用户提交的每个应用程序均包含一个AM ,主要功能包括:
与RM 调度器协商以获取资源(用 Container 表示)
将得到的任务进一步分配给内部的任务( 资源的二次分配 )
与NM 通信以启动 / 停止任务
监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。
当前YARN 自带了两个 AM 实现,一个是用于演示 AM 编写方法的实例程序 distributedshell ,它可以申请一定数目的 Container 以并行运行一个 Shell 命令或者 Shell 脚本;另一个是运行 MapReduce 应用程序的 AM—MRAppMaster
注:RM 只负责监控 AM ,在 AM 运行失败时候启动它, RM 并不负责 AM 内部任务的容错,这由 AM 来完成。 [2]  
NodeManager(NM)
NM 是每个节点上的资源和任务管理器 ,一方面,它会定时地向RM 汇报本节点上的资源使用情况和各个 Container 的运行状态;另一方面,它接收并处理来自 AM Container 启动 / 停止等各种请求。 [2]  
Container
Container YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、 CPU 、磁盘、网络等,当 AM RM 申请资源时, RM AM 返回的资源便是用 Container 表示。 YARN 会为每个任务分配一个 Container ,且该任务只能使用该 Container 中描述的资源。
注:1. Container 不同于 MRv1 中的 slot ,它是一个动态资源划分单位,是根据应用程序的需求动态生成的。
2.  现在 YARN 仅支持 CPU 和内存两种资源,且使用了轻量级资源隔离机制 Cgroups 进行资源隔离。
YARN 的资源管理和执行框架都是按主 / 从范例实现的 ——Slave --- 节点管理器( NM )运行、监控每个节点,并向集群的 Master--- 资源管理器 (RM) 报告资源的可用性状态,资源管理器最终为系统里所有应用分配资源。
特定应用的执行由ApplicationMaster 控制, ApplicationMaster 负责将一个应用分割成多个任务,并和资源管理器协调执行所需的资源,资源一旦分配好, ApplicationMaster 就和节点管理器一起安排、执行、监控独立的应用任务。
需要说明的是, YARN 不同服务组件的通信方式采用了事件驱动的异步并发机制,这样可以简化系统的设计。
Yarn 命令
在HADOOP_HOME/bin 目录下,查看 yarn 帮助:
>yarn -help
Usage:  yarn  [--config confdir]  COMMAND
where COMMAND is one of:
  resourcemanager -format-state-store   deletes the RMStateStore
  resourcemanager                       run the ResourceManager
  nodemanager                           run a nodemanager on each slave
  timelineserver                        run the timeline server
  rmadmin                               admin tools
  version                               print the version
  jar <jar>                             run a jar file
   application                            prints application(s)
                                        report/kill application
  applicationattempt                    prints applicationattempt(s)
                                        report
  container                             prints container(s) report
  node                                  prints node report(s)
  queue                                 prints queue information
  logs                                  dump container logs
  classpath                             prints the class path needed to
                                        get the Hadoop jar and the
                                        required libraries
  daemonlog                             get/set the log level for each
                                        daemon
 or
  CLASSNAME                             run the class named CLASSNAME
Most commands print help when invoked w/o parameters.
 
继续查看yarn application 的帮助: yarn application -help
usage: application
 -appStates <States>             Works with -list to filter applications
                                 based on input comma-separated list of
                                 application states. The valid application
                                 state can be one of the following:
                                 ALL,NEW,NEW_SAVING,SUBMITTED,ACCEPTED,RUN
                                 NING,FINISHED,FAILED,KILLED
 -appTypes <Types>               Works with -list to filter applications
                                 based on input comma-separated list of
                                 application types.
 -help                           Displays help for all commands.
 - kill  <Application ID>          Kills the application.
 - list                            List applications. Supports optional use
                                 of -appTypes to filter applications based
                                 on application type, and -appStates to
                                 filter applications based on application
                                 state.
 -movetoqueue <Application ID>   Moves the application to a different
                                 queue.
 - queue  <Queue Name>             Works with the movetoqueue command to
                                 specify which queue to move an
                                 application to.
 -status <Application ID>        Prints the status of the application.
 
yarn application -list
Yarn web ui:
 

Yarn 查看 mart_cld 用户正在运行的任务:
>yarn application -list | grep mart_cld
application_ 1464073905 025_7781           Spark shell
//applicationid 后面的 11 位是时间戳, linux 转为正常时间命令为:
>date -d @1462430473
2016 年  05 月  05 日 星期四  14:41:13 CST
 
spark运行在yarn上,查看运行进度:
> yarn application -list  | grep SPARK
Application-Id Application-Name Application-Type User Queue State Final-State Progress Tracking-URL
application_1468582953415_1281732 Spark shell SPARK recsys root.bdp_jmart_recsys.recsys_szda RUNNING UNDEFINED  10%  http://172.18.149.130:36803
application_1468582953415_1275117 sparksql SPARK mart_risk root.bdp_jmart_risk.bdp_jmart_risk_hkh RUNNING UNDEFINED 10% http://172.18.143.152:5396
yarn application -status  application_1468582953415_1275117 查看一个任务的状态
Application Report :
Application-Id : application_1468582953415_1275117
Application-Name : sparksql
Application-Type : SPARK
User : mart_risk
Queue : root.bdp_jmart_risk.bdp_jmart_risk_hkh
Start-Time : 1471230629474
Finish-Time : 0
Progress : 10%
State : RUNNING
Final-State : UNDEFINED
Tracking-URL : http://172.18.143.152:5396
RPC Port : 0
AM Host : 172.18.143.152
Aggregate Resource Allocation : 21037914859 MB-seconds, 11156043 vcore-seconds
Diagnostics :
yarn收集日志:  yarn logs -applicationId <application ID>
可以收集应用程序的运行日志,但是必须应用程序运行完才能查看(运行完yarn才聚合日志),同时必须开启日志聚合功能(默认是不开启的),修改yarn.log-aggregation-enable为true.
 
Yarn 提供的 restful api:

yarn rest api service
http://{http address of service}/ws/{version}/{resourcepath}
curl --compressed -H "Accept: application/json" -X GET "http://BDS-TEST-002:8088/ws/v1/cluster/apps/application_1470800211073_0030"
curl -X GET "http://BDS-TEST-001:8088/ws/v1/cluster/apps/application_1470800211073_0030"




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值