MapReduce
MapReduce定义
MapReduce是一个分布式运算程序的编程框架
核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,运行在hadoop集群上
MapReduce优缺点
优点:
(1)易于编程:简单实现接口,即可完成一个分布式程序
(2)良好扩张性:通过增加机器提高计算能力
(3)高容错性:其中一个节点挂掉后,将该机器上的计算任务转移到另外一个节点上运行
(4)适合海量数据离线处理
缺点:
(1)不擅长实时计算,不能和mysql一样实现毫秒级计算
(2)不擅长流式计算,MapReduce输入数据是静态的,不能够动态变化
(3)不擅长DAG计算,spark可以,因为spark将上一个任务的计算结果当作下一个计算结果的输入,中间结果保存在内存中,而MapReduce将中间结果保存到磁盘中,造成IO开销大,性能低
MapReduce核心思想
统计单词个数
数据文件:
java java
python
hadoop
- 首先经过Map阶段
(1)读取到数据文件中的数据,一行一行处理
<0,java java>
<11,python>
<19,hadoop>
(2)按空格切分行内单词
<java,1> <java,1>
<python,1>
<hadoop,1>
(3)k-v键值对
<java,<1,1>>
<python,1>
<hadoop,1>
- Reduce阶段
(1)统计每个单词数量
<java,2>
<python,1>
<hadoop,1>
结果:
java 1
python 1
hadoop 1
MapReduce进程
(1)MrAppMaster:负责整个程序的过程调度以及状态协调
(2)MapTask:负责map阶段的整个数据处理流程
(3)ReduceTask:负责Reduce阶段的整个数据处理流程