[发明专利]一种Hadoop存取海量小文件的优化方法有效

专利信息
申请号: 201410550760.X 申请日: 2014-10-16
公开(公告)号: CN104536959B 公开(公告)日: 2018-03-06
发明(设计)人: 胡海峰;贾玉辰 申请(专利权)人: 南京邮电大学
主分类号: G06F17/30 分类号: G06F17/30;G06F9/44
代理公司: 南京知识律师事务所32207 代理人: 胡玲
地址: 210003 江苏*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要: 一种Hadoop存取海量小文件的优化方法;本发明目的在于提供一种应用于Hadoop的小文件合并、索引及查询方法,主要解决Hadoop中小文件的存取效率问题。本发明提出一种三层Hadoop小文件存取处理架构,三个层次分别为用户界面层、业务逻辑层、数据存储层;本发明包括预处理器端小文件的合并映射技术和海量小文件的快速索引技术。
搜索关键词: 一种 hadoop 存取 海量 文件 优化 方法
【主权项】:
一种Hadoop存取海量小文件的优化方法,其特征在于:处理架构分为三层,分别为:用户界面层,业务逻辑层,数据存储层;其中用户界面层是与用户交互的界面,用户通过用户界面层向系统上传文件或者提出查询请求,系统所返回的结果页面也显示在用户界面层;业务逻辑层主要是“预处理器”所组成;预处理器是介于用户界面层与存储层的Hadoop集群之间的中间件,负责对用户的操作作一个预处理,然后将处理结果交给下一层,也就是存储层;存储层是Hadoop集群所在的层,是实际负责文件存储的地方,并提供与业务逻辑层的预处理器的交互;分层次实现Hadoop小文件存取性能的优化;处理Hadoop小文件存取的流程分为如下步骤:(1)小文件存储:文件存储模块是负责小文件的合并,即将批量小文件合并成与Hadoop块大小近似的合并文件,然后将合并后的文件以及经判断不属于小文件范畴的“大文件”上传到Hadoop集群;步骤如下:步骤一:小文件判断在用户界面层,文件经用户通过客户端浏览器上传,此次上传后的文件先被提交至业务逻辑层预处理器的Web服务器中;Web服务器中的业务处理逻辑先进行文件大小的判断,Hadoop块设定这一默认值,逻辑规定小于块长度的文件被判定为小文件,插入待合并队列中;如果文件长度大于块的长度,则被判定为大文件,直接放入待上传队列中;循环这一操作直至用户此次上传的所有文件处理完毕;步骤二:元数据提取小文件元数据提取出来分为两个部分,一是数值化的元数据,最后修改时间,文件大小;二是非数值化的元数据的;文件提取出的元数据如下:<上传者,文件名,上传时间,最后修改时间,大小>步骤三:元数据处理经过上一步处理后,需要合并的文件都被放在待合并队列中,然后依次取出待合并队列中的小文件,提取出其元数据;元数据处理分为两个部分,一是数值化元数据的处理,二是非数值化元数据的处理,二者特性不同,处理方法不同;A:数值化元数据的处理数值化的元数据有<上传时间,最后修改时间,大小>,这些数据的大小有比较意义,可放入R树中;在插入R树之前,做好此元数据到小文件名的映射,采用“键—值”对的形式存储在属性(properties)文件中;properties是这种文件的扩展名;此文件格式的优点在于:文件中的记录存放位置并不是按照插入顺序,而是按照键的Hash值存放,这大大地提高了查询速度;映射结构中,键是数值化的元数据,值为小文件名;此处的映射结构可设计为:20140712091020_20140610105316_32372=filename其中,“=”号左边的数字以“_”隔开,分别为文件的上传时间,最后修改时间和大小,“=”号右边的是对应此元数据的小文件名;B:非数值化元数据的处理非数值化的元数据有<上传者,文件名>,这些数据不可比较大小,所以不应与数值化的元数据使用相同处理策略;对这类元数据的处理方法是采用倒排索引,记录包含元数据中关键词的文件编号,在查询时可快速查到符合查询要求的文件集合;步骤四:全局映射经过上一步的处理之后,更新预处理器中的全局映射;此映射记录的是小文件名到包含它的合并文件及其在合并文件中的偏移量和长度的映射;全局映射也是采用“键—值”对的形式存储在属性(properties)文件中;具体的索引结构如下:filename=CombinedFileName_offset_length其中:filename代表小文件的文件名,CombinedFileName代表包含此小文件的合并文件名,offset代表小文件在合并文件中的偏移量,length代表小文件的长度;索引的数据结构设计思路为:因为小文件是被包含在合并文件中上传至Hadoop文件系统中,所以Hadoop文件系统并不了解此合并文件内部的细节;在查询的时候,只能根据合并文件名去查询包含此小文件的合并文件,然后根据offset和length从合并文件中切割出小文件;根据此映射,可以准确地切割出要查找的文件;步骤五:文件合并将待合并队列中的小文件依次取出;合并时,先查看是否有未写满的合并文件,如果有,则取出此文件继续将其写满;否则,新建一个空的合并文件;合并完成后,再将所有的合并文件添加到待上传队列中;步骤六:文件上传通过调用HDFS的API将待上传队列中的合并文件上传到HDFS中;(2)小文件查询:此模块的设计思想分为两步:1.用户首次提交查询请求,首先返回符合用户查询条件的文件的元数据,等待用户选择所需文件;2.确认文件:用户根据第一次返回的与其提交的查询请求匹配的结果,选择所需文件,系统处理后,返回所需的小文件;详细步骤如下:步骤一:查询请求用户通过用户界面层的客户端浏览器提出第一次查询请求;此请求是待查询的文件名或上传时间或最后修改时间或上传者或文件大小一项或几项,或是一些比较模糊的关键词;步骤二:处理请求请求处理分两部分,分别为数值化和非数值化关键词的处理;A:数值化关键词的处理请求提交到业务逻辑层预处理器的Web服务器中,服务器根据查询请求,Web将数值化的元数据构造出空间坐标后查询R树;R树可以执行范围查询或Top‑K查询,查询的的输出为符合查询条件的小文件的数值化元数据;用查询得到的元数据构造成映射中键的形式,查询元数据到小文件名的映射表,得到对应的小文件名;B:非数值化关键词的处理对于非数值化的数据,需查询倒排索引;首先将查询字符串进行分词操作,用分词的结果查询倒排索引,得到包含此关键词文件编号,根据文件编号查询映射表得到对应文件名;将A,B两步所返回的处理结果做AND操作,即“&”操作,得到首次查询的结果;步骤三:返回初步查询结果预处理器将经过首次查询得到的符合条件的小文件集合根据与查询请求的相关性排名后返回给用户;步骤四:选择小文件用户选择某一条感兴趣的小文件,选择到达Web服务器后,查询全局映射文件,得到包含此小文件的合并文件名和待查询小文件在此合并文件中的偏移量及长度;步骤五:返回最终结果根据合并文件名向Hadoop发起查询请求,Hadoop将文件返回给预处理器;然后根据前一步得到的偏移量和长度切割合并文件,将得到的小文件返回给用户;查询结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201410550760.X/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top