鸡蛋挺住体:及MapReduce矩阵分析

今日面试题:鸡蛋挺住体

10多年的磐石网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整磐石建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“磐石网站设计”,“磐石网站推广”以来,每个客户项目都认真落实执行。

两个鸡蛋:两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。有座100层的建筑,要你用这两个鸡蛋以最少的次数确定哪一层是鸡蛋可以安全落下的最高位置。可以摔碎两个鸡蛋。

MapReduce矩阵的分析

题目:

一个很大的2D矩阵,如果某点的值,由它周围某些点的值决定,例如下一时刻(i,j) 的值取当前时刻它的8邻点的平均,那么怎么用MapReduce来实现。

分析:

首先,让我们以WordCount为例来解释MapReduce是怎么工作的。

原始状态下,输入–Map — Shuffle — Reduce — 输出

假设有如下的两个文本文件来运行WorkCount程序:

 
 
 
 
  1. Hello World Bye World     
  2. Hello Hadoop GoodBye Hadoop 

map数据输入
Hadoop针对文本文件缺省使用LineRecordReader类来实现读取,一行一个key/value对,key取偏移量,value为行内容。

如下是map1的输入数据:

 
 
 
 
  1. Key1      Value1 
  2. 0         Hello World Bye World 

如下是map2的输入数据:

 
 
 
 
  1. Key1       Value1 
  2. 0          Hello Hadoop GoodBye Hadoop 

map输出/combine输入

如下是map1的输出结果

 
 
 
 
  1. Key2        Value2 
  2. Hello        1 
  3. World        1 
  4. Bye          1 
  5. World        1 

如下是map2的输出结果

 
 
 
 
  1. Key2        Value2 
  2. Hello          1 
  3. Hadoop         1 
  4. GoodBye        1 
  5. Hadoop         1 

combine输出 Combiner类实现将相同key的值合并起来,它也是一个Reducer的实现。

如下是combine1的输出

 
 
 
 
  1. Key2         Value2 
  2. Hello            1 
  3. World            2 
  4. Bye              1 

如下是combine2的输出

 
 
 
 
  1. Key2          Value2 
  2. Hello            1 
  3. Hadoop           2 
  4. GoodBye          1 

combiner视业务情况来用,减少MAP->REDUCE的数据传输,提高shuffle速度,就是在map中再做一次reduce操作。combiner使用的合适,可以在满足业务的情况下提升job的速度,如果不合适,则将导致输出的结果不正确。

对于wordcount来说,value就是一个叠加的数字,所以map一结束就可以进行reduce的value叠加,而不必要等到所有的map结束再去进行reduce的value叠加。

reduce输出
Reducer类实现将相同key的值合并起来。

如下是reduce的输出

 
 
 
 
  1. Key2               Value2 
  2. Hello                2 
  3. World                2 
  4. Bye                  1 
  5. Hadoop               2 
  6. GoodBye              1 

即实现了WordCount的处理。

下图是官方的流程图:

有了这个基础知识,我们来看如何用MapReduce来解决上述问题。

以下标对作为map的key,遇到(i,j),生成(i-1,j-1),(i-1,j),etc,然后在reduce时merge相同的key,并计算value。

当你理解了MapReduce的工作原理,是不是很简单?

当前题目:鸡蛋挺住体:及MapReduce矩阵分析
标题链接:http://www.gawzjz.com/qtweb/news49/186799.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联