为了账号安全,请及时绑定邮箱和手机立即绑定

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

在之前的Hadoop是什么中已经说过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程序运行的时候指定一个路径即可

  • 工作原理

这里写图片描述

           

原文出处

点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消