《MapReduce 2.0源码分析与编程实战》一1.4 MapReduce与Hadoop

简介:

本节书摘来异步社区《MapReduce 2.0源码分析与编程实战》一书中的第1章,第1.4节,作者: 王晓华 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.4 MapReduce与Hadoop

如果将Hadoop比作一头大象的话,那么MapReduce就是那头大象的大脑。MapReduce是Hadoop核心编程模型。在Hadoop中,数据处理核心为MapReduce程序设计模型。MapReduce把数据处理和分析分成两个主要阶段,即Map阶段和Reduce阶段。Map阶段主要是对输入进行整合,通过定义的输入格式获取文件信息和类型,并且确定读取方式,最终将读取的内容以键值对的形式保存。而Reduce是用来对结果进行后续处理,通过对Map获取内容中的值进行二次处理和归并排序从而计算出最终结果。MapReduce的处理过程,如图1-1所示。

在MapReduce处理过程中,首先对数据进行分块处理,之后将数据信息交给Map任务去进行读取,对数据进行分类后写入,根据不同的键产生相应的键值对数据。之后进入Reduce阶段,而Reduce的任务是执行定义的Reduce方法。具有相同键的值从多个数据表中被集合在一起进行分类处理,并将最终结果输出到相应的磁盘空间中。


1

小提示:
MapReduce是Hadoop的核心处理程序,也是奇迹发生的地方。MapReduce是在Hadoop简单应用基础上产生的一种简洁并行计算模型,其在系统层面上满足了存储空间的扩展性、一致性及容错性等要求。程序设计人员编写的自定义的MapReduce处理程序可以方便地在大规模集成数据库上执行,从而可以做到对大规模数据的分析应用。

MapReduce使用和借鉴了函数方式程序设计语言的设计思想。其过程的实现是首先 通过指定一个Map方法,将传递进来的数据通过键值对的形式进行映射,从而形成一个 新的键值对供后续处理。Reduce作为一个约束方法,将具有相同键的值作为一个集合合并在一起。

MapReduce作为Hadoop的核心处理程序,在诞生之初就为了处理大数据而采用了“分治式”的数据处理模式,将数据分散到各个节点中进行相应的处理。一般情况下,每个节点会就近读取本地存储的数据,进行相应的合并和排序后发送给Reduce进行下一步处理。这个过程可以依据要求具体编写,好处是避免了大数据处理框架所要求进行的大规模数据传输,从而节省了时间,提高了处理效率。

MapReduce程序是由Java语言编写的,而Java语言本身的特点就是可移植性强。“一次编写,到处运行”是Java的特点。因此,MapReduce继承了这个特点,具有很强的定制性。MapReduce的程序中会有很多的算法和设计模式,都是很直观和固定的,不会因为所要处理对象和内容的不同具有太多的变化。同时,MapReduce作为通用的Hadoop处理核心,需要面对的问题一定是千差万别的。因此,MapReduce使用面向对象的程序设计模式抽出了这些数据内容的一些公共部分进行总结和程序设计。

和Java语言本身又带有极强的扩展性和应用性一样,MapReduce也具有较好的程序扩展机制,能够满足程序设计人员定义各种各样所需要的算法和程序。

MapReduce是Hadoop的核心内容,也是这头“大象”的大脑。MapReduce指挥着“大象”的前进方向和步伐,从而能够对Hadoop数据处理提供最大限度地支持。

相关文章
|
5月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
129 2
|
3月前
|
数据采集 分布式计算 Hadoop
使用Hadoop MapReduce进行大规模数据爬取
使用Hadoop MapReduce进行大规模数据爬取
|
5月前
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
167 3
|
5月前
|
分布式计算 资源调度 数据可视化
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
85 1
|
5月前
|
分布式计算 资源调度 Hadoop
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
93 1
|
5月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
185 0
|
5月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
76 0
|
5月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
113 0
|
7月前
|
缓存 分布式计算 算法
优化Hadoop MapReduce性能的最佳实践
【8月更文第28天】Hadoop MapReduce是一个用于处理大规模数据集的软件框架,适用于分布式计算环境。虽然MapReduce框架本身具有很好的可扩展性和容错性,但在某些情况下,任务执行可能会因为各种原因导致性能瓶颈。本文将探讨如何通过调整配置参数和优化算法逻辑来提高MapReduce任务的效率。
900 0
|
9月前
|
分布式计算 Hadoop Java
Hadoop MapReduce编程
该教程指导编写Hadoop MapReduce程序处理天气数据。任务包括计算每个城市ID的最高、最低气温、气温出现次数和平均气温。在读取数据时需忽略表头,且数据应为整数。教程中提供了环境变量设置、Java编译、jar包创建及MapReduce执行的步骤说明,但假设读者已具备基础操作技能。此外,还提到一个扩展练习,通过分区功能将具有相同尾数的数字分组到不同文件。
88 1

相关实验场景

更多