[发明专利]一种基于Hadoop的海量小文件读取方法有效
申请号: | 201810499647.1 | 申请日: | 2018-05-22 |
公开(公告)号: | CN108804566B | 公开(公告)日: | 2019-11-29 |
发明(设计)人: | 魏文国;彭建烽;戴青云;蔡君;赵慧民;谢桂园 | 申请(专利权)人: | 广东技术师范大学 |
主分类号: | G06F16/182 | 分类号: | G06F16/182;G06F16/172 |
代理公司: | 44202 广州三环专利商标代理有限公司 | 代理人: | 梁顺宜;郝传鑫<国际申请>=<国际公布> |
地址: | 510000 广东省*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 小文件 查询 读取 文件内容 海量小文件 读取命令 缓存模块 返回 数据合并模块 文件名查询 读取效率 缓存机制 接收用户 调用 数据库 合并 | ||
1.一种基于Hadoop的海量小文件读取方法,其特征在于,所述读取方法适用于具有数据合并模块和HBase缓存模块的HDFS系统;所述读取方法包括:
接收用户输入的小文件读取命令;其中,所述小文件读取命令包括用户ID和小文件文件名;
根据所述用户ID和所述小文件文件名查询所述HBase缓存模块;
如果查询到相应的文件内容,则返回所述HBase缓存模块查询到的文件内容;如果查询不到相应的文件内容,则根据所述小文件文件名查询所述HDFS系统的数据库,并判断是否查询到相应的文件内容;
如果是,则返回所述数据库查询到的文件内容;
否则,调用Hadoop archive工具的API访问所述小文件文件名对应的HAR文件,并返回所述HAR文件;
其中,所述数据合并模块采用的数据合并方法具体为:步骤A:当客户端上传待存储文件后,遍历HDFS上所有的文件,结合用户访问偏好模型找出所述待存储文件的关联性文件集合;其中,所述用户访问偏好模型是根据用户访问日志记录而统计得出;步骤B:依次将所述关联性文件集合的文件和所述待存储文件添加到待合并队列中;步骤C:判断所述待合并队列中的所有文件总大小是否超过128MB,如果是,则执行步骤D;否则,执行步骤E;步骤D:将所述待合并队列中的所有文件合并成一个数据块,并清空所述待合并队列中的文件信息和删除已合并文件的源文件,返回步骤B;步骤E:判断所述关联性文件集合的文件和所述待存储文件是否均添加到所述待合并队列中;如果是,则将所述待合并队列中的所有文件合并成一个数据块,并清空所述待合并队列中的文件信息和删除已合并文件的源文件,再执行步骤F;否则,返回步骤B;步骤F:将已合并的所有数据块存储到HDFS系统中。
2.根据权利要求1所述的基于Hadoop的海量小文件读取方法,其特征在于,所述用户访问偏好模型是根据用户访问日志记录而统计得出,具体为:
从所述用户访问日志记录中统计得出活跃用户集;
采用bean对象表示所述活跃用户集访问过的小文件;所述小文件为大小小于或等于2MB的文件;其中,所述bean对象的属性包括访问该小文件的用户ID、用户访问过的小文件名、以及该小文件被其访问过的次数;
结合JDBC技术,将所述bean对象持久化到Mysql数据库存储,并根据存储的数据,计算任意两个不同访问行为的相似度;
当所述任意两个不同访问行为的相似度为正时,确定所述任意两个访问行为的用户为相似用户,将相似用户的id记录并采用关联性文件集合存储所有相似用户访问过且具有关联的文件信息;
根据所述关联性文件集合,构建所述用户访问偏好模型。
3.根据权利要求1所述的基于Hadoop的海量小文件读取方法,其特征在于,所述HBase缓存模块采用的缓存方法为:
获取用户访问日志记录,并从所述用户访问日志记录中统计得出活跃用户集;
结合对数线性模型,计算出所述活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件;
获取所述热点文件,并采用Hbase数据库缓存所述热点文件的相关信息。
4.根据权利要求3所述的基于Hadoop的海量小文件读取方法,其特征在于,所述从所述用户访问日志记录中统计得出活跃用户集,具体为:
筛选出所述用户访问日志记录中访问资源后缀名以jpg结尾的记录行;其中,所述记录行包括:用户IP、访问页面URL、访问起始时间、访问状态、访问流量;
编写日志解析类对所述记录行进行解析,并使用一个二维数组来存储访问者IP和小文件名;
遍历所述二维数组中的访问者IP,并使用HashMap集合统计每一个访问者IP访问量;所述HashMap集合的Key值为访问者IP,Value值是访问量;
对所述HashMap集合按照Value值来进行降序排序,筛选出排名靠前20%的访问者IP,使用ArrayList集合存储该IP子集,并标记为活跃用户集。
5.根据权利要求4所述的基于Hadoop的海量小文件读取方法,其特征在于,所述结合对数线性模型,计算出所述活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件,具体为:
将从所述ArrayList集合提取出的访问者IP,与从所述二维数组中提取出访问者IP进行匹配;
当匹配成功后,以匹配成功的访问者IP作为关键词,查询出每个用户的访问起始时间,再结合对数线性模型,计算出所述活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件;
所述对数线性模型为:lnNi=k(t)lnNi(t)+b(t);
其中,Ni为文件i的热度预测值,Ni(t)为文件i在观察时间内的访问量,观察时间长度为t,k(t)与b(t)是线性关系的相关参数,根据线性回归方法计算得到的最优值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广东技术师范大学,未经广东技术师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810499647.1/1.html,转载请声明来源钻瓜专利网。