目录
2. MapReduce的思想:分而治之(Divide and Conquer)
一、MapReduce概念理解
MapReduce是一种由Google提出的分布式计算模型,主要用于搜索领域,解决海量数据的计算问题。
MapReduce由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce()两个函数,即可实现分布式计算。
1. Why MapReduce?
海量数据在单机上处理因为硬件资源限制,无法胜任,而一旦将单机版程序扩展到集群来分布式运行,将极大增加程序的复杂度和开发难度,引入MapReduce框架后,开发人员可以将绝大部分工作集中在业务逻辑的开发上,而将分布式计算中的复杂性交由框架来处理。
解释:
- 访问:交互型,例如MySQL,hive;批处理,流式数据,spark会解决交互型的问题。
- 结构:动态模式,第一条记录3个字段,第二条记录可以5个字段。
- 伸缩性:处理机器变成2倍,处理能力变成2倍。
2. MapReduce的思想:分而治之(Divide and Conquer)
MapReduce的操作分为5个步骤:
Input → Splitting → Mapping → Shuffling → Reducing
说明:MapReduce的执行过程中需要对数据进行拆分,而Hadoop在存储的过程中已经将数据实现了拆分存储。
3. MapReduce的特性
- 自动实现分布式并行计算
- 容错
- 提供状态监控工具
- 模型抽象简介,程序员易用
二、MapReduce的核心组件
三、Map/Reduce框架
说明:
- 一个Map/Reduce作业(job)通常会把输入的数据集切分为若干独立的数据块,由map任务(task)以完全并行的方式执行数据处理过程。
- 框架会对map的输出先进行排序,然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统(HDFS)。
四、MapReduce具体操作流程(重点!)
1. Map/Reduce的执行流程(1.0版本)
2. Map/Reduce的执行流程(2.0版本)
3. Map/Reduce和Yarn
4. Shuffle(重点)
五、Map/Reduce函数的书写
例子:wordcount
- map:输入,<4, "hello hadoop">,key为句子的位置,value为句子。输出,List(<"hello", 1>, <"world", 1>)。
- reduce:输入,<"hello", [2, 3, 4, 1]>。输出,<"hello", 10>。