CN108932288A - 一种基于Hadoop的海量小文件缓存方法 - Google Patents
一种基于Hadoop的海量小文件缓存方法 Download PDFInfo
- Publication number
- CN108932288A CN108932288A CN201810500093.2A CN201810500093A CN108932288A CN 108932288 A CN108932288 A CN 108932288A CN 201810500093 A CN201810500093 A CN 201810500093A CN 108932288 A CN108932288 A CN 108932288A
- Authority
- CN
- China
- Prior art keywords
- file
- access
- active ues
- visitor
- hot spot
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Hadoop的海量小文件缓存方法,该方法包括:获取用户访问日志记录,并从用户访问日志记录中统计得出活跃用户集;结合对数线性模型,计算出活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件;获取所述热点文件,并采用Hbase数据库缓存所述热点文件的相关信息。采用本发明技术方案能提高缓存的命中率,加快文件的读取效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于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,即被定义为小文件。
为了提高文件的读取效率,HDFS引入了缓存机制,而现有的缓存策略是:当用户读取某个文件时,与该文件相关的文件以及索引文件都会被加载到内存。该策略能提高文件的读取效率的前提是用户访问命中内存里的文件。但是其没有考虑到该文件集是否被频繁访问,即该文件集是否属于热门数据。现有技术的其他缓存方法也没有从热门数据的方面考虑,如果耗费大量的内存来缓存用户不经常访问的文件,不仅不能提高文件的读取效率,反而影响了整个文件***的性能。
发明内容
本发明实施例提出一种基于Hadoop的海量小文件缓存方法,通过HBase缓存热度文件,不仅提高了缓存的命中率,而且加快了文件的读取效率。
本发明实施例提供一种基于Hadoop的海量小文件缓存方法,包括:
获取用户访问日志记录,并从所述用户访问日志记录中统计得出活跃用户集;
结合对数线性模型,计算出所述活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件;
获取所述热点文件,并采用Hbase数据库缓存所述热点文件的相关信息。
进一步的,所述从所述用户访问日志记录中统计得出活跃用户集,具体为:
筛选出所述用户访问日志记录中访问资源后缀名以jpg结尾的记录行;其中,所述记录行包括:用户IP、访问页面URL、访问起始时间、访问状态、访问流量;
编写日志解析类对所述记录行进行解析,并使用一个二维数组来存储访问者IP和小文件名;
遍历所述二维数组中的访问者IP,并使用HashMap集合统计每一个访问者IP访问量;所述HashMap集合的Key值为访问者IP,Value值是访问量;
对所述HashMap集合按照Value值来进行降序排序,筛选出排名靠前20%的访问者IP,使用ArrayList集合存储该IP子集,并标记为活跃用户集。
进一步的,所述结合对数线性模型,计算出所述活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件,具体为:
将从所述ArrayList集合提取出的访问者IP,与从所述二维数组中提取出访问者IP进行匹配;
当匹配成功后,以匹配成功的访问者IP作为关键词,查询出每个用户的访问起始时间,再结合对数线性模型,计算出所述活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件;
所述对数线性模型为:lnNi=k(t)lnNi(t)+b(t);
其中,Ni为文件i的热度预测值,Ni(t)为文件i在观察时间内的访问量,观察时间长度为t。
实施本发明实施例,具有如下有益效果:
本发明实施例提供的基于Hadoop的海量小文件缓存方法,包括:获取用户访问日志记录,并从用户访问日志记录中统计得出活跃用户集;结合对数线性模型,计算出活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件;获取所述热点文件,并采用Hbase数据库缓存所述热点文件的相关信息。相比于现有技术没有考虑用户访问的热点文件,本发明技术方案通过HBase缓存热度文件,不仅提高了缓存的命中率,而且加快了文件的读取效率。
附图说明
图1是本发明提供的基于Hadoop的海量小文件缓存方法的一种实施例的流程示意图;
图2是本发明提供的基于Hadoop的海量小文件缓存方法的另一种实施例的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明提供的基于Hadoop的海量小文件缓存方法的一种实施例的流程示意图,该流程包括步骤101至步骤103,其中各步骤具体如下:
步骤101:获取用户访问日志记录,并从用户访问日志记录中统计得出活跃用户集。
在本实施例中,步骤101中从用户访问日志记录中统计得出活跃用户集,具体为:筛选出用户访问日志记录中访问资源后缀名以jpg结尾的记录行;其中,记录行包括:用户IP、访问页面URL、访问起始时间、访问状态、访问流量;编写日志解析类对记录行进行解析,并使用一个二维数组来存储访问者IP和小文件名;遍历二维数组中的访问者IP,并使用HashMap集合统计每一个访问者IP访问量;HashMap集合的Key值为访问者IP,Value值是访问量;对HashMap集合按照Value值来进行降序排序,筛选出排名靠前20%的访问者IP,使用ArrayList集合存储该IP子集,并标记为活跃用户集。
本发明的步骤101要计算出活跃用户集的目的是,用户关于小文件的访问接近于帕累托分布规律而不是均匀的随机分布。即大部分的I/O请求访问少量的热门数据,大多数80%的访问量集中在20%的数据上。因此,如果能从文件***存储的海量小文件通过模型预测出热点文件,再进行缓存,一定能将节省提高用户访问数据的效率。
步骤102:结合对数线性模型,计算出活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件。
在本实施例中,步骤102具体为:将从ArrayList集合提取出的访问者IP,与从二维数组中提取出访问者IP进行匹配;当匹配成功后,以匹配成功的访问者IP作为关键词,查询出每个用户的访问起始时间,再结合对数线性模型,计算出活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件;
对数线性模型为:lnNi=k(t)lnNi(t)+b(t);
其中,Ni为文件i的热度预测值,Ni(t)为文件i在观察时间内的访问量,观察时间长度为t。k(t)与b(t)是线性关系的相关参数,可以使用线性回归方法计算得到最优值。本发明的对数线性模型所提及到的观察时间长度t的定义是:用户访问日志记录中记录行的访问起始时间元素与收集到用户访问日志记录的时间差。例如收集到的用户访问日志记录的时间点是30/Jan/2018:17:38:20,而用户访问日志记录中记录行的访问起始时间为29/Jan/2018:10:35:15,观察时间长度是29/Jan/2018:10:35:15到30/Jan/2018:17:38:20之间的时间差,为了方便计算,时间长度以小时作为单位。
步骤103:获取热点文件,并采用Hbase数据库缓存热点文件的相关信息。
在本实施例中,采用Hbase数据库缓存热点文件的相关信息,HBase的表名值为访问者ID,HBase的RowKey设为小文件名,HBase的列族名为”file content”,Value值即单元格值为小文件内容。当用户访问HBase中的小文件时,只需根据用户ID作为表名和所要访问的小文件名作为HBase的get()方法的参数,就可以获取对应的小文件内容。
为了更好的说明本发明的缓存方法,参见图2,图2是本发明提供的基于Hadoop的海量小文件缓存方法的另一种实施例的流程示意图。如图2所示,该流程包括:用户访问记录集→正则表达式过滤筛选出所需的记录行→解析记录行→使用bean对象封装好记录行信息→调研JDBC API将bean对象持久化到Mysql数据库→使用一个二维数组存储访问者IP与小文件名信息→遍历数组,统计出用户访问量→根据用户访问量进行排序,使用ArrayList集合存储活跃用户集的用户IP→将二维数组和活跃用户集中的访问者IP进行匹配→匹配成功时,以访问者IP作为关键词,提取出用户访问起始时间和访问量→使用文件热度预测公式计算出文件热度值→对文件热度值进行排序,标记处热点文件→HBase缓存热点文件相关信息。
由上可见,本发明实施例提供的基于Hadoop的海量小文件缓存方法,包括:获取用户访问日志记录,并从用户访问日志记录中统计得出活跃用户集;结合对数线性模型,计算出活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件;获取所述热点文件,并采用Hbase数据库缓存所述热点文件的相关信息。相比于现有技术没有考虑用户访问的热点文件,本发明技术方案通过HBase缓存热度文件,不仅提高了缓存的命中率,而且加快了文件的读取效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (3)
1.一种基于Hadoop的海量小文件缓存方法,其特征在于,包括:
获取用户访问日志记录,并从所述用户访问日志记录中统计得出活跃用户集;
结合对数线性模型,计算出所述活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件;
获取所述热点文件,并采用Hbase数据库缓存所述热点文件的相关信息。
2.根据权利要求1所述的基于Hadoop的海量小文件缓存方法,其特征在于,所述从所述用户访问日志记录中统计得出活跃用户集,具体为:
筛选出所述用户访问日志记录中访问资源后缀名以jpg结尾的记录行;其中,所述记录行包括:用户IP、访问页面URL、访问起始时间、访问状态、访问流量;
编写日志解析类对所述记录行进行解析,并使用一个二维数组来存储访问者IP和小文件名;
遍历所述二维数组中的访问者IP,并使用HashMap集合统计每一个访问者IP访问量;所述HashMap集合的Key值为访问者IP,Value值是访问量;
对所述HashMap集合按照Value值来进行降序排序,筛选出排名靠前20%的访问者IP,使用ArrayList集合存储该IP子集,并标记为活跃用户集。
3.根据权利要求2所述的基于Hadoop的海量小文件缓存方法,其特征在于,所述结合对数线性模型,计算出所述活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件,具体为:
将从所述ArrayList集合提取出的访问者IP,与从所述二维数组中提取出访问者IP进行匹配;
当匹配成功后,以匹配成功的访问者IP作为关键词,查询出每个用户的访问起始时间,再结合对数线性模型,计算出所述活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件;
所述对数线性模型为:lnNi=k(t)lnNi(t)+b(t);
其中,Ni为文件i的热度预测值,Ni(t)为文件i在观察时间内的访问量,观察时间长度为t。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810500093.2A CN108932288B (zh) | 2018-05-22 | 2018-05-22 | 一种基于Hadoop的海量小文件缓存方法 |
JP2018147291A JP6696062B2 (ja) | 2018-05-22 | 2018-08-04 | Hadoopに基づいて、複数の2MB以下のファイルをキャッシュする方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810500093.2A CN108932288B (zh) | 2018-05-22 | 2018-05-22 | 一种基于Hadoop的海量小文件缓存方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108932288A true CN108932288A (zh) | 2018-12-04 |
CN108932288B CN108932288B (zh) | 2022-04-12 |
Family
ID=64449348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810500093.2A Active CN108932288B (zh) | 2018-05-22 | 2018-05-22 | 一种基于Hadoop的海量小文件缓存方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6696062B2 (zh) |
CN (1) | CN108932288B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190926A (zh) * | 2019-11-25 | 2020-05-22 | 腾讯云计算(北京)有限责任公司 | 资源缓存方法、装置、设备及存储介质 |
CN112685634A (zh) * | 2020-12-29 | 2021-04-20 | 平安普惠企业管理有限公司 | 数据查询方法、装置、电子设备及存储介质 |
CN113094368A (zh) * | 2021-04-13 | 2021-07-09 | 成都信息工程大学 | 一种提升缓存访问命中率的***及方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103795781A (zh) * | 2013-12-10 | 2014-05-14 | 西安邮电大学 | 一种基于文件预测的分布式缓存模型 |
CN103856567A (zh) * | 2014-03-26 | 2014-06-11 | 西安电子科技大学 | 基于Hadoop分布式文件***的小文件存储方法 |
CN104111900A (zh) * | 2013-04-22 | 2014-10-22 | ***通信集团公司 | 一种缓存中数据替换方法及装置 |
CN105183839A (zh) * | 2015-09-02 | 2015-12-23 | 华中科技大学 | 一种基于Hadoop的小文件分级索引的存储优化方法 |
CN106528451A (zh) * | 2016-11-14 | 2017-03-22 | 哈尔滨工业大学(威海) | 针对小文件的二级缓存预取的云存储框架及构建方法 |
CN107045531A (zh) * | 2017-01-20 | 2017-08-15 | 郑州云海信息技术有限公司 | 一种优化hdfs小文件存取的***及方法 |
CN107066512A (zh) * | 2017-01-23 | 2017-08-18 | 重庆邮电大学 | 一种基于Hadoop的用户偏好评估方法及*** |
CN107368608A (zh) * | 2017-08-07 | 2017-11-21 | 杭州电子科技大学 | 基于arc替换算法的hdfs小文件缓存管理方法 |
CN108446340A (zh) * | 2018-03-02 | 2018-08-24 | 哈尔滨工业大学(威海) | 一种面向海量小文件的用户热点数据访问预测方法 |
-
2018
- 2018-05-22 CN CN201810500093.2A patent/CN108932288B/zh active Active
- 2018-08-04 JP JP2018147291A patent/JP6696062B2/ja not_active Expired - Fee Related
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111900A (zh) * | 2013-04-22 | 2014-10-22 | ***通信集团公司 | 一种缓存中数据替换方法及装置 |
CN103795781A (zh) * | 2013-12-10 | 2014-05-14 | 西安邮电大学 | 一种基于文件预测的分布式缓存模型 |
CN103856567A (zh) * | 2014-03-26 | 2014-06-11 | 西安电子科技大学 | 基于Hadoop分布式文件***的小文件存储方法 |
CN105183839A (zh) * | 2015-09-02 | 2015-12-23 | 华中科技大学 | 一种基于Hadoop的小文件分级索引的存储优化方法 |
CN106528451A (zh) * | 2016-11-14 | 2017-03-22 | 哈尔滨工业大学(威海) | 针对小文件的二级缓存预取的云存储框架及构建方法 |
CN107045531A (zh) * | 2017-01-20 | 2017-08-15 | 郑州云海信息技术有限公司 | 一种优化hdfs小文件存取的***及方法 |
CN107066512A (zh) * | 2017-01-23 | 2017-08-18 | 重庆邮电大学 | 一种基于Hadoop的用户偏好评估方法及*** |
CN107368608A (zh) * | 2017-08-07 | 2017-11-21 | 杭州电子科技大学 | 基于arc替换算法的hdfs小文件缓存管理方法 |
CN108446340A (zh) * | 2018-03-02 | 2018-08-24 | 哈尔滨工业大学(威海) | 一种面向海量小文件的用户热点数据访问预测方法 |
Non-Patent Citations (1)
Title |
---|
李铁 等: "面向Hadoop分布式文件***的小文件存取优化方法", 《计算机应用》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190926A (zh) * | 2019-11-25 | 2020-05-22 | 腾讯云计算(北京)有限责任公司 | 资源缓存方法、装置、设备及存储介质 |
CN111190926B (zh) * | 2019-11-25 | 2023-04-07 | 腾讯云计算(北京)有限责任公司 | 资源缓存方法、装置、设备及存储介质 |
CN112685634A (zh) * | 2020-12-29 | 2021-04-20 | 平安普惠企业管理有限公司 | 数据查询方法、装置、电子设备及存储介质 |
CN113094368A (zh) * | 2021-04-13 | 2021-07-09 | 成都信息工程大学 | 一种提升缓存访问命中率的***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108932288B (zh) | 2022-04-12 |
JP2019204475A (ja) | 2019-11-28 |
JP6696062B2 (ja) | 2020-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108804566B (zh) | 一种基于Hadoop的海量小文件读取方法 | |
CN108932287B (zh) | 一种基于Hadoop的海量小文件写入方法 | |
Zheng et al. | How climate change impacted the collapse of the Ming dynasty | |
Laakso | Green open access policies of scholarly journal publishers: a study of what, when, and where self-archiving is allowed | |
CN107040422A (zh) | 一种基于物化缓存的网络大数据可视化方法 | |
CN108932288A (zh) | 一种基于Hadoop的海量小文件缓存方法 | |
JP6642651B2 (ja) | ユーザアクセスプリファレンスモデルを用いたストレージ方法 | |
CN103366015A (zh) | 一种基于Hadoop的OLAP数据存储与查询方法 | |
CN103546326A (zh) | 一种网站流量统计的方法 | |
CN103176754A (zh) | 一种海量小文件读取存储方法 | |
CN103150245B (zh) | 确定数据实体的访问特性的方法和存储控制器 | |
Li et al. | SEER-MCache: A prefetchable memory object caching system for IoT real-time data processing | |
Chai et al. | WEC: Improving durability of SSD cache drives by caching write-efficient data | |
CN107180043B (zh) | 分页实现方法和分页*** | |
CN109947935A (zh) | 新闻事件的生成方法及装置 | |
CN109144431A (zh) | 数据块的缓存方法、装置、设备及存储介质 | |
CN107358534A (zh) | 社交网络的无偏数据采集***及采集方法 | |
Ozcan et al. | Second chance: A hybrid approach for dynamic result caching and prefetching in search engines | |
Jeon et al. | Workload characterization and performance implications of large-scale blog servers | |
CN110334073A (zh) | 一种元数据预取方法、装置、终端、服务器及存储介质 | |
KR101180371B1 (ko) | 폭소노미 기반 개인화 웹 검색 방법 및 이를 수행하는 시스템 | |
CN103365897A (zh) | 一种支持Bigtable数据模型的片段缓存方法 | |
Ma et al. | PAAP: Prefetch-aware admission policies for query results cache in web search engines | |
Liu et al. | User Browsing Graph: Structure, Evolution and Application. | |
Li et al. | A hybrid cache and prefetch mechanism for scientific literature search engines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 510665 293 Zhongshan Avenue, Tianhe District, Guangzhou, Guangdong. Applicant after: GUANGDONG POLYTECHNIC NORMAL University Address before: 510665 293 Zhongshan Avenue, Tianhe District, Guangzhou, Guangdong. Applicant before: GUANGDONG POLYTECHNIC NORMAL University |
|
GR01 | Patent grant | ||
GR01 | Patent grant |