Mapreduce
MapReduce先分再和、分而治之
的思想
Map
:对一组数据元素进行某种重复式的处理
Reduce
:对Map的中间结果进行某种进一步的结果整理
- MapReduce 数据类型
->kv键值对
形式
阶段组成:
一个MapReduce编程模型中只能包含一个Map阶段和一个Reduce阶段,或者只有Map阶段
如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序串行运行
Mapper > Reducer > Mapper > Reducer
MapReduce实例进程
MRAppMaster
:负责整个MR程序的过程调度及状态协调MapTask
:负责Map阶段的整个数据处理流程ReduceTask
:负责Reduce阶段的整个数据处理流程
MapReduce优缺点
- MapReduce特点
易与编程
,简单实现一些接口,就可以完成一个分布式程序良好的扩展性
,可以通过增加机器来扩展计算能力高容错性
,任何单一节点宕机不影响整个作业任务的完成适合海量数据离线处理
- MapReduce缺点
实时计算性能差
,主要用于离线作业,无法做到秒级的数据响应不能进行流式计算
,MapReduce主要针对离线静态数据集
MapReduce编程案例-WordCount词频统计
实现思路
- Map阶段核心:把输入的数据经过
切割
,全部标记为1,因此输出为<word, 1>
- Shuffle阶段核心:经过MR程序内部自带的
排序分组
等功能,把key
相同的作为一组数据构成新的k-v键值对
- Reduce阶段核心:处理Shuffle完的一组数据,该组数据就是该单词所有的键值对。
对所有的1进行累加求和
,就是单词出现的总次数
操作步骤
-
新建一个需要进行词频统计的文件,输入内容
-
将文件上传至HDFS文件系统中
-
运行Hadoop内置案例wordcount,
-
在
$HADOOP_HOME/share/hadoop/mapreduce
路径下,名为hadoop-mapreduce-examples-*.jar
-
运行实例:
hadoop jar hadoop-mapreduce-examples-2.7.1.jar wordcount /input /output
其中
wordcount
参数意思是指定运行词频统计的实例,/input
为需要进行词频统计的文件所在路径,/output
为结果输出路径,不需要手动创建- 查看结果
-