Yarn的初步学习

一、hadoop v1和v2的版本比较

    1、v1版本中的jobTracker负责资源调度和任务跟踪、监控,成为整个集群的瓶颈,原因如下:

--所有的任务的状态都存储在jobTracker中的内存中,当任务量激增时存在瓶颈

--(还有一个粗粒度的锁,还没具体学习,这里不做陈述)

    2、v1版本中的JobTracker的任务在v2版本中分到Yarn上,分为两个组件:

--ResourceManager负责资源调度

--applicationMaster负责作业和任务的跟踪和管理

    3、新添加的nodemanager负责资源的使用和监控

    4、在hadoop2.4之前存在resourceManager的单点故障问题,在2.4中添加了resourceManager的HA

 

二、名字解释

resourceManager:

  --一个纯粹的调度器

  --根据应用程序的要求严格限制系统的可用资源

  --在保证容量、公平性及服务等级的情况下,优化集群资源利用率,让所有资源都得到充分利用

  --有可插拔的资源调度算法,如:注重容量调度还是注重公平调度

 

applicationMaster

  --负责与resourceManager通信,协商应用程序所需要的资源,并和nodeManager系统工作执行和监控Container以及他们的资源消耗

  --在resourceManager处获取Container,并监控

 

资源类型:

  --资源名称(主机名、机架名、以及复杂的网络拓扑)

  --内存量

  --CPU

  --其他资源:磁盘盒网络IO等

 

Container

  --对资源类型的一个量化

 

requestManager

  --applicationMaster向resourceManager提交的请求Container的请求

 

三、任务执行流程(以mapreduce计算任务为例)

    通过Client提交应用请求到资源管理器resourceManager,创建应用程序上下文对象和相应applicationMaster,resourceManager并向客户端返回状

 

态,mapduce中每个task 关于与监控由applicationMaster程序负责

applicationMaster向resourceManager通过ResourceRequest申请资源(Container),resourceManager通过Scheduler分配一个Container来响应资源,为

 

应用程序授予在特定主机上使用资源的权利,applicationMaster取走Container ,交给NodeManager,nodeManager根据响应的资源启动Container对应的

 

任务进程。applicationMaster向nodeManager申请启动和停止Container

applicationMaster请求的资源包括

 

四、

    为了对应hadoop集群的本地化特性,dataNode上运行着NodeManager,NodeManager可直接使用本地机器上的块,而无需在网络中传输。

 

注:

    另外,在其它计算模型比如pig中  也会为一组程序启动一个applicationMaster,而不是一个任务对应一个,这跟mapduce计算模型是不同的。

 

你可能感兴趣的:(hadoop,大数据,yarn)