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

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

今日面试题:鸡蛋挺住体

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

MapReduce矩阵的分析

题目:

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

分析:

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

原始状态下,输入–Map — Shuffle — Reduce — 输出 enter image description here

假设有如下的两个文本文件来运行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的处理。

下图是官方的流程图:

enter image description here

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

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

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

原文链接:http://www.ituring.com.cn/article/49817

责任编辑:陈四芳 来源: 图灵社区
相关推荐

2013-10-16 16:53:59

数组查找

2013-10-16 16:38:39

链表矩阵

2023-03-29 07:39:38

TikTok数据安全

2019-10-31 09:52:02

HadoopJava大数据

2016-12-12 12:37:45

结构C代码赋值

2016-05-09 10:16:14

MapReduce数据分析明星微博

2012-08-08 09:53:23

HadoopMapReduce

2013-12-17 09:52:13

pythonhadoopmapreduce

2014-01-07 14:04:13

HadoopMapReduce

2021-09-09 17:38:55

数据分析矩阵

2015-07-01 13:51:12

HadoopMapReduce数据分析

2018-11-14 14:33:33

MapReduce数据集计算

2014-10-15 16:32:43

MapReducehadoop

2011-10-18 14:00:30

MapReduce分布式流式

2015-08-21 09:48:16

可视化

2012-03-19 17:36:13

三星

2009-08-13 15:41:50

C#结构体指针

2013-09-18 09:27:57

点赞
收藏

51CTO技术栈公众号