zoukankan      html  css  js  c++  java
  • MapReduce简介

     1.MapReduce框架简介

            要设计倒排索引这个算法,那么我们首先得知道MapReduce框架中的InputFormat类,Mapper类,Partition过程,sort过程,Combine类,Reduce类的设计原理。

    1.1InputFormat类

            InputFormat类的作用是什么呢?其实就是把输入的数据(就是你上传到hdfs的文件)切分成一个个的split,然后将split分拆成<key,value>对做为map函数的输入。hadoop里默认使用TextInputFormat类处理输入(这个类只处理文本文件)。TextInputFormat类将文本文件的多行分割成多个split,并通过LineRecorderReader将其中的每一行解析成<key,value>对,key为该行在文本中的偏移量,value值为这一行的内容。例如下面一个text.txt文本,经过InputFormat类处理之后

     

      如上图text1.txt文档,经过InputFormat处理之后,形成了3个<key,value>对,这3对之中,第一对中key=0,是因为hello单词位于文本头。第二对中key=31,是因为下一行的首单词if相对整个文本,它位于31的位置。类似第三对也如此。您可以自己数下并知道。

            这3个<key,value>对做为map函数的输入,然后你可以根据需要在对输入的<key,value>对进行处理。

    1.2Mapper类

           实现map函数,根据输入的<key,value>对生成中间结果。这里以wordcount例子来说,对于上面的text.txt文档经过InputFormat处理之后,上面3对<key,value>对输入map之后,输出过程如下:

                                       图2 map处理过程

    1.3Partition过程

           Partition就是分区。为什么要分区呢?因为大多时候有多个Reducer,分区的作用就是对map的输出,redcue的输入进行预处理。最重要的就是处理到在输入reduce的数据,保证同一个key值被分到同一个reduce。MapReduce程序中,Partition决定Map节点的输出将分区到那个Reduce节点上。默认是使用HashPartition,根据key值进行Hash操作。

     

                                               

                                       图3 Partition分区过程

    仔细观察Partition分区过程,text1.txt和text2.txt的partition1分区中有相同的key。这就是分区的效果,把相同的key放在同一个分区里。

    1.4 sort过程

          sort过程就是把键值对按照key值的首字母进行排序。

     

    1.5 Combin类

           Combine过程是Mapper的一部分,在map函数之后执行。实现combine函数,合并中间结果具有相同key值的键值对。

     

    1.6 Reduce类

           reduce过程是整合的过程,当然像wordcount的例子,我们只需要统计单词个数而已,只需一个简单的统计循环。

     

  • 相关阅读:
    使用wchar_t输入,显示中文
    MFC使用rich edit若干问题
    一种对话框嵌入MFC 文档结构效果的实现方法(一),让你的自定义对话框区域同客户区大小一起改变
    一种在MFC程序上显示jpeg图片的方法(二)曙光乍现
    一种在MFC程序上显示jpeg图片的方法(一)宁滥勿缺
    MFC---GDI之DC类杂记,以画尺子为例
    又让厂公着半天急----一例自定义MFC程序编译时LNK2019错误
    egret 引擎分析之三————egret make --egretversion xxxx 到底做了什么?
    egret 引擎分析之二————从selector.js说起
    egret 引擎分析之一————egret 命令的时候发生了什么
  • 原文地址:https://www.cnblogs.com/aijianiula/p/3976562.html
Copyright © 2011-2022 走看看