分布式计算平台Hadoop

2018-01-18 09:13柯研马凯郑钰辉
数字技术与应用 2018年9期
关键词:大数据

柯研 马凯 郑钰辉

摘要:随着计算机技术和互联网产业的发展,数据量呈现出了爆炸式的增长,使人类进入了大数据时代。面对成千上百的TB或者PB级别的数据,传统的计算机技术在数据存储和数据分析上已经无法满足人们对数据处理的需求了。为了解决大数据的存储、大数据的分析和大数据的管理问题,研究人员开发出了Hadoop分布式系统平台来解决这些问题。本文主要介绍分布式平台Hadoop的分布式文件系统(HDFS)、并行计算编程模型(MapReduce)。

关键词:大数据;HDFS;MapReduce

中图分类号:TN911.73 文献标识码:A 文章编号:1007-9416(2018)09-0070-02

近些年来,随着互联网技术的发展和数字化的普及,每天都在产生着大量的数据,人们也渐渐进入了大数据时代。与此同时大数据的出现也引起了学术界、互联网产业和各国政府的重视。面对海量数据需要存储、分析和处理的问题,需要一种具有高效性且能并行的编程计算模型来解决这些问题。

Google在2003-2004年公布了部分Google的分布式文件系统(GFS)、Google的MapReduce开源分布式并行计算框架和一个大型分布式数据库(BigTable)的思想细节[1]。Doug cutting等人在受到GFS和MapReduce思想的启发后,用了两年时间实现了DFS和MapReduce机制,使的Nutch性能得到显著的提升,2005年Hadoop作为Nutch的一部分引入了Apache Software Foundation公司開始研发。然后随着Hadoop的发展和完善,Hadoop成为了大数据分析处理的主流技术。

1 分布式计算平台Hadoop

Hadoop是一个Apache Software Foundation公司用Java语言开发出的开源分布式计算平台。Hadoop的设计核心是HDFS(Hadoop Distributed File System)分布式文件系统和MapReduce并行计算编程模型。HDFS主要是用来解决海量数据的存储问题,MapReduce并行计算编程模型主要是用来解决海量数据的计算和分析问题。Hadoop的工作方式是串行处理和并行处理相结合,大大提高了数据分析的计算速度。Hadoop首先通过HDFS分布式文件系统将不同节点上的数据进行整合,其次提供给用户一个标准的接口,将所需要的文件读写到HDFS分布式文件系统中,然后再使用MapReduce并行计算编程模型进行计算,最后可以很快的处理大量的数据。

Hadoop分布式计算平台的出现解决了大数据并行计算、存储、管理的问题,普通用户可以在不了解分布式底层细节的情况下来开发分布式程序,可以充分地利用集群的力量来进行海量数据的存储和计算数据并且进行分析。Hadoop具有高效性、可靠性、高可扩展性、成本低等特点。具体特点总结如下:

优点如下:(1)高可靠性:Hadoop的存储方式是按位存储[2],它能处理海量的数据。(2)高效性:Hadoop是以并行的方式工作的,通过并行处理加快处理速度。(3)高容错性:Hadoop假设计算元素和存储会失败,它产生多个工作数据副本,如果有一个副本丢失或者丢失,确保能够针对失败的节点重新分布处理。(4)高扩展性:Hadoop通过在计算机集簇间分配数据进而完成计算任务,通过软件配置,这些集簇能够非常容易扩展到数以千计的节点中。

1.1 HDFS

HDFS是一个容错性能很高的分布式文件系统,可以被广泛地安置到廉价的计算机器上,HDFS是以流的形式访问写入的大型文件,可以大大提高整个系统的数据吞吐量,因此十分适合于数据集很大的应用场景。

HDFS架构主要采用的是主从架构,一个十分典型的HDFS集群是含有一个名称节点(NameNode)和多个数据节点(DataNode)[4]。其中DataNode是存在便宜的计算机上,主要是用于保存Block块文件。Block是对一个文件进行分块,通常是64M。

NameNode节点主要负责整个HDFS分布式文件系统中的接收client用户的请求的任务,同时要维护文件系统的目录结构和管理文件系统与数据块的关系。通常集群中只有一台计算机上运行着NameNode实例。名称节点上存储着HDFS的名称空间,对于任何篡改FileSystem原数据的操作,名称节点都会使用一种称为EditLog的事务日志来记录下篡改FileSystem原数据的行为。所有的HDFS分布式文件系统的名称空间,其中包括Block块到文件的映射,文件的属性等都会保存在FsImage文件中,FsImage文件是存放在NameNode所在的本地文件系统上。

DataNode节点主要负责存储HDFS分布式文件系统中的文件,同时将数据分成大量的数据块,为了保证数据的安全性,将数据进行备份,当其中一份数据出现的问题时候,将由其他备份数据对数据进行修复。数据节点将HDFS的数据以文件的形式保存在本地的文件系统中,将每个HDFS数据块都保存在本地文件系统的一个单独的文件中。当一个数据节点开始运行时,它会扫描本地文件系统中所有的文件,同时会产生一个与本地所有文件相互对应的HDFS数据块的一个列表,然后发送给名称节点。HDFS读写流程如图1所示。

HDFS文件读取\写入过程:首先客户端向Filesystem发出读取或者写入的请求,然后FileSystem再调用NameNode来确定文件起始块的位置。对于每一个数据块来说,NameNode都会返回存有块备份的DataNode的地址给客户端,如果客户端自己就是一个名称节点,而且客户端上存有相应数据块的备份时,该名称节点就会直接从本地的数据节点上读取数据。

1.2 MapReduce并行计算编程模型

Hadoop MapReduce是一個简便易用的并行计算编程模型,在MapReduce基础上开发出来的应用程序能够运行在由数以千计的计算机组成的计算机集群上,同时在并行处理海量的数据这一功能上有着高可靠性、高容错性的优点。

MapReduce并行计算模型的首要条件是:(1)可以将我们需要进行处理的数据集划分成多个小的数据集;(2)我们可以对每一个小的数据集进行并行处理。MapReduce并行计算模型的的主要思想是将需要执行的问题拆分成map函数和reduce函数两个部分。在需要处理的数据集被分成多个小的数据集后,map函数会将待处理的数据集映射成不同的block块,然后将这些小的数据集分配给计算机群处理,来进行分布式并行计算,最后使用reduce函数将计算的结果整理和传输给计算机,从而输出开发者所需要的结果。

MapReduce并行计算模型是有一个单独运行在主节点上的作业追踪器(JobTracker)和多个运行在每个集群从节点上的任务追踪器(TaskTracker)组成。

JobTracker又被称为作业跟踪器[5],是运行主节点上的一个很重要的进程,是MapReduce并行计算模型的调度器,主要负责处理用户提交代码的后台程序。作业追踪器将首先选择处具体的文件去处理作业,其次将作业切割成一个个小的任务,同时将任务进行分配,把它们到所需要的数据所在的子节点上。其中map 任务是解析每条数据记录,传递给用户所编写的map函数并且执行map函数,将输入的结果写入到本地磁盘中;reduce 任务 是从map 任务的执行结果中远程的读取需要输入的数据,然后将数据排序,最后将数据按照排序分组,把数据传递给用户编写的reduce函数,reduce函数负责执行。主节点负责监视从节点的执行情况,并且重新执行之前失败的任务。JobTracker可以运行在任意一台计算机上。

TaskTracker又被称为任务跟踪器,主要是负责保持和作业跟踪器之间的交互,在分配的block块上执行map的任务或者reduce的任务,在执行任务的时候,JobTracker只有一个,但是TaskTracker会有很多个。

2 结语

本文首先介绍了分布式计算平台Hadoop的起源,Hadoop是受Google共享的关于分布式文件系统(GFS)、MapReduce开源分布式并行计算框架和一个大型分布式数据库的思想启发所研究出来,一切都是为了解决海量数据的存储、计算和分析的问题;其次介绍了Hadoop的整体框架,了解到了Hadoop具有高效性、高扩展性、高可靠性和高容错性的特点。最后详细介绍了Hadoop的两个核心HDFS分布式文件系统和MapReduce并行计算模型的具体内容。

参考文献

[1]陈吉荣,乐嘉锦.基于Hadoop生态系统的大数据解决方案综述[J].计算机工程与科学,2013,35(10):25-35.

[2]夏靖波,韦泽鲲,付凯,等. 云计算中Hadoop技术研究与应用综述[J].计算机科学,2016,43(11):6-11.

[3]陈玺,马修军,吕欣.Hadoop生态体系安全框架综述[J].信息安全研究,2016,2(8):684-698.

[4]王峰,雷葆华.Hadoop分布式文件系统的模型分析[J].电信科学,2010,26(12):95-99.

[5]董新华,李瑞轩,周湾湾,等. Hadoop系统性能优化与功能增强综述[J].计算机研究与发展,2013,50(s2):1-15.

猜你喜欢
大数据
大数据环境下基于移动客户端的传统媒体转型思路