论文部分内容阅读
摘 要:随着信息时代的飞速发展。海量数据的应用处理已经成为大家重点关注的首要问题。论文首先对Hadoop技术的产生及特点进行介绍,然后重点分析了Hadoop的两大关键技术分布式文件系统(HDFS)和MapReduce编程模型,最后对Hadoop的关键技术进行总结并给出一些看法,并对未来发展方向进行了展望。
关键词:Hadoop;HDFS体系结构;MapReduce
随着信息时代的飞速发展,随着各种数据的迅猛增长。海量数据的应用处理已经成为大家重点关注的首要问题。在很多传统的行业里,大量数据的查询与存储主要还是依靠关系型数据库管理系统。而Hadoop平台的出现,提供了廉价的处理大数据的能力。完美的解决了在企业里海量数据处理和应用的要求,使得Hadoop成为现代企业处理海量数据的最好的选择。
论文首先对Hadoop技术的产生及特点进行介绍,然后重点分析了Hadoop的两大关键技术分布式文件系统(HDFS)和MapReduce编程模型,最后对Hadoop的关键技术进行总结并给出一些看法。
一、Hadoop技术介绍
Apache公司于2005年最先引入Hadoop,它源于google公司开发的MapReduce和Google File System(GFS)项目。Hadoop因为对并行分布处理“大数据”有利而得到特别重视,是新一代的架构和技术。Hadoop是一个分布式的计算平台,用户可以使用它开发并处理海量数据的各种应用软件。HDFS和MapReduce是Hadoop框架中最为核心的设计。HDFS主要负责海量数据的存储,MapReduce主要负责数据的计算。
二、Hadoop的关键技术之——HDFS体系结构
HDFS被称为分布式文件系统,是Hadoop的核心技术。HDFS的设计使得它适合运行在通用硬件上,可以部署在在廉价的机器上。HDFS的优势:HDFS可以处理超大文件,可以存储数GB级、数TB级、数PB级的超大文件;HDFS可以集群规模动态扩展,数百甚至数千个节点能够动态的加入到集群中;HDFS又具有主容错的优势,在集群中的节点挂点可以由其他的节点代替;HDFS一般不处理交互式处理,主要处理批处理,采用流式读写,可以“一次写入,多次读取”,当数据源生成一个数据集之后,这个数据集会被复制分发到不同的存储节点,可以响应各类数据分析任务的请求。
HDFS更加看重的是数据的吞量,不太看重数据的访问速度;由于HDFS 的安全、可靠及高可用性,Hadoop可以采用的硬件要求不高,可以使用廉价的商用机器集群。在分布式计算中,HDFS是数据存储管理的基础。HDFS具有很多优点,像高获得性,高可靠性,高扩展性等。这些优点使得HDFS可以稳定的存储海量数据。
HDFS是一个主/从(Master/Slave)的体系结构。我们从用户的角度来看,HDFS和传统的文件系统差不多,它可以对文件执行Create、Read、Update和Delete操作。因为HDFS是分布式存储,在HDFS体系结构中,有两种类型的结点,一类是元数据结点(NameNode);另一类是数据结点(DataNode)。DataNode用来存储实际的数据,NameNode(主控制服务器)是用来管理文件系统的元数据。在文件系统中,NameNode负责管理元数据,DataNode负责处理实际数据的存储。通过NameNode和DataNodes的交互,客户可以访问文件系统。客户端通过和NameNode相关联,可以获取文件的元数据。同时,通过直接和DataNode的交互,进行文件的输入和输出操作
(一)NameNode
Namenode 上保存着 HDFS 的名字空间。Namenode使用EditLog 的事务日志记录各种对文件系统的元数据的修改操作。事务日志(EditLog)被存储在本地操作系统的文件系统中。在FsImage 的文件中,存储着整个文件系统的名字空间,同样的FsImage也被存储在本地操作系统的文件系统中。整个文件系统的名字空间文件数据块映射(Blockmap)的映像都保存在内存中。由于对元数据结构的紧凑设计,可以在一个4G内存的 Namenode中能够处理大量的文件及目录。
我们说的checkpoint(检查点)是这样一个过程,首先,Namenode启动,然后可以从硬盘中读取FsImage和Editlog,然后在将每个Editlog 中的事务作用在内存中的 FsImage 上,接着将新得到的这个FsImage从内存中保存到本地的硬盘,最后就可以删除原来的Editlog。就现在的实现而言,检查点仅仅发生在 Namenode 启动时,在将来会实现支持周期性的检查点。
(二)DataNode
Datanode 可以把HDFS 的数据以文件的形式存储在本地,Datanode不知道HDFS 文件的相关信息。HDFS的数据被划分成若干的数据块,Datanode将每个数据块分别存储在本地文件系统的一个独立文件中。Datanode 不会在一个目录下创建所有文件,Datanode采用试探的方法来确定每个目录中的文件数目,这样,在时机允许时创建相应的子目录。
当我们启动一个Datanode时,Datanode将扫描所有的本地文件系统,这样会产生一个列表,在这个列表中将所有 HDFS 数据块和本地文件一一对应,然后会产生一个报告,并将报告然发送到 Namenode ,这个报告就是块状态报告。
通常,我们可以这样来进行HDFS部署,将NameNode进行在一个专有的机器上,使用多个集群中的其他機器来运行一个DataNode;当然我们也可以在同一台机器上既运行NameNode又运行一个或多个DataNode。在一个集群中,只设计一个NameNode,这样的设计可以简化系统的架构。 (三)Hadoop的关键技术——MapReduce技术
对于大量数据的操作处理,MapReduce采用了一种全新的思想,它首先分发给一个主节点,然后在将这些操作给下面的各个分节点,分节点协作完成。在处理结果时,先得到每个分节点的结果,最后在处理并得到最终的结果。我们可以这样说, MapReduce是分解相应任务并汇总最终结果。MapReduce有两个特别重要的函数,reduce和map,map的主要功能是将一个任务进行分解。
而reduce的主要功能是汇总多任务的处理结果。这里,我们要特别注意,在采用 map和reduce处理数据时有这样的特性:我们可以将待处理的数据集进行分解,将其分解为多个较小的数据集,并且我们可以并行处理这些小的数据集。
在上图中,我们可以看到,如何使用MapReduce来处理大数据集。在这个模型中,有两个非常重要的函数,分别是map和reduce函数。用户可以根据自己的实际需求来设计函数的功能及规则,用户可以根据自己定义的规则,输入一个对,可以转换成另外的一个或者一批对,并且输出。
在Map处理时,首先将数据进行分割处理,并且划分成一个个固定大的小片段(splits),然后在将每一个片段进行处理并分解成一批对。针对每一个片段,创建一个相应的Map任务,这个任务可以处理自定义的map函数。然后以片段中的对为输入,通过运算并得到结果对,然后按Key1排序,并处理得到一个Value的列表,在得到一个新的元组。最后,重新分组,这些分组都有相应的Reduce任务。
在Reduce处理时,Reduce首先接收Mapper的数据,然后整合并且排序,接着就去调用自定义函数reduce,然后在去处理相应的键值对,得到一个新的键值对,这样就会在在HDFS上。
三、总结
Hadoop是一个高度可扩展的开源数据管理软件,使我们轻松地获取、处理、交换任何数据。Hadoop是一个新型数据管理系统,它通过计算网络的处理能力将传统的非结构化领域或非关系型数据库联合起来。虽然它从传统大规模并行处理(MPP)数据库设计模式借鉴了大量经验,但Hadoop有几个关键的不同。
首先,它是为低成本字节的经济而设计的。Hadoop几乎可以在任意硬件上运行,可以非常宽容地应对异构配置和不时发生的故障。
第二,Hadoop非常容易扩展。Hadoop第一个版本就可以扩展到数千个节点,当前版本试验表明可以持续增加到上万个节点以上。使用主流的两插槽8核处理器,那就是80,000核的计算能力。
第三,Hadoop可以非常灵活地存储和处理数据的类型。Hadoop可以接受任何格式、任何类型的数据,并具有一组功能丰富的API,用来读取和写入任何格式的数据。
大部分组织刚刚开始他们的Hadoop旅程。他们用它来提炼大量的数据,为业务分析实践提供价值。有些人用它来采集和使用一些曾经废弃的数据,或者仅仅从已有系统中去采集比以前更多的数据。更先进的组织开始走向数据科学研究之路,从事大数据和传统输入源的探索。Hadoop几乎可以连接到传统企业数据栈的每一层,因此将占据数据中心的中心位置。它将在系统和用户之间交换数据并提供数据服务。在技术层面,Hadoop也就是做这些事情,但因为它为大众带来了超级计算能力,它也造成了商业的转变。它是开源软件,所创建的社区带来大规模并行处理,以及水平扩展所有在商品硬件上的存储。它不能替代系统,它迫使现有工具更加专业化,并占有流行的数据架构工具箱的一席之地。
Hadoop 技术虽然已经被广泛应用,但是该技术无论在功能上还是在稳定性等方面还有待进一步完善,所以还在不断开发和不断升级维护的过程中,新的功能也在不断地被添加和引入,我们可以关注Apache Hadoop的官方网站了解最新的信息。相信在不久的将来,Hadoop 会被广泛应用于越来越多的领域,从而风靡全球。
参考文献:
[1] 洪沙,杨深远.云计算关键技术及基于Hadoop的云计算模型研究[J].软件导刊,2010(09).
[2] 朱珠.基于Hadoop的海量数据处理模型研究和应用[D].北京:北京邮电大学,2008.
[3] 刘智慧,张泉灵.大数据技术研究综述[J].浙江大学学报(工学版),2014(06).
作者简介:王海波(1978-),女,漢族,黑龙江哈尔滨人,工学硕士,南通科技职业学院信息与智能工程学院教师,讲师,主要研究方向:软件技术、软件过程改进、数据库技术。
关键词:Hadoop;HDFS体系结构;MapReduce
随着信息时代的飞速发展,随着各种数据的迅猛增长。海量数据的应用处理已经成为大家重点关注的首要问题。在很多传统的行业里,大量数据的查询与存储主要还是依靠关系型数据库管理系统。而Hadoop平台的出现,提供了廉价的处理大数据的能力。完美的解决了在企业里海量数据处理和应用的要求,使得Hadoop成为现代企业处理海量数据的最好的选择。
论文首先对Hadoop技术的产生及特点进行介绍,然后重点分析了Hadoop的两大关键技术分布式文件系统(HDFS)和MapReduce编程模型,最后对Hadoop的关键技术进行总结并给出一些看法。
一、Hadoop技术介绍
Apache公司于2005年最先引入Hadoop,它源于google公司开发的MapReduce和Google File System(GFS)项目。Hadoop因为对并行分布处理“大数据”有利而得到特别重视,是新一代的架构和技术。Hadoop是一个分布式的计算平台,用户可以使用它开发并处理海量数据的各种应用软件。HDFS和MapReduce是Hadoop框架中最为核心的设计。HDFS主要负责海量数据的存储,MapReduce主要负责数据的计算。
二、Hadoop的关键技术之——HDFS体系结构
HDFS被称为分布式文件系统,是Hadoop的核心技术。HDFS的设计使得它适合运行在通用硬件上,可以部署在在廉价的机器上。HDFS的优势:HDFS可以处理超大文件,可以存储数GB级、数TB级、数PB级的超大文件;HDFS可以集群规模动态扩展,数百甚至数千个节点能够动态的加入到集群中;HDFS又具有主容错的优势,在集群中的节点挂点可以由其他的节点代替;HDFS一般不处理交互式处理,主要处理批处理,采用流式读写,可以“一次写入,多次读取”,当数据源生成一个数据集之后,这个数据集会被复制分发到不同的存储节点,可以响应各类数据分析任务的请求。
HDFS更加看重的是数据的吞量,不太看重数据的访问速度;由于HDFS 的安全、可靠及高可用性,Hadoop可以采用的硬件要求不高,可以使用廉价的商用机器集群。在分布式计算中,HDFS是数据存储管理的基础。HDFS具有很多优点,像高获得性,高可靠性,高扩展性等。这些优点使得HDFS可以稳定的存储海量数据。
HDFS是一个主/从(Master/Slave)的体系结构。我们从用户的角度来看,HDFS和传统的文件系统差不多,它可以对文件执行Create、Read、Update和Delete操作。因为HDFS是分布式存储,在HDFS体系结构中,有两种类型的结点,一类是元数据结点(NameNode);另一类是数据结点(DataNode)。DataNode用来存储实际的数据,NameNode(主控制服务器)是用来管理文件系统的元数据。在文件系统中,NameNode负责管理元数据,DataNode负责处理实际数据的存储。通过NameNode和DataNodes的交互,客户可以访问文件系统。客户端通过和NameNode相关联,可以获取文件的元数据。同时,通过直接和DataNode的交互,进行文件的输入和输出操作
(一)NameNode
Namenode 上保存着 HDFS 的名字空间。Namenode使用EditLog 的事务日志记录各种对文件系统的元数据的修改操作。事务日志(EditLog)被存储在本地操作系统的文件系统中。在FsImage 的文件中,存储着整个文件系统的名字空间,同样的FsImage也被存储在本地操作系统的文件系统中。整个文件系统的名字空间文件数据块映射(Blockmap)的映像都保存在内存中。由于对元数据结构的紧凑设计,可以在一个4G内存的 Namenode中能够处理大量的文件及目录。
我们说的checkpoint(检查点)是这样一个过程,首先,Namenode启动,然后可以从硬盘中读取FsImage和Editlog,然后在将每个Editlog 中的事务作用在内存中的 FsImage 上,接着将新得到的这个FsImage从内存中保存到本地的硬盘,最后就可以删除原来的Editlog。就现在的实现而言,检查点仅仅发生在 Namenode 启动时,在将来会实现支持周期性的检查点。
(二)DataNode
Datanode 可以把HDFS 的数据以文件的形式存储在本地,Datanode不知道HDFS 文件的相关信息。HDFS的数据被划分成若干的数据块,Datanode将每个数据块分别存储在本地文件系统的一个独立文件中。Datanode 不会在一个目录下创建所有文件,Datanode采用试探的方法来确定每个目录中的文件数目,这样,在时机允许时创建相应的子目录。
当我们启动一个Datanode时,Datanode将扫描所有的本地文件系统,这样会产生一个列表,在这个列表中将所有 HDFS 数据块和本地文件一一对应,然后会产生一个报告,并将报告然发送到 Namenode ,这个报告就是块状态报告。
通常,我们可以这样来进行HDFS部署,将NameNode进行在一个专有的机器上,使用多个集群中的其他機器来运行一个DataNode;当然我们也可以在同一台机器上既运行NameNode又运行一个或多个DataNode。在一个集群中,只设计一个NameNode,这样的设计可以简化系统的架构。 (三)Hadoop的关键技术——MapReduce技术
对于大量数据的操作处理,MapReduce采用了一种全新的思想,它首先分发给一个主节点,然后在将这些操作给下面的各个分节点,分节点协作完成。在处理结果时,先得到每个分节点的结果,最后在处理并得到最终的结果。我们可以这样说, MapReduce是分解相应任务并汇总最终结果。MapReduce有两个特别重要的函数,reduce和map,map的主要功能是将一个任务进行分解。
而reduce的主要功能是汇总多任务的处理结果。这里,我们要特别注意,在采用 map和reduce处理数据时有这样的特性:我们可以将待处理的数据集进行分解,将其分解为多个较小的数据集,并且我们可以并行处理这些小的数据集。
在上图中,我们可以看到,如何使用MapReduce来处理大数据集。在这个模型中,有两个非常重要的函数,分别是map和reduce函数。用户可以根据自己的实际需求来设计函数的功能及规则,用户可以根据自己定义的规则,输入一个
在Map处理时,首先将数据进行分割处理,并且划分成一个个固定大的小片段(splits),然后在将每一个片段进行处理并分解成一批
在Reduce处理时,Reduce首先接收Mapper的数据,然后整合并且排序,接着就去调用自定义函数reduce,然后在去处理相应的键值对,得到一个新的键值对,这样就会在在HDFS上。
三、总结
Hadoop是一个高度可扩展的开源数据管理软件,使我们轻松地获取、处理、交换任何数据。Hadoop是一个新型数据管理系统,它通过计算网络的处理能力将传统的非结构化领域或非关系型数据库联合起来。虽然它从传统大规模并行处理(MPP)数据库设计模式借鉴了大量经验,但Hadoop有几个关键的不同。
首先,它是为低成本字节的经济而设计的。Hadoop几乎可以在任意硬件上运行,可以非常宽容地应对异构配置和不时发生的故障。
第二,Hadoop非常容易扩展。Hadoop第一个版本就可以扩展到数千个节点,当前版本试验表明可以持续增加到上万个节点以上。使用主流的两插槽8核处理器,那就是80,000核的计算能力。
第三,Hadoop可以非常灵活地存储和处理数据的类型。Hadoop可以接受任何格式、任何类型的数据,并具有一组功能丰富的API,用来读取和写入任何格式的数据。
大部分组织刚刚开始他们的Hadoop旅程。他们用它来提炼大量的数据,为业务分析实践提供价值。有些人用它来采集和使用一些曾经废弃的数据,或者仅仅从已有系统中去采集比以前更多的数据。更先进的组织开始走向数据科学研究之路,从事大数据和传统输入源的探索。Hadoop几乎可以连接到传统企业数据栈的每一层,因此将占据数据中心的中心位置。它将在系统和用户之间交换数据并提供数据服务。在技术层面,Hadoop也就是做这些事情,但因为它为大众带来了超级计算能力,它也造成了商业的转变。它是开源软件,所创建的社区带来大规模并行处理,以及水平扩展所有在商品硬件上的存储。它不能替代系统,它迫使现有工具更加专业化,并占有流行的数据架构工具箱的一席之地。
Hadoop 技术虽然已经被广泛应用,但是该技术无论在功能上还是在稳定性等方面还有待进一步完善,所以还在不断开发和不断升级维护的过程中,新的功能也在不断地被添加和引入,我们可以关注Apache Hadoop的官方网站了解最新的信息。相信在不久的将来,Hadoop 会被广泛应用于越来越多的领域,从而风靡全球。
参考文献:
[1] 洪沙,杨深远.云计算关键技术及基于Hadoop的云计算模型研究[J].软件导刊,2010(09).
[2] 朱珠.基于Hadoop的海量数据处理模型研究和应用[D].北京:北京邮电大学,2008.
[3] 刘智慧,张泉灵.大数据技术研究综述[J].浙江大学学报(工学版),2014(06).
作者简介:王海波(1978-),女,漢族,黑龙江哈尔滨人,工学硕士,南通科技职业学院信息与智能工程学院教师,讲师,主要研究方向:软件技术、软件过程改进、数据库技术。