2020.9.13(mapreduce入门及计算模型)

为什么叫MapReduce?

Map:以一条记录为单位做映射~!
Reduce:以一组为单位做计算~!
什么叫做一组?分组~!抽取相同的特征,key
依赖一种数据格式:key:value 键值对
k,v的实现:由map映射实现的

为什么叫MapReduce?

Map:
映射、变换、过滤 1进N出
Reduce:
分解、缩小、归纳 1组进N出
(KEY,VAL):
键值对的键划分数据分组
输入数据集 =Map()=> 中间数据集 =Reduce()=> 最终结果集
后面还有一个计算数据集SPARK,提出了RDD弹性的分布式数据集
MapReduce可以实现分布式计算
在这里插入图片描述
Reduce的计算来自于Map的输出,所有的map计算完,rudece才开始计算,map的输出,左边一共画了3个矩形,代表3个并行度,3个map任务,split切片,一个切片会对应一个map计算

一个切片是什么语义(什么是切片)?

在文件层会做真正的物理切割得到块(block)1 2 3
在计算框架中,默认情况下,切片(split) 等于块,加一层来解耦。有多少个块就有多少个并行,切片(split)是逻辑的并非物理的。
计算分为两大类,一类叫CPU密集型计算,一类是IO密集型计算
CPU密集型计算:比如我的文件当中有若干行,读出其中的第一行,其中切割出了5个参数,这5个参数要进行几千几百次循环迭代计算才能算出一个结果,一行可能会造成CPU计算一小时
IO密集型计算:只是想把数据传输,只做数据的映射,对CPU计算没有要求

为什么要使用切片split?

一个block块大一点对IO密集型友好,但CPU密集型的场景就不友好,未来有两个项目组,一个项目组做数据挖掘需要CPU密集型的计算,另外一个项目组只拿相同的数据做数据的映射和抽取,不可能给出最完美的块的大小的定义。
所以在计算层提出一个新的切片的概念,切片是一种窗口机制,在默认情况下切片等于块,在非默认情况下,切片可能小于块,也可能大于块。切片和块的比例关系有三种,等于,大于,小于。满足不同项目组的不同类型的计算。
每个切片是相等的,只有最后一个切片可能不太等因为切片不满足了,控制并行度,比如有3个块,如果不控制,并行度就是3,因为切片等于块。6个切片,一个块支撑起两个计算,一个切片计算块的前半部分,一个切片计算块的后半部分。有6个并行度。也可以定义只有一个切片,这个切片读取整个文件的所有内容,拉过来计算。很灵活,这一层这就是软件工程学常听说的加一层来解耦

结论:在mapreduce中,左边map的并行度是由什么决定的?是由切片的数量决定的,且一个切片必须对应一个map计算,1:1的关系。如果这个文件默认情况下一个block块对应一个切片,块是物理切割的,块有偏移量。以块的大小,间接的切片可以复用块的偏移量和块的大小,块上还有location位置信息(块在哪3台机器有副本),切片也可以复用副本的信息,当切片拿到了这些信息之后,最终通过切片的这些信息也可以决定我这个map,这个计算程序最终移动到哪一台计算机去,很好的实现了计算向数据移动的语义(即便我一个切片是块的一半,另一个切片是块的另外一半,也可以复用这个块的副本信息,又因为副本有3个位置,所有一个切片对应的map在这一台,另外一个切片对应的map可以去另外一台,两者也不冲突)

问题,在hdfs的时候说到,一个块会把数据切割开。默认切片等于块,那么切片读到的数据是不是也是切割开的?这时候等于一个切片拿了he一个拿了llo
的确,如果真正这么直白的去读的话,的确会拿到切割的东西,但是在计算层框架去读取的时候,会规避这个问题,会把llo恢复到he的后面,最终得到的还是hello这个单词,恢复不需要人去操作,是由计算框架解决的。

一个切片是抽象的,描述了这个map未来启动之后,切片告诉了map只能从这个文件的这个位置开始读,读到另外一个位置, 这是他可以计算的范围。另外一个切片可以从另外一个位置开始读,读到另外一个位置结束
切片指定了文件后来被处理的范围,注意:这个范围是若干的字节ÿ

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值