一、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计算模型是不同的。