以MapReduce编程五步走为基础,说MapReduce工作原

作者: Alukar | 来源:发表于2018-06-15 19:47 被阅读16次

    MapReduce采用了分而治之的思想,MapReduce主要分为两部分,一部分是Map——分,一部分是Reduce——合

    MapReduce全过程的数据都是以键值对的形式存在的

    首先,我们假设我们有一个文件,文件中存了以下内容

    hive spark hive hbase 

    hadoop hive spark 

    sqoop flume scala

    这里涉及到一个偏移量(一个字符或空格为1位) 

    第一行的偏移量为0,内容为“hive spark hive hbase” 

    第二行的偏移量为21,内容为“hadoop hive spark” 

    第三行的偏移量为39,内容为“sqoop flume scala”

    Map

    输入 

    MapReduce处理的数据是从HDFS中读出来的 

    以偏移量为key,内容value,则存在: 

    (0,“hive spark hive hbase”) 

    (21,“hadoop hive spark”) 

    (39,“sqoop flume scala”)

    输出 

    将输入的value中的词以空格为分割逐个取出来做key,1做value存起来 

    (hive,1) 

    (spark,1) 

    (hive,1) 

    (hbase,1) 

    (hadoop,1) 

    注意:有多少行,Map就要循环做几次

    shuffle(之后会详细说,这里简单解释)

    输入 

    map的输出

    输出 

    相同的key的value进行合并 

    这里合并不是进行累加或别的运算,而是合并到一个集合中 

    (hive,[1,1,1]) 

    (spark,[1,1]) 

    (hbase,[1]) 

    (hadoop,[1]) 

    。。。。。。

    reduce

    输入 

    shuffle的输出

    输出 

    根据业务将value进行合并 

    例如当前的业务就会将value进行累加

    MapReduce处理数据五步走

    整个MapReduce程序,所有数据以(key,value)形式流动

    第一步:input

    正常情况下不需要写代码 

    仅仅在MapReduce程序运行的时候指定一个路径即可

    第二步:map(核心)

    map(key,value,output,context) 

    key:每行数据的偏移量——基本没用 

    value:每行数据的内容——真正需要处理的内容

    第三步:shuffle

    不需要写代码

    第四步:reduce(核心)

    reduce(key,value,output,context) 

    key:业务需求中的key 

    value:要聚合的值

    第五步:output

    正常情况下不需要写代码 

    仅仅在MapReduce程序运行的时候指定一个路径即可

    工作原理

    想学习大数据或者想学习大数据的朋友,我整理了一套大数据的学习视频免费分享给大家,从入门到实战都有,大家可以加微信:Lxiao_28获取,还可以入微信群交流!(备注领取资料,真实有效哦)。

    相关文章

      网友评论

        本文标题:以MapReduce编程五步走为基础,说MapReduce工作原

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