MapReduce定义:
========================================================================
MapReduce是一种可用于数据处理的编程框架。MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。简单地说,MapReduce就是"任务的分解与结果的汇总"。
在分布式计算中,MapReduce框架负责处理了并行编程中分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,把处理过程高度抽象为两个函数:map和reduce,map负责把任务分解成多个任务,reduce负责把分解后多任务处理的结果汇总起来。
MapReduce适用的问题:
========================================================================
用MapReduce来处理的数据集(或任务)必须具备这样的特点:待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。
MapReduce框架中的名词解释:
========================================================================
(*)split:
分片是指MapReduce框架将数据源根据一定的规则将源数据分成若干个小数据的过程;其中,一个小数据集,也被称为一个分片。
(*)Map:
Map有两层含义:
其一、是指MapReduce框架中的Map过程,即将一个分片根据用户定义的Map逻辑处理后,经由MapReduce框架处理,形成输出结果,供后续Reduce过程使用;
其二,是指用户定义Java程序实现Mapper类的map接口的用户自定义逻辑,此时通常被称为mapper。
(*)Reduce:
Reduce也有两层含义:
其一,是指MapReduce框架中的Reduce过程,即将Map的结果作为输入,根据用户定义的Reduce逻辑,将结果处理并汇总,输出最后的结果;
其二,是指用户定义Java程序实现Reducer类的reduce接口的用户自定义逻辑,此时通常被称为reducer。
(*)Combine:
Combine是一个可由用户自定的过程,类似于Map和Reduce,MapReduce框架会在Map和Reduce过程中间调用Combine逻辑(会在下面章节中仔细讲解),通常Combine和reduce的用户代码是一样的(也可被称为本地的reduce过程),但是请注意并不是所有用MapReduce框架实现的算法都适合增加Combine过程(比如求平均值)。
(*)Partition:
在MapReduce框架中一个split对应一个map,一个partiton对应一个reduce(无partition指定时,由用户配置项指定,默认为1个)。 reduce的个数决定了输出文件的个数。比如,在需求中,数据是从对每个省汇总而成,要求计算结果按照省来存放,则需要根据源数据中的表明省的字段分区,用户自定义partition类,进行分区。
==========================================================================
1、Hadoop大数据迅速掌握高级应用系列套餐
2、Spark 2系列课程视频套餐
3、大数据消息(Kafka)与实时处理(Storm)系统系列套餐
==========================================================================
一、课程概述
1、MapReduce课程概述
二、MapReduce编程基础
2、案例分析:WordCount数据处理的过程
3、开发自己的WordCount程序
4、案例分析:求每个部门的工资总额
5、开发MapReduce程序实现求部门的工资总额
三、MapReduce的特性一:序列化
6、Hadoop的序列化机制
7、在MapReduce程序中使用序列化
四、MapReduce的特性二:排序
8、数字的排序
9、字符串的排序
10、对象的排序
五、MapReduce的特性三:分区和合并
11、什么是分区
12、分区案例:根据部门号建立分区
13、什么是Combiner
六、MapReduce的核心:Shuffle
14、 什么是Shuffle(洗牌)?
七、MapReduce编程案例
15、编程案例一:数据去重
16、知识回顾:关系型数据库中的多表查询
17、编程案例二:分析等值连接的数据处理流程
18、编程案例二:实现等值连接的数据处理流程
19、编程案例三:分析自连接的数据处理流程
20、编程案例三:实现自连接的数据处理流程
21、案例四:分析倒排索引的数据处理过程
22、案例四:编程实现倒排索引
23、案例五:使用MRUnit进行单元测试
-