mapreduce 模式、算法和用例

mapreduce 模式、算法和用例

ID:35567957

大小:153.63 KB

页数:14页

时间:2019-03-29

mapreduce 模式、算法和用例_第1页
mapreduce 模式、算法和用例_第2页
mapreduce 模式、算法和用例_第3页
mapreduce 模式、算法和用例_第4页
mapreduce 模式、算法和用例_第5页
资源描述:

《mapreduce 模式、算法和用例》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、MapReduce的模式、算法和用例浏览次数:1173次 2013年06月29日 可观-Juliashine的博客 字号: 大 中 小在这篇文章里总结了几种网上或者论文中常见的MapReduce模式和算法,并系统化的解释了这些技术的不同之处。所有描述性的文字和代码都使用了标准hadoop的MapReduce模型,包括Mappers,Reduces,Combiners,Partitioners,和sorting。如下图所示。基本MapReduce模式计数与求和问题陈述:有许多文档,每个文档都有一些字段组成。需

2、要计算出每个字段在所有文档中的出现次数或者这些字段的其他什么统计值。例如,给定一个log文件,其中的每条记录都包含一个响应时间,需要计算出平均响应时间。解决方案:让我们先从简单的例子入手。在下面的代码片段里,Mapper每遇到指定词就把频次记1,Reducer一个个遍历这些词的集合然后把他们的频次加和。   1.classMapper2.methodMap(docidid,docd)3.foralltermtindocddo4.Emit(termt,count1)5. 6.classReducer7.met

3、hodReduce(termt,counts[c1,c2,...])8.sum=09.forallcountcin[c1,c2,...]do10.sum=sum+c11.Emit(termt,countsum)这种方法的缺点显而易见,Mapper提交了太多无意义的计数。它完全可以通过先对每个文档中的词进行计数从而减少传递给Reducer的数据量:   1.classMapper2.methodMap(docidid,docd)3.H=newAssociativeArray4.foralltermtindoc

4、ddo5.H{t}=H{t}+16.foralltermtinHdo7.Emit(termt,countH{t})如果要累计计数的的不只是单个文档中的内容,还包括了一个Mapper节点处理的所有文档,那就要用到Combiner了:1.classMapper2.methodMap(docidid,docd)3.foralltermtindocddo4.Emit(termt,count1)5. 6.classCombiner7.methodCombine(termt,[c1,c2,...])8.sum=09.f

5、orallcountcin[c1,c2,...]do10.sum=sum+c11.Emit(termt,countsum)12. 13.classReducer14.methodReduce(termt,counts[c1,c2,...])15.sum=016.forallcountcin[c1,c2,...]do17.sum=sum+c18.Emit(termt,countsum)应用:Log分析,数据查询整理归类问题陈述:有一系列条目,每个条目都有几个属性,要把具有同一属性值的条目都保存在一个文件里,或

6、者把条目按照属性值分组。最典型的应用是倒排索引。解决方案:解决方案很简单。在Mapper中以每个条目的所需属性值作为key,其本身作为值传递给Reducer。Reducer取得按照属性值分组的条目,然后可以处理或者保存。如果是在构建倒排索引,那么每个条目相当于一个词而属性值就是词所在的文档ID。应用:倒排索引,ETL过滤(文本查找),解析和校验问题陈述:假设有很多条记录,需要从其中找出满足某个条件的所有记录,或者将每条记录传换成另外一种形式(转换操作相对于各条记录独立,即对一条记录的操作与其他记录无关)。像

7、文本解析、特定值抽取、格式转换等都属于后一种用例。解决方案:非常简单,在Mapper里逐条进行操作,输出需要的值或转换后的形式。应用:日志分析,数据查询,ETL,数据校验分布式任务执行问题陈述:大型计算可以分解为多个部分分别进行然后合并各个计算的结果以获得最终结果。解决方案: 将数据切分成多份作为每个Mapper的输入,每个Mapper处理一份数据,执行同样的运算,产生结果,Reducer把多个Mapper的结果组合成一个。案例研究:数字通信系统模拟像WiMAX这样的数字通信模拟软件通过系统模型来传输大量的

8、随机数据,然后计算传输中的错误几率。每个Mapper处理样本1/N的数据,计算出这部分数据的错误率,然后在Reducer里计算平均错误率。应用:工程模拟,数字分析,性能测试排序问题陈述:有许多条记录,需要按照某种规则将所有记录排序或是按照顺序来处理记录。解决方案:简单排序很好办–Mappers将待排序的属性值为键,整条记录为值输出。不过实际应用中的排序要更加巧妙一点,这就是它之所以被称为MapReduce核心的原

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。