一种基于HDFS小文件写入和读取的方法技术

技术编号:15746826 阅读:59 留言:0更新日期:2017-07-03 02:59
本发明专利技术涉及一种基于HDFS小文件写入和读取的方法,其特征在于,为每个用户都建立一个用户文件,每个用户文件都不同,用文件追加操作以流式的形式将小文件合并到这个用户文件中,并且还利用关系数据库为小文件建立索引记录小文件的偏移信息,小文件合并有效的解决文件格式的限制,还能将用户小文件随时追加到用户文件中避免先将文件缓存到服务器达到一定大小后再上传,产生的文件安全性问题,最后通过为小文件建立索引信息能够有效的提高文件的检索效率,同时当访问小于一个块的文件时将其请求转发到数据节点上处理减轻主服务器的压力提高文件传送效率。

A method of writing and reading small files based on HDFS

The invention relates to a method for small HDFS file write and read on, which is characterized in that the users to establish a file for each user, each user file is different with the file append operation by flow cytometry in the form of small files into the user file, and offset information using a relational database for small files the establishment of index records of small files, small files effectively solve the file format restrictions, users can also be appended to the small files at any time in the user's file to avoid caching of files to the server reaches a certain size after the upload, file security problems, finally through the establishment of index can effectively improve the efficiency of information retrieval for documents at the same time when accessing small files, less than a block file when the request is forwarded to the data processing server nodes reduce pressure and improve the Piece transfer efficiency.

【技术实现步骤摘要】
一种基于HDFS小文件写入和读取的方法
本专利技术属于文件存储
,具体涉及一种基于HDFS小文件写入和读取的方法。
技术介绍
随着互联网的高速发展,互联网中的数据也急剧的膨胀,为了给用户提供更好的服务,互联网企业就要保存和挖掘这些数据。由此产生了云计算的概念,云计算是当今研究的热门课题,它很好的解决了大数据的运算与存储的难题,其中云存储作为云计算的衍生也成为了国内外研究的热点,在众多云存储的研究中,Hadoop的分布式文件系统HDFS作为GoogleFileSystem的开源实现已成为业界研究云计算与云存储,实现云应用提供云服务参考的标准模型。HDFS可以用于大规模的分布式存储,能够构建一个易扩展、容错性高、高性能的云存储平台,并且它还为用户提供了一组可靠的稳定的接口可以使开发人员根据自己实际的需求进行开发和扩展,Hadoop目前已得到许多大公司的青睐,它在海量数据的存储与处理上表现优异得到了广泛的应用。采用HDFS文件系统能够有效地保持数据的一致性,适合一次写入多次读的场合,该架构可以搭建在任意的计算机上来运行,保障了可扩展性,HDFS的备份恢复机制与对分配任务的监控机制都保障了分布式存储的可靠性,HDFS采用的是流式文件读取非常适用于读取海量级数据。然而HDFS文件系统并非是完美的,它在海量小文件存取上有着一些限制。所以针对HDFS小文件存储问题现在已经有了一些解决方案:(1)将小文件存储到Hbase中通过文件合并与分解提高文件的存储效率,这种方案的缺点就是随着文件的增多会造成Hbase大量的合并与分解操作占用大量系统资源严重影响系统的性能,并且Hbase只支持简单的字符类型,对其它的图片等类型支持不好还需用户单独的处理。(2)还有就是利用Hadoop提供的归档工具HadoopArchives(简称HARFiles)对小文件进行归档打包,这种方式虽然能够有效的降低大量小文件对NameNode的内存消耗但是当用户需要访问时需要超找两次索引才能找到文件效率不高,同时还需要管理员维护运行命令进行归档操作不适合构建基于互联网的云存储平台。(3)还有一种文件合并的方案是利用SequenceFile来进行文件的合并,SequenceFile是用来存储二进制key-value形式的文件,通常利用SequenceFile来存储小文件时将文件名存入到key中文件内容存储到value中,这种方式最大的缺点就是由于其中的键值是未排序的文件随机读取效率较低,需要遍历整个文件才能进行读取,并且这种方式不支持文件追加操作,因此合并之前的小文件要在服务器进行缓存,这样文件的安全性就不能得到保障。
技术实现思路
本专利技术的目的在于,针对上述现有技术存在的缺陷,提供设计一种基于HDFS小文件写入和读取的方法,以解决上述技术问题。为了实现上述目的,本专利技术的技术方案为:一种基于HDFS小文件写入和读取的方法,其特征在于,包括以下两部分:(1)文件的写入Sw1:发送上传文件请求;Sw2:获取待上传文件的大小,并将待上传文件的大小与设置的阈值进行比较,若待上传文件的大小小于设置的阈值,则认为是小文件,判断用户文件是否存在,若不存在,执行步骤Sw3;若存在,跳转至步骤Sw4,Sw3:在HDFS集群中建立新的用户文件并且用户文件的名称与用户ID一一对应,则以追加写的方式将小文件合并到用户文件中,执行步骤Sw5;Sw4:判断小文件大小是否大于用户文件剩余空间的大小,若是,跳转步骤Sw3,若否,则将文件以追加写的方式追加到用户文件中;Sw5:将小文件的元数据信息存入到关系型数据库中,并建立查询索引。(2)文件的读取Sr1:发送读取文件请求;Sr2:获取文件的大小,并将文件的大小与设置的阈值进行比较,若文件的大小小于设置的阈值时,跳转至Sr4,当文件大于设定的阈值时执行步骤Sr3;Sr3:如果文件大于设定的阈值并且小于一个文件块的大小,将其请求转发到数据节点上,通过函数得到文件块的相关信息,直接由数据节点来向客户端传送数据;Sr4:读取文件的偏移值与大小,通过函数定位到小文件所在用户文件中的位置,根据元数据信息以流式的方式读取小文件;进一步的,步骤Sw2中,待上传文件的大小大于设置的阈值,则认为是大文件,直接由通用文件模块上传。步骤Sw5中,存在关联性的小文件的元数据信息存放于同一目录下。步骤Sr3:文件大于一个文件块的大小时,直接读取文件。所述元数据信息包括文件名称、大小、位置、属性、创建时间、修改时间、偏移值、长度length。所述文件块的相关信息包括,数据节点的名称、端口号、该文件在块中的偏移量。用户文件为一个文件块大小的文件。所述文件块大小默认为64M。所述阈值默认为1M。本专利技术的有益效果在于:本文专利技术提出了关系数据库的小文件合并算法,为每个用户都建立一个用户文件,每个用户文件都不同,用文件追加操作以流式的形式将小文件合并到这个用户文件中,并且还利用关系数据库为小文件建立索引记录小文件的偏移信息,提高了小文件的读取效率,同时当访问小于一个块的文件时,将其请求转发到数据节点上处理减轻主服务器的压力提高文件传送效率;将小文件合并为一个文件存储NameNode内存并不会随着文件的增多而改变,从而降低了NameNode内存的消耗,提升了整个系统的性能;小文件合并有效的解决文件格式的限制,还能将用户小文件随时追加到用户文件中避免先将文件缓存到服务器达到一定大小后再上传产生的文件安全性问题,最后通过为小文件建立索引信息能够有效的提高文件的检索效率。此外,本专利技术设计原理可靠,结构简单,具有非常广泛的应用前景。由此可见,本专利技术与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。附图说明图1为一种基于HDFS小文件写入方法流程图。图2为一种基于HDFS小文件读取方法流程图。具体实施方式下面结合附图并通过具体实施例对本专利技术进行详细阐述,以下实施例是对本专利技术的解释,而本专利技术并不局限于以下实施方式。本实施例提供的一种基于HDFS小文件写入和读取的方法,如图1所示,当用户写入文件时,首先向NameNode发送上传文件请求,之后进行大小判断,如果是大文件则直接由通用文件模块上传到HDFS集群中,如果小文件,则交给小文件处理模块,如果文件大小小于设置的阈值1M,我们就将文件以追加写的方式追加到HDFS集群中该用户的用户文件中,写入完成后我们要将文件的大小与偏移值记录到关系型数据库中,并建立索引,存在关联性的小文件的元数据信息存放于同一目录下,若小文件大小大于用户文件剩余空间的大小,在HDFS集群建立新的用户文件并且用户文件的名称与用户ID一一对应,则以追加写的方式将小文件合并到新建的用户文件中。HDFS文件系统中默认是不支持追加写操作的,因此需要进行配置,修改Namenode服务器下的HDFS-site.xml文件,将dfs.support.append的值设为true。如图2所示,当用户向NameNode发起读取文件请求时,首先要对文件大小进行判断,当文件小于设置的阈值1M时,小文件处理模块就从关系型的数据库中读取文件的偏移值与大小,然后通过seek()函数定位到小文件所在用户文件中的位置,最后根据length长度以流式的方式从本文档来自技高网
...
一种基于HDFS小文件写入和读取的方法

【技术保护点】
一种基于HDFS小文件写入和读取的方法,其特征在于,包括以下两部分:(1)文件的写入Sw1:发送上传文件请求;Sw2: 获取待上传文件的大小,并将待上传文件的大小值与设置的阈值进行比较,若待上传文件的大小小于设置的阈值,则认为是小文件,判断用户文件是否存在,若不存在,执行步骤Sw3;若存在,跳转至步骤Sw4;Sw3:在HDFS集群中建立新的用户文件并且用户文件的名称与用户ID一一对应,则将小文件以追加写的方式追加到用户文件中,跳转到步骤Sw5;Sw4:判断小文件大小是否大于用户文件剩余空间的大小,若是,跳转到步骤Sw3,若否,则以追加写的方式将小文件追加到用户文件中;Sw5:将小文件的元数据信息存入到关系型数据库中,并建立查询索引;(2)文件的读取Sr1:发送读取文件请求;Sr2:获取文件的大小,并将文件的大小与设置的阈值进行比较,若文件的大小小于设置的阈值时,跳转至Sr4,当文件大于设定的阈值时执行步骤Sr3;Sr3:如果文件大于设定的阈值并且小于一个文件块的大小,将其请求转发到数据节点上,通过函数得到文件块的相关信息,直接由数据节点来向客户端传送数据;Sr4:读取文件的偏移值与大小,通过函数定位到小文件所在用户文件中的位置,根据元数据信息以流式的方式读取小文件。...

【技术特征摘要】
1.一种基于HDFS小文件写入和读取的方法,其特征在于,包括以下两部分:(1)文件的写入Sw1:发送上传文件请求;Sw2:获取待上传文件的大小,并将待上传文件的大小值与设置的阈值进行比较,若待上传文件的大小小于设置的阈值,则认为是小文件,判断用户文件是否存在,若不存在,执行步骤Sw3;若存在,跳转至步骤Sw4;Sw3:在HDFS集群中建立新的用户文件并且用户文件的名称与用户ID一一对应,则将小文件以追加写的方式追加到用户文件中,跳转到步骤Sw5;Sw4:判断小文件大小是否大于用户文件剩余空间的大小,若是,跳转到步骤Sw3,若否,则以追加写的方式将小文件追加到用户文件中;Sw5:将小文件的元数据信息存入到关系型数据库中,并建立查询索引;(2)文件的读取Sr1:发送读取文件请求;Sr2:获取文件的大小,并将文件的大小与设置的阈值进行比较,若文件的大小小于设置的阈值时,跳转至Sr4,当文件大于设定的阈值时执行步骤Sr3;Sr3:如果文件大于设定的阈值并且小于一个文件块的大小,将其请求转发到数据节点上,通过函数得到文件块的相关信息,直接由数据节点来向客户端传送数据;Sr4:读取文件的偏移值与大小,通过函数定位到小文件所在用户文件中的位置,根据元数据信息以流式的...

【专利技术属性】
技术研发人员:辛永欣
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1