【大数据】hadoop分布式计算框架--MapReduce

MapReduce基础

MapReduce是简化并行计算的编程模型。采用”分而治之”,它将大型数据操作作业分解为可以跨服务器集群并行执行的单个任务,简而言之,MapReduce就是”分散任务,汇总结果”。MapReduce适用于大规模数据处理场景,每个节点处理在该节点的数据,每个job包含Map和Reduce两部分。
MapReduce的优点:
(1)易于编程:MapReduce只需简单地实现一些接口,就可以实现分布式的
(2)可扩展性:当你的计算资源不能得到满足的时候,可以简单的增加机器来扩展它的计算能力
(3)高容错性:如果其中有一个机器出问题,可以将计算任务转移到另外一个节点上运行,不至于使整个项目失败,而且这个过程不需要人工干预,完全是由hadoop内部完成的
(4)高吞吐量:能对PB量级以上海量数据进行离线处理
MapReduce的缺点:
(1)难以实时计算:MapReduce无法像MySQL一样,在毫秒内或者秒级内返回结果。(2)不适合流式计算:流式计算的输入数据是动态的,而MapReduce的输入数据集是静态的,不能动态变化。这是因为MapReduce自身的设计特点决定了数据源必须是静态的。
(3)DAG(有向图)计算

MapReduce实现wordcount

先将文件分离成一个个输入分片,然后,Map首先处理分片获取处理,以键值对的形式,切割成一个个单词,然后把每个单词的计数标记为1,并且写到环形内存缓冲区中,哈希法排序、排序后经过combine操作,合并写到分区中。shuffle就是将map的输出作为reduce的写入的过程,reduce操作就是对map的结果进行排序,合并,最后得出词频。

你可能感兴趣的:(hadoop)