1.MapReduce—原理流程

MapReduce

Map:
	1.一次只以一条记录为单位做映射
	2.不会关心其他行
Reduce:
以一组为单位计算

什么叫做一组:
	分组(KEY:VALUE)
	键值对是由MAP映射实现的
	
Reduce计算来自于Map输出

例如建立2个Reduce,一个Reduce从全部Map中拉取性别为男的数据。
另一个Reduce拉取性别为女的数据。
Block块大小
CPU:密集型计算(Block块小一点适合)
I/O:密集型计算(Block块大一点适合)
split切片
控制并行度(粒度)
每次根据条件切一定范围的数据

而且HDFS中块是有信息的(偏移量,节点位置等),我们的切片可以复用HDFS块信息
不同切片分别去往不同块节点
这就是计算向数据移动

MapReduce会将被切割中断的块信息自动恢复
例如:1: hel
	块2: lo
底层会将他们拼接上hello
Map、Reduce并行度
Map并行度:
	由切片决定,默认值为块数量。
	
Reduce并行度:
	由开发人员决定,默认值为1.
比例关系
block -- split:
	1:11:N、N:1
	
split -- map:
	1:1
	
map -- reduce(为N时注意:组不能被分割):
	N:1、N:N、1:11:N
	
group(KEY) -- partition:
	N:1、N:N、1:1
MapReduce总结:
1.数据以一条数据为单位,经过map方法映射(切割)成KV键值对。
2.相同KEY为一组,一组数据调用一次Reduce方法,方法内迭代计算这组数据。
3.Reduce拉取一组数据就有可能是好多个T,一次性根本拿不完。
4.利用迭代器模式,传给Reduce的其实是一个迭代器,一条一条的拿,边拿边处理
5.任何用户想要读取IO都需要CPU操作系统内核,一条一条读取IO,一次一次的切换内核很麻烦。
6.我们最应该用的是带BUff的带缓冲区的IO,缓冲区默认大小100M,无需频繁的切换内核。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值