本发明专利技术公开了一种基于Hadoop分布式计算平台的存储系统,包括HDFS通用文件处理模块、文件类型判断模块、小文件处理模块和定时模块;所述文件类型判断模块用于判断用户上传的文件是否属于小文件;定时模块,通过设置定时器计时,到达预定周期时进行统计小文件处理模块中小文件序列的大小,判断小文件序列的大小是否大于HDFS文件系统的块;小文件处理模块,用于将每个小文件作为一个Record存入SequenceFile类中形成小文件队列。该系统减少了HDFS中小文件的数量,有效地提高了HDFS中文件读取的性能。
【技术实现步骤摘要】
本专利技术属于Hadoop分布式计算平台文件系统
,具体涉及一种基于Hadoop分布式计算平台的存储系统。
技术介绍
Hadoop Distributed File System,简称 HDFS,是一个分布式文件系统。HDFS 有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS放宽了 POSIX的要求这样可以实现流的形式访问(streaming access)文件系统中的数据。HDFS开始是为开源的apache项目nutch的基础结构而创建,HDFS是hadoop项目的一部分,而hadoop又是Iucene的一部分。·随着企业要处理的数据量越来越大,MapReduce思想越来越受到重视。Hadoop是MapReduce的一个开源实现,由于其良好的扩展性和容错性,已得到越来越广泛的应用。Hadoop作为一个基础数据处理平台,虽然其应用价值已得到大家认可,但仍存在很多问题,HDFS的小文件问题便是其中之一。小文件是指文件size小于HDFS上block大小的文件。这样的文件会给hadoop的扩展性和性能带来严重问题。首先,在HDFS中,任何block,文件或者目录在内存中均以对象的形式存储,每个对象约占150byte,如果有10000000个小文件,每个文件占用一个block,则namenode需要2G空间(存两份)。如果存储I亿个文件,则namenode需要20G空间。这样namenode内存容量严重制约了集群的扩展。其次,访问大量小文件速度远远小于访问几个大文件。HDFS最初是为流式访问大文件开发的,如果访问大量小文件,需要不断的从一个datanode跳到另一个datanode,严重影响性能。最后,处理大量小文件速度远远小于处理同等大小的大文件的速度。每一个小文件要占用一个slot,而task启动将耗费大量时间甚至大部分时间都耗费在启动task和释放task上。解决HDFS小文件问题,有助于扩大HDFS的应用范围及增强其扩展性和性能。本专利技术因此而来。
技术实现思路
本专利技术目的在于提供一种基于Hadoop分布式计算平台的存储系统,解决了现有技术中Hadoop分布式计算平台小文件数量太大导致性能下降明显等问题。为了解决现有技术中的这些问题,本专利技术提供的技术方案是一种基于Hadoop分布式计算平台的存储系统,包括HDFS通用文件处理模块,其特征在于所述系统还包括文件类型判断模块、小文件处理模块和定时模块;所述文件类型判断模块用于判断用户上传的文件是否属于小文件;当用户上传的文件大小小于HDFS文件系统的块时,文件类型判断模块判断文件为小文件,否则文件类型判断模块判断文件为大文件;定时模块,通过设置定时器计时,到达预定周期时进行统计小文件处理模块中小文件序列的大小,判断小文件序列的大小是否大于HDFS文件系统的块;小文件处理模块,用于将每个小文件作为一个Record存入SequenceFile类中形成小文件队列;当定时模块判断小文件序列的大小大于HDFS文件系统的块时,以小文件的文件名作为Key值,而文件内容作为Value值,一次性将小文件队列写入MapFile中,并同时删除已处理的小文件。优选的,所述系统还包括小文件状态数据库,采用MySQL数据库存储小文件的文件名、文件大小、上传日期、存储路径,并使用FileList对象维护该小文件队列;当小文件队列写入MapFile后,更新FileList对象和MySQL数据库后,再删除已处理的小文件。优选的,所述系统还设置有文件信息表,所述文件信息表设置小文件状态字段flag, fIag=O表示小文件处于待处理状态,fIag=I表示小文件已处理,并存在于HDFS的MapFile中,flag=2表示小文件重生成写入到本地磁盘中。优选的,所述系统构建MySQL索引和MapFile索引,MapFiIe索引通过文件信息表的文件名字段构建索引。 本专利技术的另一目的在于提供一种基于Hadoop分布式计算平台的存储系统的文件上传存储方法,其特征在于所述方法包括以下步骤(I)用户向具有基于Hadoop分布式计算平台的存储系统的服务器上传文件;(2)文件文件类型判断模块判断用户上传的文件是否属于小文件;当上传的文件为大文件时,直接上传存储到HDFS中;当上传的文件为小文件时,将每个小文件作为一个Record存入SequenceFile类中形成小文件队列,并启动定时模块;(3)当到达预定周期时进行统计小文件处理模块中小文件序列的大小,判断小文件序列的大小是否大于HDFS文件系统的块;当定时模块判断小文件序列的大小大于HDFS文件系统的块时,以小文件的文件名作为Key值,而文件内容作为Value值,一次性将小文件队列写入MapFile中,并同时删除已处理的小文件。本专利技术的又一目的在于提供一种基于Hadoop分布式计算平台的存储系统的文件下载读取方法,其特征在于所述方法包括以下步骤(I)用户向具有基于Hadoop分布式计算平台的存储系统的服务器发送下载文件;(2)具有基于Hadoop分布式计算平台的存储系统判断文件是否存储在本地磁盘;(3)当文件存在于本地磁盘,直接通过下载组件访问下载;(4)当文件不存在于本地磁盘,具有基于Hadoop分布式计算平台的存储系统启动MYSQL索引和MapFile索引,先将小文件从MapFile中读取到本地磁盘,然后通过下载组件访问下载。相对于现有技术中的方案,本专利技术的优点是本专利技术技术方案基于Hadoop的小文件存储方法,解决了 HDFS的小文件存储问题。本专利技术技术方案使用SequenceFile作为解决小文件读写的方案就是说,将每个小文件作为一个Record存入SequenceFile中,其中,文件名作为Key值,而文件内容作为Value值,这种方法不论是从理论还是在众多实践中,是目前在HDFS中处理小文件最佳的解决途径。附图说明下面结合附图及实施例对本专利技术作进一步描述图I为基于Hadoop分布式计算平台的存储系统的文件上传的流程示意图。图2为基于Hadoop分布式计算平台的存储系统的文件下载的流程示意图。具体实施例方式以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本专利技术而不限于限制本专利技术的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的条件。实施例如图I所示,本实施例在原有HDFS基础上添加一个小文件处理模块、文件类型判断模块和定时模块。其中所述文件类型判断模块用于判断用户上传的文件是否属于小文件;当用户上传的文件大小小于HDFS文件系统的块时,文件类型判断模块判断文件为小文件,否则文件类型判断模块判断文件为大文件;定时模块,通过设置定时器计时,到达预定周期时进行统计小文件处理模块中小文件序列的大小,判断小文件序列的大小是否大于HDFS文件系统的块;小文件处理模块,用于将每个小文件作为一个Record存入SequenceFile类中形成小文件队列;当定时模块判断小文件序列的大小大于HDFS文件系 统的块时,以小文件的文件名作为Key值,而文件内容作为Value值,一次性将小文件队本文档来自技高网...
【技术保护点】
一种基于Hadoop分布式计算平台的存储系统,包括HDFS通用文件处理模块,其特征在于所述系统还包括文件类型判断模块、小文件处理模块和定时模块;所述文件类型判断模块用于判断用户上传的文件是否属于小文件;当用户上传的文件大小小于HDFS文件系统的块时,文件类型判断模块判断文件为小文件,否则文件类型判断模块判断文件为大文件;定时模块,通过设置定时器计时,到达预定周期时进行统计小文件处理模块中小文件序列的大小,判断小文件序列的大小是否大于HDFS文件系统的块;小文件处理模块,用于将每个小文件作为一个Record存入SequenceFile类中形成小文件队列;当定时模块判断小文件序列的大小大于HDFS文件系统的块时,以小文件的文件名作为Key值,而文件内容作为Value值,一次性将小文件队列写入MapFile中,并同时删除已处理的小文件。
【技术特征摘要】
1.一种基于Hadoop分布式计算平台的存储系统,包括HDFS通用文件处理模块,其特征在于所述系统还包括文件类型判断模块、小文件处理模块和定时模块;所述文件类型判断模块用于判断用户上传的文件是否属于小文件;当用户上传的文件大小小于HDFS文件系统的块时,文件类型判断模块判断文件为小文件,否则文件类型判断模块判断文件为大文件; 定时模块,通过设置定时器计时,到达预定周期时进行统计小文件处理模块中小文件序列的大小,判断小文件序列的大小是否大于HDFS文件系统的块; 小文件处理模块,用于将每个小文件作为一个Record存入SequenceFile类中形成小文件队列;当定时模块判断小文件序列的大小大于HDFS文件系统的块时,以小文件的文件名作为Key值,而文件内容作为Value值,一次性将小文件队列写入MapFile中,并同时删除已处理的小文件。2.根据权利要求I所述的基于Hadoop分布式计算平台的存储系统,其特征在于所述系统还包括小文件状态数据库,采用MySQL数据库存储小文件的文件名、文件大小、上传日期、存储路径,并使用FileList对象维护该小文件队列;当小文件队列写入MapFile后,更新FileList对象和MySQL数据库后,再删除已处理的小文件。3.根据权利要求I所述的基于Hadoop分布式计算平台的存储系统,其特征在于所述系统还设置有文件信息表,所述文件信息表设置小文件状态字段flag,fIag=O表示小文件处于待处理状态,flag= I表示小文件已处理,并存在于HDFS的MapFile中,flag=2表示小文件重生成写入到本地磁盘中。4.根据权...
【专利技术属性】
技术研发人员:陈国庆,钱扬帆,
申请(专利权)人:苏州两江科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。