声明: 1. 本文为我的个人复习总结, 并非那种从零基础开始普及知识 内容详细全面, 言辞官方的文章
2. 由于是个人总结, 所以用最精简的话语来写文章
3. 若有错误不当之处, 请指出
MapReduce
目的:
让开发人员意识不到分布式的存在
架构:
Master (JobTracker)
Worker (TaskTracker: MapTask, ReduceTask)
三个问题:
-
简单易用:
-
只有 Map 和 Reduce, 增加机器数量即可提高计算性能
-
有Counter记录日志便于debug
利用这个计数器,去统计有多少输入日志的格式和预期的不一样。如果比例太高,那么多半程序就有 Bug
-
-
容错:
对错误数据视而不见, 直接重试处理即可, 认为UV 10000 和 9999 没区别
-
对于 Worker 节点的失效
MapReduce 框架解决问题的方式非常简单, 就是换一台服务器重新执行任务
-
对于 Master 节点的失效
Master 节点失败了也就是整个 MapReduce 任务失败了, 那么只需要重新提交任务进行重试
-
-
性能:
-
Combiner
-
计算程序向数据移动, 而不是数据向计算程序移动
-