美文网首页
MapReduce的工作原理和基础知识要点

MapReduce的工作原理和基础知识要点

作者: 风暴之芽 | 来源:发表于2019-01-30 20:52 被阅读0次

     MapReduce的原理简言之,是把一些数据通过Map和reduce两个阶段得出我们自己想要的数据,Map阶段主要是把数据分解(split)开来,把复杂的问题分解成若干“简单的任务”,Reduce阶段主要是合并阶段,把求解出来的数据通过某种方式(在工作中主要是“user_id”、“product_id”等等)组合排列起来(groupBy、sortBy等等),在工作中我们需要处理代码的部分是图中黑色部分的“map”和“reduce”,在现有框架下进行工作。

    MR的流程

    一、环节悉知:

      1.file:文件存储在HDFS中,每个文件且分为多个一定大小的Block(默认大小64M,备份3份),存在各个节点上(DataNode),

      2.inputformat:MR框架基础类之一,其作用是①数据分割(data split)②记录读取器(record reader)

      3.map:记录文档(“今天天气不错”),调用一次map(“今天天气不错”),在内存中增加数据

     4.shuffle:partition、sort、split、merge、combiner、copy、memery,disk等(调优的主要部分)

            ①partition:决定数据以哪个reducer处理,从而分区

            ②memerybuffer:内存缓存区,每个map的结果和partition处理的key value结果都保存在缓存中,默认大小100M,溢写      80%

           ③spill:内存缓存区达到阈值时,溢写spill线程锁住80M的缓冲区,开始将数据写到磁盘中,然后释放内存。

           ④sort:排序

           ⑤combiner:合并

    二、shuffle机制

    在这个流程中,比较容易出错的是从map到reduce中间的shuffle过程,shuffle的性能高低直接影响了整个程序的性能和吞吐量。

    Shuffle是MapReduce框架中的一个特定的phase,介于Map phase和Reduce phase之间,当Map的输出结果要被Reduce使用时,输出结果需要按key哈希,分发到每一个Reducer上去,这个过程就是shuffle。由于shuffle涉及到了磁盘的读写和网络的传输,因此shuffle性能的高低直接影响到了整个程序的运行效率。

    在Hadoop, 在mapper端每次当memory buffer中的数据快满的时候, 先将memory中的数据, 按partition进行划分, 然后各自存成小文件, 这样当buffer不断的spill的时候, 就会产生大量的小文件。

    所以Hadoop后面直到reduce之前做的所有的事情其实就是不断的merge, 基于文件的多路并归排序,在map端的将相同partition的merge到一起, 在reduce端, 把从mapper端copy来的数据文件进行merge, 以用于最终的reduce

    多路归并排序, 达到两个目的。merge, 把相同key的value都放到一个arraylist里面;sort, 最终的结果是按key排序的。

    这个方案扩展性很好, 面对大数据也没有问题, 当然问题在效率, 毕竟需要多次进行基于文件的多路归并排序,多轮的和磁盘进行数据读写。

    执行流程

    相关文章

      网友评论

          本文标题:MapReduce的工作原理和基础知识要点

          本文链接:https://www.haomeiwen.com/subject/svxhsqtx.html