MapReduce是hadoop的分布式计算框架,主要包括map与reduce两大阶段:
Map阶段主要负责把数据输入转换成中间键值对结果,它要求输入为键值对方式,具体实现map方法就可以,产生的输出是以可序列化的键值对结果,对键要求可比较即可。而在读入输入数据之前,要求数据已经被逻辑分片。
reduce阶段主要负责把中间结果进一步处理产生最后的输出结果。
考虑到海量数据键的重复性和从中间结果到reduce输入的映射关系,在map结果后以一个combine方式进行重复键的合并,也可以说是通过shuffle和sort来减少发送到reduce阶段的有效数据量。这样就能起到第一步的优化。conbine其实也是一种reduce。
combine之后,虽然数据量有所减少,但数量还是很大的,于是就采用compress的方式把数据压缩,到达reduce端后再去解压缩就OK了。
基本上单个mapreduce任务的通用优化方式就这些。针对多任务的mapreduce,比如 map map reduce方式,则以第一个map的中间结果来作为第二个map的输入的方式,减少一个reduce阶段从而缩短整体耗时。
虽然有了以上的优化方式,mapreduce效率有所提高,但仍然很慢,仍然是只能处理离线的任务。
mapreduce online提供了一个优化的方案,以稍微复杂的框架改造来提高效率,通过准实时的用户响应来改进用户体验。 mapreduce online是基于pipeline的改造方式。首先,将map阶段产生的结果不先写入磁盘文件,而是直接发送给reduce机器,这就要求map机器和reduce机器维持一个socket连接.如果没有建立连接,则写入磁盘,结果可以是到达一定阀值之后进行combine类似操作去重减少数据集大小,然后发送给reduce端。
由reduce端去优化处理。
以上是延数据流向上的优化思考。
针对不同的角色,master (jobtracker),slave (tasktracker),由于tasktracker通过heartbeat消息向jobtrakcer请求map 或者reduce任务,而一个tasktracker通常有多个maptask或是reducetask 。尽量从hdfs文件系统中高效取得带输入文件(最好本机数据,次之同机架数据等),复用子vm(即多个map任务之间可能公用某些元数据,如果将这些数据存入vm中,则也能改进效率)都能改进效率。
多个job任务之间如果能优化合并则能提高整体jobs的执行效率。
总而言之,hadoop作为离线数据处理的一个架构,注重吞吐量,但效率改进上还可以大大提高。总的思路就是减少数据传输量,提高并发率,提高复用比率等通用方式。
分享到:
相关推荐
总结一下,MapReduce的计数器提供了强大的监控和调试能力,而通过MapReduce与数据库的交互则扩展了大数据处理的应用场景。开发者可以根据需求利用计数器来优化作业性能,同时结合数据库操作实现更复杂的数据处理流程...
《深入解析MapReduce架构设计与实现原理》是针对Hadoop技术的一本专业指南,尤其侧重于MapReduce这一核心组件的深度剖析。MapReduce是Google提出的一种分布式计算模型,被广泛应用于大数据处理领域,如日志分析、...
实验的总结与思考部分,强调了实验的目标在于理解和掌握MapReduce编程思想,了解MapReduce作业的执行流程,以及如何使用MapReduce Java API进行编程。此外,还包括在Hadoop集群上运行程序,利用Web界面和Shell命令...
《MapReduce 2.0源码分析与编程实战》比较系统地介绍了新一代MapReduce 2.0的理论体系、架构和程序设计方法。全书分为10章,系统地介绍了HDFS存储系统,Hadoop的文件I/O系统,MapReduce 2.0的框架结构和源码分析,...
《MapReduce2.0源码分析与编程实战》比较系统地介绍了新一代MapReduce2.0的理论体系、架构和程序设计方法。全书分为10章,系统地介绍了HDFS存储系统,Hadoop的文件I/O系统,MapReduce2.0的框架结构和源码分析,...
MapReduce通常与Hadoop框架一起使用,Hadoop提供了实现MapReduce模型的基础设施,包括数据存储(HDFS,Hadoop Distributed File System)和资源管理(YARN,Yet Another Resource Negotiator)。Hadoop允许数据...
(2)打开网站localhost:8088和localhost:50070,查看MapReduce任务启动情况 (3)写wordcount代码并把代码生成jar包 (4)运行命令 (1):把linus下的文件放到hdfs上 (2):运行MapReduce (5):查看运行结果 ...
### Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 #### 一、Hadoop及其重要性 Hadoop是一个开放源代码的分布式计算框架,它能够处理大量的数据集,并通过集群提供高性能的数据处理能力。随着大数据时代的...
基于MapReduce+Pandas的电影排名与推荐以及数据分析与可视化展示 数据科学与大数据技术领域中,电影排名与推荐系统的开发是非常重要的一部分。该系统可以通过对电影数据的分析和处理,提供电影排名和推荐服务,满足...
基于MapReduce实现决策树算法的知识点 基于MapReduce实现决策树算法是一种使用MapReduce框架来实现决策树算法的方法。在这个方法中,主要使用Mapper和Reducer来实现决策树算法的计算。下面是基于MapReduce实现决策...
在实际应用中,MapReduce通常与Hadoop框架一起使用。Hadoop提供了一个分布式文件系统(HDFS)用于存储数据,以及资源管理和调度(YARN)来协调MapReduce任务的执行。在“学生mapreduce成绩分析”项目中,学生数据...
MapReduce通常与Hadoop生态系统一起使用,Hadoop提供了一个分布式文件系统(HDFS)来存储大数据,以及YARN资源管理器来协调计算任务。在这个项目中,数据可能存储在HDFS上,由YARN调度执行MapReduce作业。 5. **...
### MapReduce基础知识详解 #### 一、MapReduce概述 **MapReduce** 是一种编程模型,最初由Google提出并在Hadoop中实现,用于处理大规模数据集的分布式计算问题。该模型的核心思想是将复杂的大型计算任务分解成较...
7. **运行与调试**: 在实际环境中,我们需要配置 Hadoop 集群,设置输入文件路径,编译并打包 WordCount 程序,最后通过 Hadoop 的 `hadoop jar` 命令提交作业到集群运行。调试时,可以查看日志输出,检查错误信息...
#### 引言:MapReduce的诞生与使命 在MapReduce问世之前,Google的工程师们,包括其发明者Jeffrey Dean和Sanjay Ghemawat,面临着一个共同的挑战:如何高效地处理海量原始数据。这些数据可能来自网页抓取文档、网络...
2. MapReduce和Hadoop:介绍了MapReduce的历史及其与Hadoop的关系。Hadoop是一个开源框架,支持分布式存储和计算,MapReduce是Hadoop的核心组件之一。 3. MapReduce案例分析:通过“Hadoop Example: WordCount”...
提案的核心内容分析了MapReduce与流数据处理的关系,强调了SQL标准支持MapReduce的必要性。MapReduce是一种分布式计算模型,常用于大规模数据集的并行处理,而流数据处理则涉及实时或近实时的数据处理。SQL标准支持...