当前位置:文档之家› 基于Hadoop的研究及性能分析

基于Hadoop的研究及性能分析

基于Hadoop的研究及性能分析摘要在大数据到来的今天,本文首先介绍了Hadoop及其核心技术MapReduce的工作原理。

详细讨论了Hadoop推测执行算法和SALS 推测执行算法并对它们的性能进行分析。

最后,分析了MapReduce 框架的通用二路连接算法 RSJ。

为了提高性能,提出了一种基于DistributedCache 的改进算法,通过减少 mapper 输出的数据来达到优化的目的。

关键字:Hadoop MapReduce 性能算法Abstract:In the era of big data, this paper introduces Hadoop, MapReduce and its core technology works.I have discussed the Hadoop speculative execution algorithms and SALS speculative execution algorithm and analyzed their performance.Finally, I analyzed the Common Road Join Algorithm in MapReduce framework.To improve performance, I propose an improved algorithm based DistributedCache by reducing the mapper output data to achieve optimization purposes.Key words:Hadoop; MapReduce; Performance;Algorithm1、绪论1.1、背景伴随Internet和Web技术的飞速发展,网络日志、互联网搜索索引、电子商、社交网站等技术的广泛使用带来了数据量的急剧增长。

计算机技术在各行各业的普遍使用也促使的数据的产生,如用于测量和传输有关位置、震动、湿度、温度的传感器所产生的海量数据。

大数据时代真的来了吗?据[1]中统计显示所有企业每天的信息存储量高达 2.2ZB,其中大型企业平均每天产生的信息量达 10WTB,而中小企业平均每天产生 563TB 的数据量。

预计明年大型企业产生的数据量将增长 67%,中小企业数据量的增长则高达 178%。

因此,在 2012年年末,中国工程院院士邬贺铨指出:“在过去短短的 18 个月,中国移动互联网流量增加了10 倍,占全球互联网流量的10%,成为名副其实的世界数据中心。

因此,中国已经步入了“大数据”时代。

大数据主要有四个典型特征:(1)海量:目前各行各业面临着数据量的大规模增长。

例如,IDC 最近的报告预测称,到2020年,全球数据量将扩大50倍之多。

(2)多样性:数据不单单以结构化数据形式存在。

目前,半结构化数据和非结构化数据也已经占了数据总数相当大的一部分。

数据多样性的增加主要由包括网络日志、社交媒体、互联网搜索、手机通话记录等数据类型造成的。

(3)高速:指的是需要实现对大数据的快速处理和分析任务,以实时满足用户需求。

(4)易变性:大数据具有多层结构,这意味着大数据会呈现出多变的形式和类型。

由于大数据的上述几种特性,使得采用传统数据库技术来处理大数据存如下一些问题:第一,平时使用的计算机存储容量和计算速度都无法满足大数据的存储和计算要求。

虽然可以根据数据的大小采取增强机器配置的方法来满足需求,但是代价是及其昂贵的;第二,传统关系型数据库只能用于存储和查询结构化的数据类型,而无法满足多样化数据的存储;第三,传统数据库系统的分析处理能力也无法满足快速处理大数据的处理请求。

正是因为传统技术有着这些方面的不是,用于处理数掘的Hadoop技术诞生了,Hadoop是上述解决方案的实现框架。

Hadoop平台Apache是开源设计的,它是部署在廉价的计算机集群上的一个分布式计算框架。

与PC机类似,Hadoop也为应程序提供一组稳定、灵活、可靠的接口。

Hadoop 括许多子项目,如HDFS、HBase、MapRedeuce等。

其中分布式文件系统(HDFS)主要是用来存储非结构化数掘的;HBase用来存储海量半结构化数据的; MapReduce作为一种并行编程模型,可以很好的实现大数据时代的计算任务。

所以木文将对Hadoop进行深入的研究,并对它的一些性能进行分析,进而让我们更了解该系统。

本文的研究意义如下:(1)随着数据量的爆炸式增长,如何有效的存储海量数据、如何高效的从现存海量数据中获得所需信息,对经济、社会、政治发展都具有重要的意义。

(2)Hadoop是为存储、处理大数据而产生。

Hadoop框架将数据的存储和处理集成于一体,因此在大数据时代研究Hadoop具有重要的理论意义。

(3)HDFS和MapReduce作为Hadoop核心部件,对它们进行研究和优化,可以更好的理解Hadoop运行机制,在一定程度上提高Hadoop系统的整体性能,对Hadoop在大数据环境中的使用具有重要的意义。

1.2、国内外的研究现状在大数据时代,海量数据存储技术具有重大的研究意义和市场价值,随着数据量的增长和数据结构复杂度的提高,存储技术不断更新换代,存储产品也层出不穷。

为了降低使用成本,目前的分布式系统趋于建立在廉价的服务器、PC或普通存储设备之上。

由于海量数据存储系统的规模巨大和系统设计复杂,服务器、设备故障、软件出错的频率较高因此如何构建自组织能力强、数据可靠性高和可伸缩性好的系统成为存储系统设计的关键任务。

经过近几十年的探索、实践和研究,人们发现基于智能存储设备的存储技术符合上述条件,所以该技术也成为了目前存储技术研究的焦点。

目前,国内外研究中对于基于 MapReduce 框架数据集连接(join)优化问题已经存在了一些解决方案:文献[2]中作者针对等连接关系型任务提出了一种新的编程模式Map-Reduce-Merge。

该模型除了含有 Map 和 Reduce 阶段之外,还添加了一个 Merge 阶段。

该模型的思想是:当处理连接任务时设置了多个 Reduce 节点,则 Reduce 阶段输出的结果分散在集群中的不同节点上。

因此,Merge 阶段的任务把 Reduce 阶段输出的、分布在多个节点上的结果进行合并,从而得到最后的结果。

但是,这篇文章仅仅提出了思想,并没有提出相应的方法来实现这一思想。

文献[3]提出一种仅仅使用一个 MapReduce 任务就能够完成多路连接任务的方法。

它的主要思想是:以一对多的形式将 Map 端中满足连接条件的元组都发往同一的 Reduce 端,然后在 Reduce 端进行连接操作。

然而,这篇文章重点就如何减少 Map 端发往Reduce 的数据量进行了研究,并没有给出具体的实现。

文献[4]中提出了一种基于预排序的多路连接算法。

算法思想是首先将连接任务划分成多个连接的子任务,然后对每个子任务进行预处理。

预处理的作用是将每个子任务所要连接的两个表按照连接属性值进行排序,使得具有相同属性值的元组能够存储在同一个Map 点上,这时候就可以在 Map 阶段完成多个子连接任务,而在Reduce 阶段,将各子任务的结果合并。

这算法的不是之处在于对表数据的预排序也会产生大量的网络开销。

2、Hadoop及MapReduce介绍2.1、Hadoop简介:Hadoop最早是作为一个开源搜索引擎项目Nutch的基础平台而开发的,后来随着项目的进展,Hadoop被作为一个单独的开源项目进行开发。

Hadoop 也括许多子项目,如,HBase、Pig、Hive、HDFS 和MapReduce 等,其中最核心纽成项目是HDFS和MapReduce。

HDFS 是一种分布式存储技术,为Hadoop并行计算提供了数据支持。

MapReduce 是一种并行编程模型,包括Map和Reduce两个部分。

Map和Reduce的作分别是作业的分解与结果的汇总。

MapReduce和HDFS都时采用主从式架构,通过构建主节点来来屏蔽从节点的复杂的底层结构。

同时,该主从式架构简化了 MapReduce使用的文件目录的映射。

Hadoop作为一个开源的软件平台使得编写和运行用于处理海量数据的应用程序更加容易。

Hadoop是MapReduee的实现,它使用了Hadoop分布式文件系统(HDFS)[5]。

MapReduce将应用切分为许多小任务块去执行。

出于保证可靠性的考虑,HDFS会为数据块创建多个副本,并放置在群的计算节点中,MapReduee就在数据副本存放的地方进行处理。

作为一个分布式系统平台,Hadoop具有以下一些优势:可扩展性:Hadoop可以可靠的存储和处理Petabytes级别的数据。

经济性:Hadoop将数据分布到由廉价Pc机组成的集群中进行处理,这些集群可以由成千上万个节点组成。

有效性:通过数据分发,Hadoop可以在不同的节点上并行处理数据,这使得数据处理过程大大提速。

可靠性:Hadoop自动维护一份数据的多个拷贝并自动将失败的计算任务进行重新部署。

2.2、Mapreduce简介2.2.1、Mapreduce编程框架Hadoop MapReduce 也是一个 Master/Slave 式的架JobTracker 只有一个,并且为主服务器(如同 HDFS 中的NameNode),主要负责任务的调度和管理工作。

TaskTracker 可以有多个,每个 TaskTracker 运行在一个节点上,是真正执行任务的地方。

JobTracker 负责把 Map 和 Reduce 任务分配给空闲的TaskTracker 进行处理。

如果在执行过程中某个 TaskTracker 出现故障,则 JobTracker 负责把该节点上的任务分配给其他的TaskTracker 任务重新运行。

下面首先详细介绍了 MapReduce 模型的设计原理,然后介绍Hadoop 系统中 MapReduce 的工作流程。

2.2.2、Mapreduce工作原理根据上述思想 MapReduce 被抽象成 Map 和 Reduce 两个阶段。

在实际的编程实现中,程序员只需要实现这 map()和 reduce()两个函数即可,其中 Map 阶段对应分的过程。

MapReduce编程框架将为输入数据集的每个分片分配一个 Map 任务,并且在集群中各任务对分片的处理是并发的。

每一个 Map 任务的输入为对应分片中key/value 的集合,根据用户自定义的 map()方法生成中间结果key/value 的集合,再将中间结果中相同 key 的 value 进行合并传递给reduce()方法。

相关主题