mapreduce概述

1.2 MapReduce概述
Google发表了两篇论文《Google File System》 《Google MapReduce》
《Google File System》简称GFS,是Google公司用于解决海量数据存储的文件系统。
《Google MapReduce》简称MapReduce,是Google的计算框架,基于GFS。

Map映射
Reduce汇聚、缩减
目标:普通人都能理解的理论基础
比如:如何统计北京一共有多少栋楼房?
源数据:
Haidian 200 Haidian 230 Haidian 200 Haidian 230
Haidian 300 Haidian 330
Haidian 400 Haidian 420
Haidian 500 Haidian 540
Haidian 600 Haidian 120
Map->
Haidian 200
Haidian 230
Haidian 200
Haidian 200,300,400,230,600

Reducer:
Haidian sum

原语:<<相同的key为一组,这一组数据调用一次reduce方法,方法内迭代计算这一组数据>>
Map-Reduce: 线性依赖关系,先执行完map,再执行reduce
MapTask:
映射:保证原语中组的实现
并行度:split
split:大小可调整,默认等于hdfs中block的大小
框架默认,hdfs一个文件多少个block,就会有多少个map
计算级别:split中一条记录(record)调用一次map方法!
ReduceTask:
汇聚:
计算级别:按照组group为单位,一组调用一次reduce方法!
并行度:
理想状态:多少组group对应多少个reduceTask
但是,其实一个reduceTask可以线性处理若干组
术语对比关系:
• block > split
– 1:1(默认)
– N:1
– 1:N
• split > map
– 1:1
• map > reduce
– N:1
– M:N
– 1:1
– 1:N
• group(key)>partition(redues task) reduce(){}
– 1:1
– N:1
– M:N
– 1:N? >违背了原语
• partition > outputfile
1、每个block会有map任务
2、block切分为切片,每个切片对应一个map任务,默认一个block一个切片,一个map
3、map默认按行读取切片数据,组成键值对<当前行字节偏移量, “读到的行字符串”>
4、map函数对该键值对进行计算,输出若干键值对。<key, value, partition>
partition指定该键值对由哪个reducer进行处理
5、map输出的kvp写到环形缓冲区,环形缓冲区默认100MB,阈值80%,当环缓达到80%就向磁盘溢写小文件,该小文件首先按照分区号排序,相同分区号的按key进行排序。
6、默认如果落磁盘的小文件达到了3个,则进行归并,归并的大文件也是按分区号排序,相同分区号按照key进行排序。只是一个归并。
7、如果map任务处理完了,它的输出被下载到reducer所在主机
按照HTTP GET的方式下载到reducer:
reducer发送HTTP GET请求到mapper主机下载数据,该过程是洗牌shuffle
8、每个map任务都要经历运行结束洗牌的过程
9、可以设置combinClass,先在map端对数据进行一个压缩,比如10w个<hello,1>压缩为1个<hello, 10w>通过网络IO洗牌,肯定要快很多。一般情况下,combineClass就是一个reducerClass。

开阔眼界:
尽管hadoop框架是java开发的,MapReduce应用不一定得java开发。hadoop streaming允许用户使用可执行文件的方式提供mapper和reducer,创建和执行作业。hadoop pipes是一个跟SWIG兼容的C++ API,用于开发MapReduce应用(不基于JNI)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值