课程目标:
1:MapReduce的应用场景
2:MapReduce编程模型
3:MapReduce的架构
4:常见MapReduce应用场景
5:总结
MapReduce的定义
源自于Google的MapReduce论文
发表于2004年12月
Hadoop MapReduce是Google MapReduce克隆版
MapReduce特点
易于编程
良好的扩展性
高容错性
适合PB级以上海量数据的离线处理
MapReduce的特色—不擅长的方面
实时计算
像MySQL一样,在毫秒级或者秒级内返回结果
流式计算
MapReduce的输入数据集是静态的,不能动态变化
MapReduce自身的设计特点决定了数据源必须是静态的
DAG计算
多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出
MapReduce的实例一Wordcount
场景:有大量文件,里面存储了单词,且一个单词占一行
任务:如何统计每个单词出现的次数
类似应用场景
搜索引擎中,统计最流行的K个搜索词
统计搜索词频率,帮助优化搜索词提示
Case1:整个文件可以加载到内存中
Case2:文件太大不能加载到内存中,但<word, count>可以存放到内存中;
Case3:文件太大无法加载到内存中,且<word, count>也不行
将问题范化为:有一批文件(规模为TB级或者PB级),如何统计这些文件中所有单词出现的次数
方案:首先,分别统计每个文件中单词出现次数,然后累加不同文件中同一个单词出现次数
典型的MapReduce过程