文档章节

面试那点事之 白话理解: MapReduce 详细执行步骤

开拓者-2017
 开拓者-2017
发布于 2015/01/01 21:56
字数 830
阅读 156
收藏 0

MapReduce 详细执行步骤一共有八部,我把他简称为:天龙八部 

天龙八部

执行步骤:

1. map任务处理

1.1 读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一次map函数。

1.2 写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。

1.3 对输出的key、value进行分区。 

白话理解分区:看mapreduce的原理图map输出的这3个分支就代表3个分区,map的输出怎么会输出3个分区呢,他有可能输出10 或者输出1个分区吗,答案是都有可能,他分成几个分区是由谁来觉得的,这与业务相关。,我们的map任务在1.3中会对map进行分区

1.4 对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合中。

白话理解排序:对不同分区,这里的对象变了,是不同分区,按照key进行排序,【这里的key就是1.2中的输出】如果能key能排序意味着key他是实现了combarable接口的。实现了combarTo方法,还有一个分组,分组: 是他把相同key的value放到一个集合中,我说把相同key的value放到一个集合中,并没说集合中的元素怎么处理,仅仅是放到一个集合中

1.5 (可选)分组后的数据进行归约。

白话理解归约:简单理解 就是把大的数据集合变为小的数据集合这个过程叫做归约。举例(eg)加减乘除,加减乘除运算是一个等式运算,等式的左边是多个元素、右边是一个元素,那么把多元素的集合就变成一个元素的集合了,这个步骤就是归约。

归约是可选的,因不是所有的数据都适合规约,比如,绝对值

2.reduce任务处理

2.1 对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。

2.2 对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key、value处理,转换成新的key、value输出。

白话理解reduce 2.2阶段的合并,:为什么合并,因为是多个map,为什么排序,前面不是排序好了吗。注意,每一个map任务是排序好,但是多个map任务之间是没有排序的,我们的reduce接受的是多map任务,所有他要重新排序,排序完成后我们要覆盖reduce函数实现自己的业务逻辑,对输入的key、value处理,转换成新的key、value输出。【提示:这个地方类似与map1.4阶段的执行过程,需要注意的时候,map 1.4阶段输出是以个分组,是分组数据调用reduce,不是一个一个的键值对调用reduce】

2.3 把reduce的输出保存到文件中。

© 著作权归作者所有

开拓者-2017
粉丝 38
博文 151
码字总数 301625
作品 0
大兴
程序员
私信 提问
加载中

评论(1)

片刻
片刻
加油~
Apache Hadoop NextGen MapReduce(YARN)

读http://hadoop.apache.org/docs/r2.2.0/hadoop-yarn/hadoop-yarn-site/YARN.html 一点理解。 MapReduce 从Hadoop-0.23版本做了很大的改动,后面的版本称为MapReduce 2.0(MRv2.0)或者YARN ......

LianyouCQ
2014/03/03
135
0
MapReduce: 一个巨大的倒退

前言 databasecolumn 的数据库大牛们(其中包括PostgreSQL的最初伯克利领导:Michael Stonebraker)最近写了一篇评论当前如日中天的MapReduce技术的文章,引发剧烈的讨论。我抽空在这儿翻译一...

ddatsh
2011/11/04
4.6K
7
hadoop自带的jar包计算圆周率pi

Hadoop中自带的hadoop-mapreduce-examples-2.7.6.jar含有一些事例,本文将用pi计算圆周率。若想了解其计算原理,参考:http://thinkinginhadoop.iteye.com/blog/710847。 具体步骤如下: 1....

bk李
2018/08/05
485
0
如何向妻子解释 hadoop 中的 mapreduce

印度 Java 程序员 Shekhar Gulati 在自己的博客发表了 “How I explained MapReduce to my Wife?” 一文,比较通俗地阐述了 MapReduce 的概念。 昨天,我在 Xebia 印度办公室发表了一个关于 ...

justjavac
2013/09/17
1K
7
Hadoop上路_12-MapReduce流程演示

MapReduce是单个jobstracker和多个tasktracker的组合。一般jobstracker和HDFS中的namenode在同一个节点,也可配置为单独节点;tasktracker和datanode必须是同一个节点。jobstracker是整个Map...

vigiles
2013/08/08
384
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 谨以此文怀念逝去的人

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 今天没歌曲 手机党少年们想听歌,请使劲儿戳(这里) 今天是周六, 刚想开始写乱弹的时候, 翻到了巴叔新建的话题上, @ 巴拉迪维:宏哥,一路...

小小编辑
今天
25
4
判断php变量是否定义,是否为空,是否为真的一览表

使用 PHP 函数对变量 $x 进行比较 表达式 gettype() empty() is_null() isset() boolean : if($x) $x = ""; string TRUE FALSE TRUE FALSE $x = null; NULL TRUE TRUE FALSE FALSE var $x; N......

Grayk
今天
19
0
服务器监控

1. 服务器监控内容有哪些? 答: 主要有服务监控 和 流量监控 2. 监控重点是? 答: 是 磁盘 和 流量,cpu是浮动的,意义不大 3. 怎样 实现 监控? 答:将 服务器 分为:监控者 和 被监管协议...

杨凯123
昨天
246
0
Apollo开发指南

一、准备工作 二、本地启动 2.1 Apollo Config Service和Apollo Admin Service 2.2 Apollo-Portal 2.3 Java样例客户端启动 2.4 .Net样例客户端启动 三、开发 3.1 Portal 实现用户登录功能 3....

Ciet
昨天
307
0
英文词汇 计算机网络中的专业英语单词及其缩写

学习计算机网络时,会阅读相关的专业文献。对于文献中经常出现的缩写形式的专业名词,做了一些积累。现于此博文中做个简单的分享,希望能对后来人有所帮助,平稳地入门计算机网络。 注:博文...

志成就
昨天
186
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部