MapReduce Design Patterns 简记

简介:
 Google MapReduce 论文提到的单词计数的例子相当于这一编程实践的"hello world"l ,MapReduce 还可以解决什么问题?又有什么最佳实践和陷阱? 
 
  O’Reilly公司近些年出版了不少非常精彩的小册子,在技术类图书的内容质量和时效性上做了一个很好的平衡." MapReduce Design Patterns"就是其中一员.这本书结构相当清晰,基本上思维导图和目录是一一对应的. 书中配图相当不错,甚至只看图就可以回顾该章节的内容.对于这种手册类型的书,想查询某部分的内容按图索骥即可.这里简单记两笔:
 
   MapReduce Design Patterns 和OOP Design Patterns 有类似的产生原因和好处:反复解决问题->发现问题共性-> 模版化描述 -> 方便交流 知识传递.书里面例子全部使用Hadoop实现,即使你不使用Hadoop也太不影响你的理解.
 
 
 
 
 
Summarization Patterns 
总结归纳模式
 
  相同Key的数据分组汇聚是MapReduce核心,所以总结归纳模式是最容易想到的,书中提到了数值归纳,倒排索引的例子.单词计数就是这类应用的典型,计算过程中高度并行化,Map阶段产出的数据行是信息完备的,后续阶段计算不需要参考其它数据行;这就保证了计算是可以并行实施:不依赖其它数据行,不依赖计算顺序.
 
  中值,均值,标准差,最大值,最小值,倒排索引都可以如法炮制;
 
 
Filtering Patterns
过滤模式
 
     这一类模式作用是寻找一个小数据集,这个小数据集合可能是取Top,做Distinct,做filtering 或者Bloom filtering. 直接做Filtering应该是这些模式里面最简单的,每条记录都做一下去留判断,Reduce的过程都没有.但这确有非常经典的应用案例:Distributed grep
    
 
Data Organization Patterns
数据重组模式
 
  Structured to Hierarchical 由于只是改变的数据的视图,Combiner帮不了多少忙; 行结构数据外键关联,这样的数据结构构造成类似XML或BSON的结构.
  Partitioning  移动数据,并不关心数据的顺序,书中的例子就很典型:3年的日志数据并不是日期排序,取一段时间数据,如果数据按照时间分区,就可以避免全表扫描.如果是按照月分区,该分区内数据顺序并不重要. 
 
   Binning 和 Partitioning 的区别在于它是将同一条数据分到一个或多个类别.
 
   Total Order Sorting 整体并行排序,善用Partitioner重定结果,说起来简单实际操作过程中要注意的细节还是非常多的.
 
   Shuffling 除了书中提到的"隐藏用户信息" "随机取样"还有什么使用场景?好奇
 
 Join Patterns
 Join模式
 
    
 Reduce Side Join 将数据映射为外键为Key的形式,在Reduce阶段完成Join. 大量数据发送到Reduce Reduce端join需要大量的网络传输 .如果并不太关注执行时间 就可以用它. 如果要join的数据非常巨大,就只能选这种join.join是在reduce完成,Local优化起不了什么作用
 
 Replicated Join 解决的是Join数据集规模不对称的情况,把小数据集分发出去,消除了Reduce阶段的Shuffle.
 
 
 
 
 
  惯例,小图一张
 
目录
相关文章
|
8月前
|
前端开发
ant design中rowKey的作用
ant design中rowKey的作用
75 0
|
9月前
|
设计模式 分布式计算 Kubernetes
译|Design patterns for container-based distributed systems(上)
译|Design patterns for container-based distributed systems
45 0
|
9月前
|
设计模式 缓存 监控
译|Design patterns for container-based distributed systems(下)
译|Design patterns for container-based distributed systems(下)
39 0
PAT (Advanced Level) Practice 1044 Shopping in Mars (前缀和 二分)
PAT (Advanced Level) Practice 1044 Shopping in Mars (前缀和 二分)
67 0
|
SQL 存储 分布式计算
SparkSQL概念介绍
Spark SQL:将sql转换成spark任务
126 0
SparkSQL概念介绍
【1071】Speech Patterns (25 分)
【1071】Speech Patterns (25 分) 【1071】Speech Patterns (25 分)
68 0
|
移动开发 算法 Linux
艾伟_转载:C# Design Patterns (2) - Strategy
Strategy Pattern (策略模式) 所谓 Strategy Pattern 的精神,就是将策略 (算法) 封装为一个对象,易于相互替换,如同 USB 设备一样可即插即用;而不是将策略、具体的算法和行为,硬编码在某个类或客户程序中,导至事后的修改和扩展不易。
894 0
|
移动开发 算法 Linux
艾伟:C# Design Patterns (2) - Strategy
Strategy Pattern (策略模式) 所谓 Strategy Pattern 的精神,就是将策略 (算法) 封装为一个对象,易于相互替换,如同 USB 设备一样可即插即用;而不是将策略、具体的算法和行为,硬编码在某个类或客户程序中,导至事后的修改和扩展不易。
990 0
|
存储 程序员 C#
艾伟_转载:C# Design Patterns (5) - Prototype
本帖介绍 Prototype Pattern (原型模式),并以一个「人事招聘程序」作为示例来说明。--------------------------------------------------------本帖的示例下载点:http://files.cnblogs.com/WizardWu/090713.zip第一个示例为 Console Mode (控制台应用程序) 项目,第二个示例为 ASP.NET 网站项目。
1412 0
|
存储 分布式计算 调度
MapReduce与批处理------《Designing Data-Intensive Applications》读书笔记14
之前的文章大量的内容在和大家探讨分布式存储,接下来的章节进入了分布式计算领域。坦白说,个人之前专业的重心侧重于存储,对许多计算的内容理解可能不是和确切,如果文章中的理解有所不妥,愿虚心赐教。
1337 0