贺建英
电子政务平台下HDFS中高效存储上传文件的方法
贺建英
在Hadoop的电子政务平台中针对存储成千上万的用户上传文件,利用HDFS提高文件的存储效率。设计了一个在云存储过程中小文件上传存储的处理方案。设定临时容器来暂存上传的小文件,使用定时器或临时容器满为临界条件进行文件的合并组合。通过增加NFS服务器和分离NameNode节点的职责,建立相关子类来存储和云同步服务信息,降低客户端访问数据的压力。设计一个简单的预测系统负荷的算法,使文件的合并组合在系统负荷较小时进行,减少等待时间,提高效率。通过实验表明合理的设置临时容器的大小和增加NFS服务器,在系统负荷低时能有效地提高HDFS存储小文件的效率。
临时容器;NFS;系统负荷;HDFS;存储效率;云存储;
由于国家对电子政务建设的大力支持和投资,电子政务平台的规化也逐渐趋于成熟。电子政务平台中的数据也日趋庞大,除了需要存储基本的数据外,为让政务公开化、透明化、无纸化,系统还提供了电子办公和在线交流等业务,这些都是电子数据,必须存储在电子政务平台中。但还有一些很重要的数据也必须要存储在该平台中,如需要通过扫描或者以附件上传的文档,这些文档事先以纸质或者电子的形式进行传递,但最终还是会以电子数据的形式存储到电子政务平台中,方便存档和后期的访问。在目前的设计中对这类数据的存储较慢,有一定的瓶颈,将直接影响到整个电子政务平台的存储效率。在 Hadoop云平台的电子政务系统中可以分布式处理这些数据,提高数据的存储和访问能力。
在大数据环境下Hadoop中的分布式文件系统HDFS已经得到了广泛的应用,大大地提高了数据访问的吞吐量,但HDFS本身适合GB级甚至TB级的文件系统,适用于处理大文件。在HDFS中处理大文件时会以64MB为单位进行划分,每64MB为一个分块(block),并且这些文件是按
对Hadoop的HDFS存储小文件效率低下的问题,目前还没有一个通用的解决方案。当前主要是从两个方面来考虑:一方面是利用 HDFS本身提供了四种解决方案[1]:Hadoop Archive、 Sequence File、 CombineFileInputFormat和TextInputFormat。 其 中 CombineFileInputFormat 和TextInputFormat是一种以类封装的方式进行存储,需要考虑数据具体的存储位置,且会造成空间上的浪费。另一方面是根据具体的应用而对存储模块进行处理组合的方式。
1.1 Hadoop Archive
Hadoop Archive[2]的思想是将小文件放在一个文件存储容器中,将多个小文件打包成一个HAR文件,这样多个小文件的block就减少成一个block,同时也减少了NameNode在内存中的使用,但它仍然可以向客户端提供对文件的透明访问。其缺点在于:一是HAR文件一旦创建,便不能再对打包的文件进行更改。二是在创建Archive是会创建对应的副本,会浪费同样多的存储空间,造成存储空间的浪费等。
1.2 Sequence File
Sequence File[3]的思想是以
1.3 相关应用的组合方式
WebGIS(地理信息系统)是利用HAR技术结合系统数据的相关特性,将小文件合并成 64MB的大文件,并建立索引[4]的方式。在 BlueSky(中国电子教学共享系统)中把同属于一个分类的 PPT课件打包合并存储在一个大文件中,提供解决存储和读取小文件效率的方法[5]。
以上的研究都是基于 HDFS提供的原理——文件的合并或者组合来解决小文件存储效率的问题。然而还存在如下的问题:(1)在存储时小文件的元数据信息以名字节点存储时对内存的压力问题。(2)在组合或合并文件时的界限值如何界定,能使效率达到最优。(3)在系统运行时其负载能否承受文件的合并组合并存储。文献[6][7]中分别提到在 HDFS中对小文件的存储效率的方法,本文结合电子政务的实际情况,利用文献[6][7]的思想,进一步改进HDFS中高效存储文件的方法来提高文件存储的效率。
在电子政务平台中,文件是由不同的用户上传到云平台中。在HDFS中是以NameNode来作为系统中唯一的管理者。文件在上传合并时将会考虑到文件的实际大小、文件是否允许合并、文件合并时是以什么为界定条件等。基于这些因素的考虑,提出系统架构如图1所示:
图1 系统架构图
在本系统架构中,当用户上传文件到云存储器时(过程1),在云存储服务器内部为了不使 HDFS中唯一的管理者NameNode节点负荷过重,造成效率低下,在文件和目录的处理时将两种事务分开,分别进行处理。故增加 Access NameNode节点和Master NameNode节点,增加NFS服务器。服务器在对用户上传的文件进行处理时会借助于 NFS服务器(过程2),通过Access NameNode节点判断用户上传的文件是否为小文件(过程 3),则将该小文件的索引号按先到先入的顺序放入设定的容器中(过程 4)。当容器被装满时,则发送容器已满的信号到控制中心(过程 5),另外设定定时器,当达到指定的时间,不管容器中的小文件个数如何,则发送时间已到的信号到控制中心(过程5’)。此后控制中心将读取容器内的文件及相关信息,并对系统当前的负荷进行相关计算(过程 6),其算法将在后面介绍。通过对应的算法对系统负荷的计算判断是否进行小文件的合并组合操作(过程 7)。当小文件根据需要合并组合后将完成所上传的文件和已合并的大文件之间的映射(过程 8),此映射将放在Access NameNode中。在系统中设计的Access NameNode节点和 Master NameNode节点都是继承于NameNode节点,都是文件系统的管理者,其目的是为了分担由单一的NameNode节点管理整个系统的压力。这两个节点之间的元数据和相关信息都必须保持同步,同步分两部分:一部分是数据块的同步,是通过同时向两个NameNode中汇报元数据来保持一致;二部分是目录的同步,只要是依靠新增加的NFS服务器,通过Master NameNode将日志同步到NFS服务器上,而Access NameNode节点则实时读取NFS服务器的日志来保持目录树信息的一致。本系统架构的执行逻辑如图2所示:
图2 执行逻辑图
通过逻辑结构图可以看出,对系统中用户上传的文件,在系统负荷不大,且容器装满或者已经达到规定的时间,均可以把小文件合并成大文件,放在NFS服务器中。
系统的负荷预测主要是通过对已有的CPU的利用率和实时CPU的利用率的计算,推导出下一时刻系统CPU的利用率的方法。Analytic Hierarchy Process(层次分析法)[8]的思想就是把与决策有关的信息分解成目标、方案和准则的方法,并以此为基础进行分析,得到决策方法的一种有效方法。本系统在设计时借助于AHP的思想,把每一时刻的系统负荷属性值分解成单一的属性值,并以单一的属性值建立对应的矩阵,通过矩阵的相关变换,推导出用于计算的比较矩阵,通过原矩阵和变换矩阵的比较操作,计算出相对的最优矩阵,进而计算出决策属性值,通过决策属性值预测出下一时刻可能的系统负荷,其具体过程如下所示:
1)创建矩阵X,X中有元素bi(i=1,2,3…,n),是由从系统中提取的系统属性的值构成,则矩阵 X中的元素定义如公式(1):
2)设X矩阵中每行的和为sj,那么sj的值如公式(2):
设和的最大值为smax,最小值为smin, 则smax=max(sj),smin=min(sj)。设最大值和最小值相比较的结果为rb=smax/smin,把矩阵X进行变换,得到对应的矩阵X*,此时把X* 称为判断矩阵,当xi>=sj时,判断矩阵的值如公式(3):
其中m,n是常量,在计算时为了计算的方便可以设定m=1,n=1。m表示一个小于rb的常量,而n则表示偏移量。偏移量是上两次系统负荷预测值的比值。
当xi 特殊情况下,当smax=smin时,xij*=1。 3)由X矩阵和X*进行比较得到最优矩阵Y,矩阵Y中的值如公式(5): 其中i,j,k∈(1,2,3……k)。从而得到系统负荷的权值tj,如公式(6): 4)通过矩阵X和系统负荷权值得到系统决策属性值pi,如公式(7): 5)要得到系统在下一刻的负荷值,只需要根据时间顺序来构建矩阵 X,并分别根据公式(1)到公式(7),设在不同的时刻 time1,time2,time3…timem 所对应的决策属性值p1,p2,p3…pm所对应的权重值分别为t1,t2,t3…tm,则可以推导出在timem+1时刻的系统负荷为pm+1,如公式(8): 通过算法可以顺利的预测到系统下一时刻的负荷情况,方便地使小文件的合并组合在系统均衡的时刻进行操作,从而避免了在系统负荷过大时等待文件的合并造成时间上的浪费,使得操作的效率低下。 为提高电子政务平台中对用户上传的小文件的存储效率,依据本文设计的系统架构,为每一上传文件的用户建立对应的操作小文件的临时容器。通过对用户上传文件的时间的测试(与网络性能有关)、合并组合文件的时间和上传文件到 NFS服务器的时间等进行分析。因读取文件、合并文件及上传文件都和存储的NFS服务器有关,只要提高了文件合并组合和存储的效率,那么整个系统的效率也随之提高。故在实验中分别测试为:(1)各个小文件读取存放在容器中的时间。(2)小文件合并组合的时间;(3)合并组合后的文件上传到云服务器的时间。 本文通过在IBM的服务器(Intel Xeon Processor E5405 2.0GHZ 12MB L2 1333MHZ 80W),操作系统为Ubuntu14.04,Hadoop版本为0.23.1。在服务器上使用Vmrare安装好一台虚拟机后再克隆出其余的4台虚拟机建立一个集群,在每个虚拟机上分别安装JDK1.8,Hadoop和ssh到集群中的主从节点,设置一个主节点,其余的为从节点,设置对应的网络配置,保证各虚拟机之间能正常通信。 实验1中分别设置不同的容器大小,分别能存储100,300,500,700,900,1100,1300,1500各文件,并测试在不同的容器中采用先进先入得方式进行操作,并按文件的大小升序排列。实验中文件的上传跟网络的性能有很大的关系,这里将忽略掉网络对系统的影响,测试得到的平均时间如图3所示: 图3 平均耗时图 从图3可知,容器长度越长,其相对耗时反而减少 ,故临时存储文件可以减少每次上传的耗时。 实验2主要是针不同容器长度,分别对里面存放的文件进行20次合并组合,在4台虚拟机器上得到平均耗时的实验数据如图4所示: 图4 组合平均耗时图 在20次的组合中,容器的大小并没有让合并组合的耗时成比例的增加,从结果来看,容器的大小越大,其相对耗时反而减少。实验3中,当文件被合并组合,将上传到服务器中,根据系统架构,将先启动Master NameNode节点,创建对应的Access NameNode节点,启动网络服务器,同时启动创建的Access NameNode节点。再使Master NameNode和Access NameNode节点接收来自Client的上传请求。根据容器的大小,设置合并组合后的文件大小分别为 40MB,130MB,200MB,280MB,360MB,440MB,520MB,600MB。不同合并组合的文件上传操作耗时与最原始的 HDFS比较的结果如图5所示: 通过实验可见,在合并文件时,容器的长度在有效范围内,如果容器长度越长,上传文件所需的时间相对越短,并且合并文件耗时相对也越少。借助于 NFS服务器,增加Master NameNode和Access NameNode节点,把合并组合后的文件上传到云服务器的耗时比传统的 HDFS方式耗时更少。实验证明,根据电子政务平台设计的解决云存储用户上传的小文件的存储效率的系统架构的设计有一定的合理性。 本文根据电子政务平台中需要接收成千上万用户上传的小文件的实际情况出发,设计了一套解决小文件在云存储中提高效率的解决方案。该方案在HDFS合并文件的基础上进一步改进,一方面利用容器存储足够的文件进行合并;另一方面在云存储中新增加 NFS服务器,并把请求从NameNode中分离出来,利用Master NameNode和Access NameNode节点与NFS服务器同步存储合并组合的文件。通过实验表明,该方法有一定的实用性。但本系统架构也有需要改进的地方。如存储的临时容器的最优大小是多少?文件合并成大文件时的最优值是多少?在容器内部采用什么样的算法才能最优的为文件的合并服务?这些问题还需进一步研究。 [1] 李三淼, 李龙澍.Hadoop 中处理小文件的四种方法的性能分析[J].计算机工程与应用.2014.12.30http://www. cnki.net/kcms/detail/11.2127.TP.20141230.1656.014.html [2] Rajeev Gupta, Himanshu Gupta, Ullas Nambiar, etal. Efficiently querying archived data using Hadoop[C].// 19th ACM conference on Information and Knowledge Management.2010:1301-1304. [3] Zhao Xiaoyong.Yang Yang,Sun Lili.et al.Metadata-aware small files storage architecture on Hadoop[C] .//Web Information Systems and Mining.2012:136-143. [4] Liu Xuhui.Han Jizhong.Zhong Yunqin.et al.Implementing WebGIS on Hadoop:A case study of imporving small file I/O performance on HDFS[C].//IEEE International Conference on Cluster Computing and Wordshops .2009:429-436. [5] Bluesky’s integraed LiDAR imaging system[J].Highwags. 2012.81(7):76. [6] 尹颖.林庆.林涵阳.HDFS中高效存储小文件的方法[J].计算机工程与设计.2015(2):406-409. [7] 余思.桂小林.黄汝维.庄威.一种提高云存储中小文件存储效率的方案[J].西安交通大学学报.2011(6):59-63. [8] SATTY T L.Axiomatic foundation o f the analytic hierarchy process [J] .Management Scie nce, 1986 , 32(7):841-855. TP311 文献标志码:A 2015.04.16) 1007-757X(2015)08-0076-04 四川省教育厅项目(15ZB0324) 贺建英(1979-),女,四川简阳人,四川文理学院,计算机学院,硕士,讲师,研究方向:软件技术,数据挖掘,物联网,成都,6350004 实验
5 总结