我是靠谱客的博主 丰富泥猴桃,最近开发中收集的这篇文章主要介绍Hadoop基础学习笔记系列(八)MapReduce框架、设计原则约束、实例框架栗子:汇总文章词语原则其他,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
目录
- 框架
- 用户定义
- 栗子:汇总文章词语
- 原则
- 原则上
- 好的键值
- 任务分解
- 设计
- 设计约束
- 一些栗子
- cascade
- join:基于key组合表
- 向量乘法:A x B
- 其他
理念:Bring computation to DATA
框架
何时使用?
- 数据需要经常update——DBMS
- 需要扫描数据——MR
用户定义
- 所有数据都会被转换成键值对的形式(基本单元)<key,value>
- mapper(独立可分,在数据上运行):应用到数据的function,输入:数据,输出:键值对
- reducer:应用到中间数据的function,输入:键值对,输出:结果
Hadoop能够处理其中间的协调工作,会将map function应用在数据所在的位置(可复制、分布式),根据key来shuffle、group数据形成中间数据,然后使用reduce function来获取最终结果。
栗子:汇总文章词语
JAVA:MR英语单词频次统计案例-----wordcount_tianqinglei的博客-CSDN博客
Python:Mapreduce+python实现简单的词频统计_ElsaWu的布袋子-CSDN博客
原则
原则上
- 每个data spit一个mapper
- 每个核一个reducer
但可以根据task改变。如果每个reducer产出的结果很多,可以少于核的个数。
好的键值
- 简单
- 能够让reducer获得正确的输出
任务分解
- mappers:简单可分
- common mappers:
- filter(子数据集)
- identity(传递数据)
- splitter(汇总计数)
- common mappers:
- reducers:易于合并
设计
- 合成键:当有两个域需要被group,并使用value来存其他信息
- 级联(cascade)
- bin keys into ranges
- combiner map输出前可以聚合结果减少shuffle
设计约束
- 必须符合键值对的范式
- 不存储中间数据
- 需要编程,需要debug
- 无法迭代(有些算法需要)
一些栗子
key可以是多个item(合成键),例如汇总多天的词频,可以使用<date word,count>
cascade
join:基于key组合表
- fileA词,词频 fileB日期,词,词频
A:key:word;value:total-count
B:key:date,word;value:day-count - 把date放在value(因为需要输出)
A:key:word;value:total-count
B:key:word;value:date day-count - reducer可以通过一个key对应几个value来确定是来自A还是B
向量乘法:A x B
<index, number>
计算成本,要考虑:
- map()需要输出多少<index, number>?
- 有多少index需要shuffle?
如果是两个N维向量相乘,2N indices,N pairs,N个group会被shuffle到reducer
Group越多,shuffle的成本越高
如何降低shuffle成本?
- combine map in mapper
- 例如,在统计词频时候,可以先在map的结果里把一篇文章的词频汇总好,再shuffle进入reducer进行汇总
- 例如,在向量乘法计算时,可以将N维向量划分为一些bin,比如r=10个一组,划分为N/10个bin,新的key使用bin的index,向量的数字可以放在value里面。
平衡:
- 如果r减小,N/r增大,shuffle成本提高,但是reducer的复杂度会下降。
- 基于数据和硬件
扩展到矩阵运算,keys中需要有行号和列号
其他
- 延伸MR做数据处理:Pig、HIVE(类SQL接口)
- 提供交互性和持续性:Spark
最后
以上就是丰富泥猴桃为你收集整理的Hadoop基础学习笔记系列(八)MapReduce框架、设计原则约束、实例框架栗子:汇总文章词语原则其他的全部内容,希望文章能够帮你解决Hadoop基础学习笔记系列(八)MapReduce框架、设计原则约束、实例框架栗子:汇总文章词语原则其他所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复