`
desert3
  • 浏览: 2136495 次
  • 性别: 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中MapReduce基本案例及代码(五)

    下面详细介绍MapReduce中Map任务Reduce任务以及MapReduce的执行流程。 Map任务: 读取输入文件内容,解析成key,value对。对输入文件的每一行,解析成key,value对。每一个键值对调用一次map函数。 写自己的逻辑,对...

    Hadoop实战(第2版)

    4.4 本章小结5 优化HDFS 处理大数据的技术5.1 处理小文件技术点24 使用Avro 存储大量小文件5.2 通过压缩提高数据...中处理可分割的LZOP 5.3 本章小结6 诊断和优化性能问题6.1 衡量MapReduce 和你的环境...

    大数据与Hadoop.doc

    Hadoop MapReduce:基于YARN的大型数据分布式并行编程模式和程序执行框架,是Google的Map Reduce的开源实现。它帮助用户编写处理大型数据集的并行运行程序。MapReduce隐藏了 分布式并行编程的底层细节,开发人员只...

    flink项目.txt

    f-2.springboot构建上报服务,f-23.flink分析之hadoop环境搭建,f-28.flink分析之封装dao层结合hbase进行判重代码编写,f-39.flink分析之频道新鲜度map逻辑代码编写,f-40.flink分析之频道新鲜度reduce逻辑代码编写...

    Hadoop硬实战 [(美)霍姆斯著][电子工业出版社][2015.01]_PDF电子书下载 带书签目录 高清完整版.rar )

    技术点27 在MapReduce、Hive 和Pig 中处理可分割的LZOP 5.3 本章小结 6 诊断和优化性能问题 6.1 衡量MapReduce 和你的环境 6.1.1 提取作业统计信息的工具 6.1.2 监控 6.2 确定性能问题的原因 ...

    Mapreduce#文档.docx

    MapReduce 中定义了如下的 Map 和 Reduce 两个抽象的编程接口,由用户去 编程实现: map: (k1; v1) → [(k2; v2)] reduce: (k2; [v2]) → [(k3; v3)] Map 和 Reduce 为程序员提供了一个清晰的操作接口抽象描述。...

    Spark计算过程分析

    Spark是一个分布式的内存计算框架,其特点是能处理大规模数据,计算速度快...最重要的是数据处理中的计算逻辑可以很好的转换为Map和Reduce操作。对于一个数据集来说,Map对每条数据做相同的转换操作,Reduce可以按条件

    storm学习

    处理过程:HADOOP是分MAP阶段到REDUCE阶段,STORM是由用户定义处理流程,流程中可以包含多个步骤,每个步骤可以是数据源(SPOUT)或处理逻辑(BOLT); 是否结束:HADOOP最后是要结束的,STORM是没有结束状态,到最后...

    大数据测试——精选推荐.pdf

    当然这个过程可能也会涉及到数据的持久化相关指标,例如存储⾄HDFS读 写效率等等,同样也会涉及在内存中处理效率,即我们的处理算法效率等等 ⼦组件性能 ⼤数据处理,⼀般都会需要综合利⽤各种组件来辅助处理,所以...

    Flink笔记.md

    谈及Hadoop大家自然不会对 MapReduce感到陌生,它将计算分为两个阶段,分别为 Map 和 Reduce。MapReduce计算框架虽然借鉴了函数式编程和矢量编程的思想完成了分布式计算。但不得不承认MapReduce在矢量编程结构过于...

    hive函数大全(中文版)

    一、关系运算: 4 1. 等值比较: = 4 2. 不等值比较: <> 4 3. 小于比较: 4. 小于等于比较: 5. 大于比较: > 5 ...1. Map类型长度函数: size(Map) 34 2. array类型长度函数: size(Array) 34 3. 类型转换函数 35

    oozie-4.3.0

    Oozie是一种框架,它让我们可以把多个Map/Reduce作业组合到一个逻辑工作单元中。

    Hive用户指南

    8.8 Join中处理null值的语义区别 44 9. 优化与技巧 47 9.1 全排序 47 9.1.1 例1 48 9.1.2 例2 51 9.2 怎样做笛卡尔积 54 9.3 怎样写exist/in子句 54 9.4 怎样决定reducer个数 55 9.5 合并MapReduce操作 55 9.6 ...

    Fourinone分布式计算框架

    这样做的好处是,开发者有更大能力去深入控制并行计算的过程,去保持使用并行计算实现业务逻辑的完整性,而且对各种不同类型的并行计算场景也能灵活处理,不会因为某些特殊场景被map/reduce的框架限制住思维,并且...

    fourinone-3.04.25

    这样做的好处是,开发者有更大能力去深入控制并行计算的过程,去保持使用并行计算实现业务逻辑的完整性,而且对各种不同类型的并行计算场景也能灵活处理,不会因为某些特殊场景被map/reduce的框架限制住思维,并且...

    Storm实时计算:流操作入门编程实践

    下面,简单介绍编程实践过程中需要理解的Storm中的几个概念:Storm中Topology的概念类似于Hadoop中的MapReduce Job,是一个用来编排、容纳一组计算逻辑组件(Spout、Bolt)的对象(HadoopMapReduce中一个Job包含一组...

    分布式数据仓库Hive大全

    8.8 Join中处理null值的语义区别 44 9. 优化与技巧 47 9.1 全排序 47 9.1.1 例1 48 9.1.2 例2 51 9.2 怎样做笛卡尔积 54 9.3 怎样写exist/in子句 54 9.4 怎样决定reducer个数 55 9.5 合并MapReduce操作 55 9.6 ...

    Fourinone分布式并行计算四合一框架

    这样做的好处是,开发者有更大能力去深入控制并行计算的过程,去保持使用并行计算实现业务逻辑的完整性,而且对各种不同类型的并行计算场景也能灵活处理,不会因为某些特殊场景被map/reduce的框架限制住思维,并且...

Global site tag (gtag.js) - Google Analytics