`
desert3
  • 浏览: 2160562 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Hadoop中Map-Reduce处理逻辑理解(转)

阅读更多
MapReduce is a programming model and an associated implementation for processing and generating large data sets. Users specify a map function that processes a key/value pair to generate a set of intermediate key/value pairs, and a reduce function that merges all intermediate values associated with the same intermediate key. Many real world tasks are expressible in this model, as shown in the paper.

转自:http://www.360doc.com/content/10/1116/16/2703996_69876858.shtml

1、Map-Reduce的逻辑过程
假设我们需要处理一批有关天气的数据,其格式如下:
  • 按照ASCII码存储,每行一条记录
  • 每一行字符从0开始计数,第15个到第18个字符为年
  • 第25个到第29个字符为温度,其中第25位是符号+/-

0067011990999991950051507+0000+
0043011990999991950051512+0022+
0043011990999991950051518-0011+
0043012650999991949032412+0111+
0043012650999991949032418+0078+
0067011990999991937051507+0001+
0043011990999991937051512-0002+
0043011990999991945051518+0001+
0043012650999991945032412+0002+
0043012650999991945032418+0078+

现在需要统计出每年的最高温度。
Map-Reduce主要包括两个步骤:Map和Reduce
每一步都有key-value对作为输入和输出:
  • map阶段的key-value对的格式是由输入的格式所决定的,如果是默认的TextInputFormat,则每行作为一个记录进程处理,其中key为此行的开头相对于文件的起始位置,value就是此行的字符文本
  • map阶段的输出的key-value对的格式必须同reduce阶段的输入key-value对的格式相对应

对于上面的例子,在map过程,输入的key-value对如下:
(0 ,0067011990999991950051507+0000+)
(1 ,0043011990999991950051512+0022+)
(2 ,0043011990999991950051518-0011+)
(3 ,0043012650999991949032412+0111+)
(4 ,0043012650999991949032418+0078+)
(5 ,0067011990999991937051507+0001+)
(6 ,0043011990999991937051512-0002+)
(7 ,0043011990999991945051518+0001+)
(8 ,0043012650999991945032412+0002+)
(9 ,0043012650999991945032418+0078+)

在map过程中,通过对每一行字符串的解析,得到年-温度的key-value对作为输出:
(1950, 0)
(1950, 22)
(1950, -11)
(1949, 111)
(1949, 78)
(1937, 1)
(1937, -2)
(1945, 1)
(1945, 2)
(1945, 78)

在reduce过程,将map过程中的输出,按照相同的key将value放到同一个列表中作为reduce的输入
(1950, [0, 22, –11])
(1949, [111, 78])
(1937, [1, -2])
(1945, [1, 2, 78])

在reduce过程中,在列表中选择出最大的温度,将年-最大温度的key-value作为输出:
(1950, 22)
(1949, 111)
(1937, 1)
(1945, 78)

其逻辑过程可用如下图表示:
  • 大小: 65.4 KB
分享到:
评论

相关推荐

    Hadoop Map-Reduce教程

    在 Hadoop Map-Reduce 中,数据处理过程主要分为两个阶段:**Map 阶段** 和 **Reduce 阶段**。 ##### Map 阶段 Map 函数接收输入数据块,并将其转换为一系列键值对。这一阶段的主要任务是对输入数据进行预处理,...

    好用的hadoop-eclipse-plugin-2.6.4.jar

    在安装Hadoop-Eclipse-Plugin-2.6.4.jar之后,开发者可以通过Eclipse的"New -> Project"菜单选择"Hadoop Map/Reduce Project"选项来创建新的MapReduce项目。这个过程会自动为项目设置合适的构建路径和依赖项,使得...

    hadoop2x-eclipse-plugin

    1. 设置Hadoop安装路径:进入Eclipse的"Window" -> "Preferences" -> "Hadoop Map/Reduce",在"Local Hadoop Installation"中指定你的Hadoop安装目录。 2. 配置集群信息:如果你的Hadoop集群不是本地模式,需要在...

    hadoop-eclipse-plugin-2.6.5.jar插件下载

    安装完成后,用户会在Eclipse的"New"菜单中看到"Hadoop Map/Reduce Project"选项,这标志着插件已成功安装并可使用。 使用Hadoop Eclipse Plugin,开发者可以进行以下操作: 1. **创建Hadoop项目**:选择“File” ...

    hadoop-map-reduce-demo

    本篇将通过一个名为“hadoop-map-reduce-demo”的示例项目,深入探讨MapReduce的工作原理以及如何在Java环境中实现它。 一、Hadoop MapReduce简介 Hadoop MapReduce是Apache Hadoop框架的一部分,主要用于处理和...

    Hive - A Warehousing Solution Over a Map-Reduce.pdf

    为了解决这一问题,Hadoop作为一种开源的Map-Reduce实现框架被广泛应用于存储与处理大规模数据集。然而,Map-Reduce编程模型本身较为底层,开发者需要编写大量的自定义程序来实现特定的功能,这不仅增加了开发的难度...

    hadoop-3.0.1-src.tar.gz

    MapReduce则是Hadoop的数据处理模型,通过"map"和"reduce"两个阶段,实现了对大规模数据的并行处理。源码中的`hadoop-mapreduce-project`则涵盖了MapReduce的实现细节。 在Hadoop 3.0.1中,YARN(Yet Another ...

    hadoop-2.6.0-cdh5.7.0版本.zip

    Hadoop是大数据处理领域的重要工具,它是一个开源的分布式计算框架,由Apache...了解和掌握这个版本的Hadoop不仅需要理解其核心组件的功能,还需要熟悉CDH提供的附加服务,以及如何在实际环境中部署和优化Hadoop集群。

    hadoop-3.0.0-alpha1-src.tar.gz 源码

    在`hadoop-mapreduce-project`目录下,可以找到JobTracker(在新版本中已替换为ResourceManager)、TaskTracker(替换为NodeManager)以及map和reduce任务的执行逻辑。 3. **YARN(Yet Another Resource Negotiator...

    map-reduce详细

    `JobTracker` 是 Map-Reduce 架构中的核心组件之一,负责管理和调度任务。它的启动过程如下: 1. **JobTracker 对象创建**:通过调用 `startTracker(new JobConf())` 创建 `JobTracker` 对象。 2. **提供服务**:...

    hadoop-common-2.6.0-bin-master.zip.rar

    MapReduce是Hadoop处理大数据的核心计算模型,它将大规模数据集分割为小块(称为“map”阶段),并在集群中的多台机器上并行处理,然后将结果合并(称为“reduce”阶段)。Driver在MapReduce程序中扮演着至关重要的...

    hadoop-eclipse-plugin-2.6.0.jar

    创建项目后,可以添加MapReduce类,这些类将包含map()和reduce()函数,这是Hadoop处理数据的核心逻辑。 四、编写MapReduce代码 Hadoop Eclipse Plugin允许开发者使用Java语言编写MapReduce程序。在Eclipse中,你...

    hadoop-eclipse-plugin[2.2.0 + 2.4.1 + 2.6.0 + 2.7.3]

    2. **配置Hadoop环境**:在Eclipse中,通过“Window” -> “Preferences” -> “Hadoop Map/Reduce”设置Hadoop的配置文件路径,确保Eclipse能正确连接到Hadoop集群。 3. **创建MapReduce项目**:在Eclipse中新建一...

    hadoop2x-eclipse-plugin-master

    1. 在Eclipse中,选择"File" -> "New" -> "Project" -> "Hadoop Map/Reduce Project",创建一个新的Hadoop项目。 2. 在项目中,可以创建MapReduce类,Eclipse会自动生成模板代码,简化开发过程。 五、调试与运行 ...

    hadoop-eclipse-plugin-2.7.3.jar

    通过"File" -> "New" -> "Project",然后在弹出的对话框中选择"Hadoop Map/Reduce Project",就可以开始创建Hadoop项目。 2. **编辑与编译**:Hadoop Eclipse Plugin支持Java源代码的编辑和编译。开发者可以使用...

    hadoop之map/reduce

    在Hadoop生态系统中,MapReduce是一种分布式编程模型,主要用于处理和生成大数据集。它通过将大规模数据分割成小块,然后在多台机器上并行处理这些数据块,最后将结果汇总,从而实现高效的批量数据处理。MapReduce的...

    hadoop-2.8.1-src.tar.gz

    它将复杂的并行计算逻辑分解为“map”和“reduce”两个阶段,使得编程变得简单。 5. **hadoop-tools**: 包含了各种Hadoop相关的工具,如HDFS操作工具、数据迁移工具、性能测试工具等,方便用户进行日常管理和维护...

    hadoop-3.1.1-src.tar.gz

    Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它的核心设计思想是“大规模数据分布式处理”。这个名为“hadoop-3.1.1-src.tar.gz”的压缩包包含了Hadoop 3.1.1版本的源代码,对于理解、学习、定制和开发...

    hadoop-3.2.2-src.tar.gz

    总的来说,Hadoop-3.2.2-src.tar.gz为开发者提供了一个深入研究Hadoop的平台,通过源代码可以了解分布式计算、大数据存储和处理的底层逻辑,对于提升大数据处理能力具有重要意义。同时,这个源码也是Hadoop社区持续...

Global site tag (gtag.js) - Google Analytics