1.1、MapReduce 的发展
1.1.1、MRv1 的缺陷
早在 Hadoop1.x 版本,当时采用的是 MRv1 版本的 MapReduce 编程模型。MRv1 版本的实现 都封装在 org.apache.hadoop.mapred 包中,MRv1 的 Map 和 Reduce 是通过接口实现的。MRv1 包括三个部分: 运行时环境(JobTracker 和 TaskTracker) 编程模型(MapReduce) 数据处理引擎(MapTask 和 ReduceTask)
MRv1 存在以下不足: 可扩展性差:在运行时,JobTracker 既负责资源管理又负责任务调度,当集群繁忙时, JobTracker 很容易成为瓶颈,最终导致它的可扩展性问题。
可用性差:采用了单节点的 Master,没有备用 Master 及选举操作,这导致一旦 Master 出 现故障,整个集群将不可用。单点故障
资源利用率低:TaskTracker 使用“slot”等量划分本节点上的资源量。“slot”代表计算资 源(CPU、内存等)。一个 Task 获取到一个 slot 后才有机会运行,Hadoop 调度器负责将各 个 TaskTracker 上的空闲 slot 分配给 Task 使用。一些 Task 并不能充分利用 slot,而其他 Task 也无法使用这些空闲的资源。slot 分为 Map slot 和 Reduce slot 两种,分别供 MapTask 和 ReduceTask 使用。有时会因为作业刚刚启动等原因导致 MapTask 很多,而 Reduce Task 任 务还没有调度的情况,这时 Reduce