目录
一、MapReduce的基本概念
MapReduce是一个分布式计算框架,它将大型数据操作作业分解为可以跨服务器集群并行执行的单个任务,起源于Google。适用于大规模数据处理场景,每个节点处理存储在该节点的数据,每个job包含Reduce两部分。
二、MapReduce的设计思想
- 分而治之——简化并行计算的编程模型
- 构建抽象模型:Map和Reduce——开发人员专注于实现Mapper和Reduce函数
- 隐藏系统层细节——开发人员专注于业务逻辑实现
三、MapReduce特点
优点:易于编程、可扩展性、高容错性、高吞吐量
不适用领域:难以实时计算、不适合流式计算、不适合DGA(有向图)计算
四、MapReduce编程规范
MapReduce框架处理的数据格式是<K,V>键值对形式
Mapper
- Map端接收<K,V>键值对数据,经过处理输出新的<K,V>键值对
- Map端处理逻辑写在Mapper类中map()方法中
Reducer
- Reduce端搜集多个Mapper端输出的<K,V>数据,进行汇总
- Reduce的业务逻辑写在reduce()方法中
- 每一组相同k的<k,itertator<v>>组调用一次reduce()方法