MapReduce:
计算模型:
实例1:单词统计
实例2:链接反转
实例3:页面点击统计
系统架构:
在Map阶段还可以执行可选的Combiner操作,类似于Reduce,但是在Mapper side局部执行。
Hadoop的MapReduce和Google的很像,只是Hadoop采用HTTPS传输数据,采用归并排序(merge-sort)对中介结果Key排序。
MapReduce的特点及不足
优点:可扩展性(数千台机器)/高吞吐,细粒度容错性,编程简单
舍弃的特性:无高层抽象数据操作语言,数据无Schema及索引
缺点:单节点效率低,任务流描述单一
解决任务流描述单一:通用DAG计算模型,eg:Spark
不适合交互式查询或流式计算,不适合迭代运算(比如机器学习、数据挖掘):Map/Reduce任务启动时间较长,多处磁盘读写和网络传输(比如中间结果落盘)
计算模式:
求和模式(数值求和、记录求和)
过滤模式(简单过滤、topK)
组织数据模式(数据分片、全局排序)
join模式:Reduce-side join(中间数据增加来源标记)、Map-side join(小数据表分发给所有Mapper,join期间使用hash查找),不需要Reduce阶段)
DAG计算模型:
Dryad、FlumeJava、Tez、Storm、Spark
三层结构