首页 最新文章大数据正文

  2003年Google发表《Google File System》,即GFS集群,主要包括Master node和Chunkservers。在2004年Google发表论文并引入MapReduce的概念,两位创始人谢尔盖布林和拉里佩奇就是凭借其在斯坦福大学时期发明的MapReduce算法解决了大规模网页搜索中的并行化和权重问题而成立了google公司,并首先改写了其搜索引擎中的Web文档索引处理系统,到目前为止,Google公司内有上万个各种不同的算法问题和程序都使用MapReduce进行处理。

        MapReduce可以理解为把一堆杂乱无章的数据按照某种特征归纳起来,然后处理并得到最后的结果。Map面对的是杂乱无章的互不相关的数据,它解析每个数据,从中提取出key和value,也就是提取了数据的特征。经过MapReduce的Shuffle阶段之后,在Reduce阶段看到的都是已经归纳好的数据了,在此基础上我们可以做进一步的处理以便得到结果。

        "MapReduce改变了我们组织大规模计算的方式,它代表了第一个有别于冯·诺依曼结构的计算模型,是在集群规模而非单个机器上组织大规模计算的新的抽象模型上的第一个重大突破,是到目前为止所见到的最为成功的基于大规模计算资源的计算模型。"《Data-Intensive Text Processing with MapReduce》

        2006年2月,Doug Cutting等人在Nutch项目上应用GFS和 MapReduce思想,并演化为Hadoop项目。下图就是Doug Cutting的照片,是不是帅的惊天地泣鬼神。

blob.png

       MapReduce可以说是Hadoop的精华所在,是当代用于数据处理的最优的编程模型。MapReduce从名称上面可以看到分为Map(映射)和Reduce(归纳)两个部分。其思想类似于先分后合,Map对与数据进行抽取转换,Reduce对数据进行汇总。其中需要注意的是Map任务将输出结果存储在本地磁盘,而不是HDFS。大致过程如下图:

blob.png

    在执行每个map task 和 reduce task的时候,有以下要点:

    1、在整个Map-Reduce阶段,无论Map方法中执行什么逻辑,最终都是要把输出写到磁盘上。

    2、如果没有Reduce作业,只有Map阶段,则直接输出到HDFS上。

    3、如果有Reduce作业,则每个Map方法的输出在写磁盘前先在内存中缓存。

    4、每个Map Task都有一个环状的内存缓冲区,存储着Map的输出结果,默认100M,每次当缓冲区快满的时候由一个独立的线程将缓冲区的数据以一个溢出文件的方式存放到磁盘,当整个Map Task结束后再对磁盘中这个Map Task产生的所有溢出文件进行合并处理,生成已分区且已排序的输出文件。然后等待Reduce Task来拉数据。

    上述1-4说的就是MapReduce中赫赫有名的Shuffle过程。

    以下是MapReduce过程的一个实际运用过程:

blob.png

©️公众号:思考者文刀

评论

精彩评论

百度搜索

站点信息

  • 文章总数:436
  • 页面总数:9
  • 分类总数:30
  • 标签总数:924
  • 评论总数:517
  • 浏览总数:1804753
觉得有用就打赏吧
关注本站公众号,享受更多服务!
联系方式
合作微信:itker0110
新媒体:Excel加油站(抖音/小红书/哔哩/头条)
公众号:左手Excel右手VBA
知乎:Excel其实很简单
Copyright2015-2024.Powered by ©️云水客 | 网站地图 | 辽ICP备14000512号-5
您是本站第1055名访客 今日有0篇新文章