MapReduce架构是Hadoop框架中最核心的设计之一。
MapReduce 的思想简单的一句话解释就是“任务的分解与结果的汇总”。MapReduce 从名字上来看,两个动词Map 和Reduce,
“Map(地图)”就是将一个图分解成为多个子图,
“Reduce(缩小)”就是将分解后多任务处理的结果汇总起来,得出最后的分析结果。
通俗说MapReduce 是一套从海量源数据提取分析元素最后返回结果集的编程模型,将文件分布式存储到硬盘是第一步,而从海量数据中提取分析我们需要的内容就是MapReduce 做的事了。
健康监测
由于Hadoop 处于一个极其脆弱的环境,各计算单元发生故障的可能性是存在的,恰当的健康监测是判断计算单元是否正常工作的基础架构,它有两种基本形式:
第一种:命令/响应(ping/echo):
探测器定时发出一个命令,并希望预定时间内收到一个审查计算单元的响应,这种响应应该力求对于各个计算单元是统一的。
这种健康监测的特点是简单,但是待审查计算单元时间常数不一致时,将很难确定同步周期。
第二种:心跳(dead man):
“心跳”是一种主动检测方案,由被测计算单元主动发出一个自检结果信息(心跳),由探测器收听这个信息,如果心跳失败,则可以判断这个计算单元失灵,并通知按照可靠性策略纠正错误计算单元。心跳也可以同时传递数据,比如传递上一次处理的日志。
心跳方式比较灵活,可以适应待审查计算单元时间常数不一致的情况,缺点是监测器要复杂一些。由于分布式计算各计算点情况比较复杂,所以Hadoop 采用了心跳方案,以保证即使系统非常脆弱,也能正常完成分布式计算任务。
MapReduce 基本架构
在分布式系统中,机器集群就可以看作硬件资源池,将并行的任务拆分,然后交由每一个空闲机器资源去处理,能够极大地提高计算效率,同时这种具体资源无关性,对于计算集群的扩展无疑提供了最好的设计保证。