大数据干货系列--MapReduce总结
Posted JoblabX未来职业实验室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据干货系列--MapReduce总结相关的知识,希望对你有一定的参考价值。
JoblabX校园科技人才俱乐部
每日签到,天天有奖
MapReduce总结
一、本质
MapReduce是一个基于分治思想,用于处理海量数据的分布式计算框架。
二、mapreduce解决了什么问题
1.数据分布式存储-HDFS
2.作业调度
3.容错
4.机器间通信等复杂问题
三、分布式计算vs单机计算
四、MapReduce执行流程
1.四个阶段
1) Input到map:
①file:HDFS中,每个文件切分成多个一定大小(默认64M)的Block
②inputformat:经过数据分割(Data Splits)成记录
③split:多条记录的集合构成split,每个split包含后一个Block中开头部分(解决记录跨block的问题)
④Record Reader:每读取一条记录,调用一次map函数,直到split的尾部
2) map:
每条记录调用执行一次map()函数,就会在内存中增加数据
3) map到reduce (shuffle):
①Partitioner:决定数据由哪个Reducer处理,从而分区
如:{key, value}经过hash得到{partition, key, value}
②MemoryBuffer:每个map的结果和partition处理的结果都保存在缓存中
缓冲区大小:默认100M,溢写阈值:100M * 0.8 = 80M
③Spill:内存缓冲区达到阈值时,溢写spill线程锁住这80M的缓冲区,开始将
数据写出到本地磁盘中,然后释放内存。
④Sort:缓冲区数据按照key进行排序
⑤Combiner:预聚合,相同的key的数据,value值合并,减少输出传输量
4) reduce:
多个reduce任务输出的数据都属于不同的partition,因此结果数据的key不会重复,合并reduce的输出文件即可得到最终的结果。
2.map和reduce的设置
1) map
– map任务总数不超过平台可用的任务槽位
– map个数为split的份数,split几乎对应一个block,dfs.block.size决定block大小
2) reduce
– mapred.reduce.task,默认为1
• reduce个数太少
单次执行慢,出错再试成本高
• reduce个数太多
shuffle开销大,输出大量小文件
3) 集群控制
• 对单个MapReduce
Map个数最好为集群slot的倍数
Reduce个数最好为集群slot的个数、倍数
• 多个MapReduce
节奏控制
点击底部链接
申请加入
JOBLABX校园科技人才俱乐部
以上是关于大数据干货系列--MapReduce总结的主要内容,如果未能解决你的问题,请参考以下文章
编程类知识脑图编程开发-大数据-云计算-人工智能知识系列干货与云盘链接汇总,v1.0版本