第七章:MapReduce分布式计算框架
一个初学者的大数据学习过程
文章目录
1. MapReduce概述
1.1 产生背景
MapReduce 源之于Google的MapReduce论文。
2004年12月份,谷歌发表了关于分布式计算框架MapReduce的论文。
Nutch的开发人员根据该论文实现了自己的MapReduce分布式计算框架。
1.2 定义
MapReduce 是一个使用简单的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错式并行处理TB级别的数据集。
总的来说:MapReduce是面向大规模数据并行处理的计算模型、框架和平台。具体包含如下3个层面的含义:
MapReduce是一个并行程序的设计模型与方法
MapReduce是一个并行程序运行的软件框架
MapReduce是一个基于集群的高性能并行计算平台
1.3 优缺点
-
优点
易于编程
良好的扩展性
高容错性
适合PB级别以上海量数据的离线处理 -
缺点
实时计算
流式计算
DAG计算
1.4 基本设计思想
面向大规模数据处理,MapReduce有以下三个层面上的基本设计思想。
1.分而治之:对付大数据并行处理采用“分而治之”的设计思想。
2.抽象成模型:把函数式编程思想构建成抽象模型—Map和Reduce。
3.上升到构架:以统一构架为程序员隐藏系统底层细节。
- 计算任务的自动划分和调度。
- 数据的自动化分布存储和划分。
- 处理数据与计算任务的同步。
- 结果数据的收集整理(sorting,combining,partitioning等)。
- 系统通信、负载平衡、计算性能优化处理。
- 处理系统节点出错检测和失效恢复。
2. MapReduce编程模型
3. Wordcount 案例分析
业务场景:有大量的文件,每个文件里面存储的都是单词。
业务需求:统计所有文件中每个单词出现的次数。
解决思路:先分别统计出每个文件中各个单词出现的次数;然后,再累加不同文件中同一个单词出现次数。
这就是典型的mapreduce编程模型所适合解决的问题。