Hadoop初学指南(5)--MapReduce入门

本文将介绍Hadoop中的重点MapReduce的入门知识。

(1)MapReduce概述

MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题。

MR由两个阶段组成:Map和Reduce,在Hadoop中用户只需要实现map()和reduce()两个函数,即可实现分布式计算,非常简单。这两个函数的形参是key、value对,表示函数的输入信息。

(2)MR执行流程

客户端的代码会提交给JobTracker,也就是JobTracker接受由用户提交的计算任务,然后由JobTracker分配给TaskTracker来执行。在TaskTracker中,有的是执行Mapper任务,有的是执行Reducer任务。Map接受的是输入数据,Reduce接受的输入数据是Map的输出数据,而Reduce的输出数据就是整个任务的输出数据。Map和Reduce可能有多个,每一个Map或者Reduce对应一个java进程。如下图所示:

如下图所示,输入文件会送给5个mapper任务来执行,每个mapper任务拿到的是不同的数据,每个mapper都会分散到不同的shuffle,shuffle又会送给reducer。由此可见map任务输出的任务数量与reduce任务的数量是相同的。

(3)MR的详细执行步骤

①map任务处理

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

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

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

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

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

②reduce任务处理

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

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

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

用相对直白的形式来说:

1.1读取hdfs中的文件。每一行解析成一个<k,v>。每一个键值对调用一次map函数

1.2 覆盖map(),接收1.1产生的<k,v>,进行处理,转换为新的<k,v>输出

1.3 对1.2输出的<k,v>进行分区。默认分为1个区。

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

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

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

2.2 对多个map的输出进行合并、排序。覆盖reduce函数,接收的是分组后的数据,实现自己的业务逻辑,处理后,产生新的<k,v>输出。

2.3 对reduce输出的<k,v>写到hdfs中。

Hadoop初学指南(5)--MapReduce入门,布布扣,bubuko.com

时间: 2024-10-07 11:29:33

Hadoop初学指南(5)--MapReduce入门的相关文章

Hadoop初学指南(6)--MapReduce的简单实例及分析

本文在上一节的基础上通过一个简单的MR示例对MapReduce的运行流程进行分析. 假设有两行数据,分别是hello you,hello me,我们要统计其中出现的单词以及每个单词出现的次数. 所得的结果为 hello   2 you     1 me      1 (1)大致运行流畅 1.解析成2个<k,v>,分别是<0, hello you><10, hello me>.调用2次map函数. 2.执行map任务 3.map输出后的数据是:<hello,1>

Hadoop初学指南(7)--MapReduce自定义计数器

本文主要介绍了MapReduce中的自定义计数器的相关内容. 在上次的单词统计例子中,我们可以看到MapReduce在执行过程中会有很多的控制台输出信息,其中有一个很关键的内容:计数器.如下图: 可以看到最上方的关键字:Counters,这就表示计数器. 在这里,只有一个制表符缩进的表示计数器组,有两个制表符缩进的表示计数器组下的计数器.如File Output Format Counters就表示文件输出的计数器组,里面的Bytes Written表示输出的字符数,在输出的文本中,hello,

Hadoop初学指南(8)--MapReduce中的Combiner操作

本文主要介绍了MapReduce中的Combiner操作. 在MapReduce的执行步骤中,我们一共分了8步,其中Map中的最后一步规约操作就是今天要讲的Combiner. 首先看一下前文中的计数器: 我们可以发现,其中有两个计数器:Combine output records和Combine input records,他们的计数都是0,这是因为我们在代码中没有进行规约操作. 现在我们加入规约操作. 在前文代码(参看http://xlows.blog.51cto.com/5380484/14

Hadoop初学指南(10)--ZooKeeper的集群安装和操作

本文简单介绍了ZooKeeper的基本知识. (1)概述 ①什么是ZooKeeper? Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务 它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等 ②Zookeeper的角色 ③为什么使用Zookeeper? 大部分分布式应用需要一个主控.协调器或控制器来管理物理分布的子进程(如资源.任务分配等) 目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制 协调程序的

hadoop权威指南 chapter2 MapReduce

MapReduce MapReduce is a programming model for data processing. The model is simple, yet not too simple to express useful programs in. Hadoop can run MapReduce programs written in various languages; in this chapter, we shall look at the same program

hadoop权威指南学习(一) - 天气预报MapReduce程序的开发和部署

看过Tom White写的Hadoop权威指南(大象书)的朋友一定得从第一个天气预报的Map Reduce程序所吸引, 殊不知,Tom White大牛虽然在书中写了程序和讲解了原理,但是他以为你们都会部署了,这里轻描淡写给 带过了,这样就给菜鸟们留了课题,其实在跑书中的程序的时候,如果没经验,还是会踩坑的. 这里笔者就把踩过的坑说一下,以防后来人浪费时间了. 1. 首先,你得下载书中的ncdc气象原始数据,这个可以从书中的官网下载. 作者比较做人家,只给了2年的历史数据,无妨,2年也可以运行.

《Hadoop权威指南》笔记 第一章&第二章 MapReduce初探

? ? ? ? ? ? ? ? ? ? ? ? ? ? 使用MapReduce ? ? ? ? ? ? ? ? import java.io.IOException; // 是hadoop针对流处理优化的类型 import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; // 会继承这个基类 import org.apache

《Hadoop权威指南》笔记 第一章&第二章

? ? ? ? ? ? ? ? ? ? ? ? ? ? 使用MapReduce ? ? ? ? ? ? ? ? import java.io.IOException; // 是hadoop针对流处理优化的类型 import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; // 会继承这个基类 import org.apache

Hadoop权威指南读书笔记

本书中提到的Hadoop项目简述 Common:一组分布式文件系统和通用I/O的组件与接口(序列化.javaRPC和持久化数据结构). Avro:一种支持高效.跨语言的RPC以及永久存储数据的序列化系统. MapReduce:分布式数据处理模型和执行环境,运行于大型商业集群. HDFS:分布式文件系统,运行于大型商用机集群. Pig:一种数据流语言和运行环境,用以检索非常大的数据集.Pig运行在MapReduce和HDFS的集群上. Hive:一个分布式.按列存储的数据仓库.Hive管理HDFS