MapReduce2原理解析

1 MapReduce概述

      MapReduce源自于Google的MapReduce论文,该论文发表于2004年12月,现在的Hadoop MapReduce是Google MapReduce的克隆版本。
      MapReduce的特点:①易于编程:用户不用考虑进程间的通信和套接字编程;②良好的扩展性:当集群资源不能满足计算需求时,可以以增加节点的方式达到线性扩展集群的目的;③高容错性:对于节点故障导致失败的作业,MapReduce计算框架会自动地讲作业安排到健康的节点进行,直到任务完成;④适合PB级以上海量数据的离线处理
      然而,MapReduce不擅长的方面:①实时计算:在毫秒级或秒级内返回结果;②流式计算:MapReduce的输入数据集是静态的,不能动态变化;③DAG(Directed Acyclical Graphs)计算:多个应用程序存在依赖关系,后一个应用程序的输入作为前一个的输出。

2 MapReduce1框架的缺陷

      在Hadoop1.X的时代,MapReduce做了很多的事情,其核心是JobTracker。

2.1 MapReduce1架构 在这里插入图片描述

      1)首先客户端要编写好MapReduce程序,然后提交作业(job),job的信息会发送JobTracker上。
      2)JobTracker为该job分配一个ID值,接下来JobTracker做检查操作,确认输入目录是否存在,如果不存在,则会抛错,如果存在继续检查输出目录是否存在,如果存在则会抛错,否则继续执行;当检查工作都做好了JobTracker就会配置Job需要的资源了。
      3)TaskTracker主动与JobTracker通信,接收作业。
      4)TaskTracker执行每一个任务。
(1)JobTracker
      主要负责资源监控管理和作业调度。
      ①监控所有TaskTracker 与job的健康状况,一旦发现失败,就将相应的任务转移到其他节点;
      ②同时JobTracker会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器,而调度器会在资源出现空闲时,选择合适的任务使用这些资源。
(2)TaskTracker
      JobTracker与Task之前的桥梁。
      ①从JobTracker接收并执行各种命令:运行任务、提交任务、Kill任务、重新初始化任务;
      ②周期性地通过心跳机制,将节点健康情况和资源使用情况、各个任务的进度和状态等汇报给JobTracker。
(3)Task Scheduler
      任务调度器(默认FIFO,先按照作业的优先级高低,再按照到达时间的先后选择被执行的作业)。
(4)Map Task
      ①Map引擎;
      ②解析每条数据记录,传递给用户编写的map();
      ③将map()输出数据写入本地磁盘(如果是map-only作业,则直接写入HDFS)。
(5)Reduce Task
      ①Reduce引擎;
      ②从Map Task上远程读取输入数据;
      ③对数据排序;
      ④将数据按照分组传递给用户编写的reduce()。

2.2 MapReduce缺陷

      Hadoop1.x的MapReduce框架的主要局限
      (1)JobTracker 是 Map-reduce 的集中处理点,存在单点故障,可靠性差
      (2)JobTracker 完成了太多的任务,造成了过多的资源消耗,当 map-reduce job 非常多的时候,会造成很大的内存开销,潜在来说,也增加了 JobTracker 失效的风险,这也是业界普遍总结出老 Hadoop 的 Map-Reduce 只能支持 4000 节点主机的上限,扩展性能差
      (3)可预测的延迟:这是用户非常关心的。小作业应该尽可能快地被调度,而当前基于TaskTracker->JobTracker ping(heartbeat)的通信方式代价和延迟过大,比较好的方式是JobTracker->TaskTracker ping, 这样JobTracker可以主动扫描有作业运行的TaskTracker。
      综上所述,MapReduce1已经不能满足我们的需求,因

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值