The invention discloses a method for writing large and small files based on Hadoop, which is suitable for HDFS system with data merging module and HBase cache module. The method includes: receiving small file writing commands input by users; querying HBase cache module first according to user ID and small file name query; if querying the first file content, uploading and updating the first file content written to small file into HBase cache module; if not querying, then querying HDFS system. If the content of the second file is queried, the content of the second file written to the small file is uploaded and updated to the database; otherwise, the corresponding HAR file is accessed by calling the API of the Hadoop archive tool, and the HAR file written to the small file is uploaded and updated to the database. The writing method of the invention can improve the reading efficiency of small files.
【技术实现步骤摘要】
一种基于Hadoop的海量小文件写入方法
本专利技术涉及计算机
,尤其涉及一种基于Hadoop的海量小文件写入方法。
技术介绍
Hadoop是Apache基金会在2005年作为Lucene的子项目Nutch中的一部分正式引入。Hadoop最关键的两大设计HDFS和MapReduce。而HDFS负责存储海量的数据,文件以数据块的形式存储在系统上。而HDFS的数据块比普通磁盘定义的数据块(一般是512B)大得多,HDFS目前默认的数据块大小是128MB。如果HDFS存储的文件大小大于128MB,它会将该文件切分成块大小的若干个分块,分开单独存储。而当HDFS不断的存储小文件量达到TB甚至PB级别时,小文件的问题就会产生,这是因为会有大量的元数据存储在HDFS的主节点namenode中,大大增加namenode的负载,从而会影响到系统的读取性能。其中,小文件的大小定义为2MB,即在HDFS存储文件中,当文件大小小于或等于2M,即被定义为小文件。现有技术对于海量小文件的处理都是将若干个小文件合并成一个block块大小的大文件,并没有考虑到文件之间的关联性,使得小文件的读取效率不太理想。
技术实现思路
本专利技术实施例提出一种基于Hadoop的海量小文件写入方法,在结合小文件合并和HBase缓存机制后,写入后的小文件更容易被读取,能提高小文件的读取效率。本专利技术实施例提供一种基于Hadoop的海量小文件写入方法,包括:所述写入方法适用于具有数据合并模块和HBase缓存模块的HDFS系统;所述写入方法包括:接收用户输入的小文件写入命令;其中,所述小文件写入命令包括 ...
【技术保护点】
1.一种基于Hadoop的海量小文件写入方法,其特征在于,包括:所述写入方法适用于具有数据合并模块和HBase缓存模块的HDFS系统;所述写入方法包括:接收用户输入的小文件写入命令;其中,所述小文件写入命令包括用户ID和小文件文件名;根据所述用户ID和所述小文件文件名查询所述HBase缓存模块;如果查询到相应的文件内容,则返回所述HBase缓存模块查询到的第一文件内容,写入所述小文件,并将写入所述小文件的第一文件内容上传并更新到所述HBase缓存模块中;如果查询不到相应的文件内容,则根据所述小文件文件名查询所述HDFS系统的数据库,并判断是否查询到相应的文件内容;如果是,则返回所述数据库查询到的第二文件内容,写入所述小文件,并将写入所述小文件的第二文件内容上传并更新到所述数据库中;否则,调用Hadoop archive工具的API访问所述小文件文件名对应的HAR文件,写入所述小文件,并将写入所述小文件的HAR文件上传更新到所述数据库中。
【技术特征摘要】
1.一种基于Hadoop的海量小文件写入方法,其特征在于,包括:所述写入方法适用于具有数据合并模块和HBase缓存模块的HDFS系统;所述写入方法包括:接收用户输入的小文件写入命令;其中,所述小文件写入命令包括用户ID和小文件文件名;根据所述用户ID和所述小文件文件名查询所述HBase缓存模块;如果查询到相应的文件内容,则返回所述HBase缓存模块查询到的第一文件内容,写入所述小文件,并将写入所述小文件的第一文件内容上传并更新到所述HBase缓存模块中;如果查询不到相应的文件内容,则根据所述小文件文件名查询所述HDFS系统的数据库,并判断是否查询到相应的文件内容;如果是,则返回所述数据库查询到的第二文件内容,写入所述小文件,并将写入所述小文件的第二文件内容上传并更新到所述数据库中;否则,调用Hadooparchive工具的API访问所述小文件文件名对应的HAR文件,写入所述小文件,并将写入所述小文件的HAR文件上传更新到所述数据库中。2.根据权利要求1所述的基于Hadoop的海量小文件写入方法,其特征在于,所述数据合并模块采用的数据合并方法为:步骤A:当客户端上传待存储文件后,遍历HDFS上所有的文件,结合用户访问偏好模型找出所述待存储文件的关联性文件集合;其中,所述用户访问偏好模型是根据用户访问日志记录而统计得出;步骤B:依次将所述关联性文件集合的中文件和所述待存储文件添加到待合并队列中;步骤C:判断所述待合并队列中的所有文件总大小是否超过128MB,如果是,则执行步骤D;否则,执行步骤E;步骤D:将所述待合并队列中的所有文件合并成一个数据块,并清空所述待合并队列中的文件信息和删除已合并文件的源文件,返回步骤B;步骤E:判断所述关联性文件集合的中文件和所述待存储文件是否均添加到所述待合并队列中;如果是,则将所述待合并队列中的所有文件合并成一个数据块,并清空所述待合并队列中的文件信息和删除已合并文件的源文件,再执行步骤F;否则,返回步骤B;步骤F:将已合并的所有数据块存储到HDFS系统中。3.根据权利要求2所述的基于Hadoop的海量小文件写入方法,其特征在于,其特征在于,所述用户访问偏好模型是根据用户访问日志记录而统计得出,具体为:从所述用户访问日志记录中统计得出活跃用户集;采用bean对象表示所述活跃用户集访问过的小文件;所述小文件为大小小于或等于2MB的文件;其中,所述bean对象的属性包括访问该小文件的用户ID、用户访问过的小文件名、以及该小文件被其访问过的次数;结合JDBC技术...
【专利技术属性】
技术研发人员:谢桂园,彭建烽,魏文国,戴青云,蔡君,赵慧民,
申请(专利权)人:广东技术师范学院,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。