一种基于用户访问偏好模型的海量小文件存储方法技术

技术编号:19511394 阅读:21 留言:0更新日期:2018-11-21 07:50
本发明专利技术公开了一种基于用户访问偏好模型的海量小文件存储方法,先结合用户访问偏好模型找出关联性文件集合,再依次将其添加到待合并队列中,如果待合并队列中的文件大小超过128MB,则先将队列中的所有文件合并成一个数据块,并清空待合并队列中的文件信息和删除已合并文件的源文件,直到所有文件都添加到待合并队列中。如果文件添加完,待合并队列中的文件大小不够128MB,则将该队列中所有文件合并成一个数据块,并清空待合并队列中的文件信息和删除已合并文件的源文件;最后将已合并的所有数据块存储到HDFS系统中。采用本发明专利技术技术方案能提高小文件的读取效率,减少HDFS系统中namenode内存的消耗。

【技术实现步骤摘要】
一种基于用户访问偏好模型的海量小文件存储方法
本专利技术涉及计算机
,尤其涉及一种基于用户访问偏好模型的海量小文件存储方法。
技术介绍
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块大小的大文件,并没有考虑到文件之间的关联性,使得小文件的读取效率不太理想。
技术实现思路
本专利技术实施例提出一种基于用户访问偏好模型的海量小文件存储方法,能提高小文件的读取效率,减少HDFS系统中namenode内存的消耗。本专利技术实施例提供一种基于用户访问偏好模型的海量小文件存储方法,包括:步骤A:当客户端上传待存储文件后,遍历HDFS上所有的文件,结合用户访问偏好模型找出所述待存储文件的关联性文件集合;其中,所述用户访问偏好模型是根据用户访问日志记录而统计得出;步骤B:依次将所述关联性文件集合的中文件和所述待存储文件添加到待合并队列中;步骤C:判断所述待合并队列中的所有文件总大小是否超过128MB,如果是,则执行步骤D;否则,执行步骤E;步骤D:将所述待合并队列中的所有文件合并成一个数据块,并清空所述待合并队列中的文件信息和删除已合并文件的源文件,返回步骤B;步骤E:判断所述关联性文件集合的中文件和所述待存储文件是否均添加到所述待合并队列中;如果是,则将所述待合并队列中的所有文件合并成一个数据块,并清空所述待合并队列中的文件信息和删除已合并文件的源文件,再执行步骤F;否则,返回步骤B;步骤F:将已合并的所有数据块存储到HDFS系统中。进一步的,所述用户访问偏好模型是根据用户访问日志记录而统计得出,具体为:从所述用户访问日志记录中统计得出活跃用户集;采用bean对象表示所述活跃用户集访问过的小文件;所述小文件为大小小于或等于2MB的文件;其中,所述bean对象的属性包括访问该小文件的用户ID、用户访问过的小文件名、以及该小文件被其访问过的次数;结合JDBC技术,将所述bean对象持久化到Mysql数据库存储,并根据存储的数据,计算任意两个不同访问行为的相似度;当所述任意两个不同访问行为的相似度为正时,确定所述任意两个访问行为的用户为相似用户,将相似用户的id记录并采用关联性文件集合存储所有相似用户访问过且具有关联的文件信息;根据所述关联性文件集合,构建所述用户访问偏好模型。进一步的,所述从所述用户访问日志记录中统计得出活跃用户集,具体为:筛选出所述用户访问日志记录中访问资源后缀名以jpg结尾的记录行;其中,所述记录行包括:用户IP、访问页面URL、访问起始时间、访问状态、访问流量;编写日志解析类对所述记录行进行解析,并使用一个二维数组来存储访问者IP和小文件名;遍历所述二维数组中的访问者IP,并使用HashMap集合统计每一个访问者IP访问量;所述HashMap集合的Key值为访问者IP,Value值是访问量;对所述HashMap集合按照Value值来进行降序排序,筛选出排名靠前20%的访问者IP,使用ArrayList集合存储该IP子集,并标记为活跃用户集。实施本专利技术实施例,具有如下有益效果:本专利技术实施例提供的基于用户访问偏好模型的海量小文件存储方法,先结合用户访问偏好模型找出关联性文件集合,再依次将其添加到待合并队列中,如果待合并队列中的文件大小超过128MB,则先将队列中的所有文件合并成一个数据块,并清空待合并队列中的文件信息和删除已合并文件的源文件,直到所有文件都添加到待合并队列中。如果文件添加完,待合并队列中的文件大小不够128MB,则将该队列中所有文件合并成一个数据块,并清空待合并队列中的文件信息和删除已合并文件的源文件;最后将已合并的所有数据块存储到HDFS系统中。相比于现有技术不考虑小文件之间的关联性,本专利技术技术方案能提高小文件的读取效率,减少HDFS系统中namenode内存的消耗。附图说明图1是本专利技术提供的基于用户访问偏好模型的海量小文件存储方法的一种实施例的流程示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。参见图1,是本专利技术提供的基于用户访问偏好模型的海量小文件存储方法的一种实施例的流程示意图,该方法包括步骤A至步骤F。各步骤具体如下:步骤A:当客户端上传待存储文件后,遍历HDFS上所有的文件,结合用户访问偏好模型找出待存储文件的关联性文件集合;其中,用户访问偏好模型是根据用户访问日志记录而统计得出。在本实施例中,用户访问偏好模型是根据用户访问日志记录而统计得出,具体为:从用户访问日志记录中统计得出活跃用户集;采用bean对象表示活跃用户集访问过的小文件;小文件为大小小于或等于2MB的文件;其中,bean对象的属性包括访问该小文件的用户ID、用户访问过的小文件名、以及该小文件被其访问过的次数;结合JDBC技术,将bean对象持久化到Mysql数据库存储,并根据存储的数据,计算任意两个不同访问行为的相似度;当任意两个不同访问行为的相似度为正时,确定任意两个访问行为的用户为相似用户,将相似用户的id记录并采用关联性文件集合存储所有相似用户访问过且具有关联的文件信息;根据关联性文件集合,构建用户访问偏好模型。在本实施例中,从用户访问日志记录中统计得出活跃用户集,具体为:筛选出用户访问日志记录中访问资源后缀名以jpg结尾的记录行;其中,记录行包括:用户IP、访问页面URL、访问起始时间、访问状态、访问流量;编写日志解析类对记录行进行解析,并使用一个二维数组来存储访问者IP和小文件名;遍历二维数组中的访问者IP,并使用HashMap集合统计每一个访问者IP访问量;HashMap集合的Key值为访问者IP,Value值是访问量;对HashMap集合按照Value值来进行降序排序,筛选出排名靠前20%的访问者IP,使用ArrayList集合存储该IP子集,并标记为活跃用户集。为了更好的说明本专利技术的模型构建过程,以下面的例子说明,具体实现过程如下:(1)利用正则表达式筛选出访问资源后缀名以jpg结尾的记录行。(2)编写日志解析类对记录行的五个组成部分进行单独的解析,使用一个二维数组来存储访问者IP、小文件名。(3)遍历二维数组中的访问者IP元素,设本文档来自技高网...

【技术保护点】
1.一种基于用户访问偏好模型的海量小文件存储方法,其特征在于,包括:步骤A:当客户端上传待存储文件后,遍历HDFS上所有的文件,结合用户访问偏好模型找出所述待存储文件的关联性文件集合;其中,所述用户访问偏好模型是根据用户访问日志记录而统计得出;步骤B:依次将所述关联性文件集合的中文件和所述待存储文件添加到待合并队列中;步骤C:判断所述待合并队列中的所有文件总大小是否超过128MB,如果是,则执行步骤D;否则,执行步骤E;步骤D:将所述待合并队列中的所有文件合并成一个数据块,并清空所述待合并队列中的文件信息和删除已合并文件的源文件,返回步骤B;步骤E:判断所述关联性文件集合的中文件和所述待存储文件是否均添加到所述待合并队列中;如果是,则将所述待合并队列中的所有文件合并成一个数据块,并清空所述待合并队列中的文件信息和删除已合并文件的源文件,再执行步骤F;否则,返回步骤B;步骤F:将已合并的所有数据块存储到HDFS系统中。

【技术特征摘要】
1.一种基于用户访问偏好模型的海量小文件存储方法,其特征在于,包括:步骤A:当客户端上传待存储文件后,遍历HDFS上所有的文件,结合用户访问偏好模型找出所述待存储文件的关联性文件集合;其中,所述用户访问偏好模型是根据用户访问日志记录而统计得出;步骤B:依次将所述关联性文件集合的中文件和所述待存储文件添加到待合并队列中;步骤C:判断所述待合并队列中的所有文件总大小是否超过128MB,如果是,则执行步骤D;否则,执行步骤E;步骤D:将所述待合并队列中的所有文件合并成一个数据块,并清空所述待合并队列中的文件信息和删除已合并文件的源文件,返回步骤B;步骤E:判断所述关联性文件集合的中文件和所述待存储文件是否均添加到所述待合并队列中;如果是,则将所述待合并队列中的所有文件合并成一个数据块,并清空所述待合并队列中的文件信息和删除已合并文件的源文件,再执行步骤F;否则,返回步骤B;步骤F:将已合并的所有数据块存储到HDFS系统中。2.根据权利要求1所述的基于用户访问偏好模型的海量小文件存储方法,其特征在于,所述用户访问偏好模型是根据用户访问日志记录而统计得出,具体为:从所述用户访问日志记录中统计得出活跃用户集;采用bean对象表示所述活跃用户集访问过的小文件;所述小文件为大小小于或等于2MB的文件;其中...

【专利技术属性】
技术研发人员:魏文国彭建烽谢桂园戴青云蔡君赵慧民
申请(专利权)人:广东技术师范学院
类型:发明
国别省市:广东,44

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

1