大数据干货系列--MapReduce总结

Posted JoblabX未来职业实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据干货系列--MapReduce总结相关的知识,希望对你有一定的参考价值。

JoblabX校园科技人才俱乐部

每日签到,天天有奖


MapReduce总结

 

本质

MapReduce是一个基于分治思想用于处理海量数据的分布式计算框架

 

、mapreduce解决了什么问题

1.数据分布式存储-HDFS

2.作业调度

3.容错

4.机器间通信等复杂问题

 

分布式计算vs单机计算

 

、MapReduce执行流程


1.四个阶段

1) Inputmap:

①file:HDFS每个文件切分成多个一定大小默认64M)Block

②inputformat:经过数据分割(Data Splits)成记录

③split:多条记录的集合构成split,每个split包含后一个Block中开头部分解决记录跨block的问题

④Record Reader:每读取一条记录调用一次map函数直到split的尾部

         2) map:

        每条记录调用执行一次map()函数就会在内存中增加数据

         3) mapreduce (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.mapreduce的设置

        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版本

干货|大数据技术之争:PIG对Hive

大数据HDFS技术干货分享

视频干货Hadoop扫盲系列|04-大数据处理模式

[干货]100家硅谷IT公司技术博客-吐槽篇[大数据/SaaS专场]

技术干货 | 大数据开发系列之Flume