Hadoop1 ~ Hadoop2
解决的问题:
1. JobTracker 兼具资源管理和作业控制的任务
2. master 单点问题
3. 资源分配mapslot/reduceslot不可共享,资源划分力度粗
4. 无法支持多种计算框架
为什么需要一个弹性计算框架?
因为为了觉得各种数据密集型计算问题,出现了各种框架(M/R、SPARK、STORM...),考虑到资源利用率,运维成本以及数据共享等因素,希望将这些框架部署到一个公共集群中,让他们共享集群,对资源统一使用
Hadoop2
角色:
1. ResourceManager:负责整个系统的资源管理和分配
A 调度器:根据容量队列等条件将系统中的资源(container)分配给应用程序
B 应用程序管理器:管理应用程序 与调度器协商资源启动AM,监控AM运行状态并失效重启AM
2. ApplicationMaster:负责单个应用程序的管理,用户提交的每个应用程序均包含一个AM,与RM协商获取资源,与NM通信启动、停止任务,监控任务运行状态,失败重试等
3. NodeManager:每个节点上的资源和任务管理器 定时向RM汇报资源使用情况和各container的状态,接受来自AM的container启动、停止命令
4. Container: 资源抽象 目前支持CPU 内存,使用cgroups进行资源隔离