CN108932287A - 一种基于Hadoop的海量小文件写入方法 - Google Patents
一种基于Hadoop的海量小文件写入方法 Download PDFInfo
- Publication number
- CN108932287A CN108932287A CN201810500092.8A CN201810500092A CN108932287A CN 108932287 A CN108932287 A CN 108932287A CN 201810500092 A CN201810500092 A CN 201810500092A CN 108932287 A CN108932287 A CN 108932287A
- Authority
- CN
- China
- Prior art keywords
- file
- small documents
- access
- user
- active ues
- 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的海量小文件写入方法,适用于具有数据合并模块和HBase缓存模块的HDFS系统。该方法包括:接收用户输入的小文件写入命令;根据用户ID和小文件文件名查询先查询HBase缓存模块,如果查询到第一文件内容,则将写入小文件的第一文件内容上传并更新到HBase缓存模块中;如果查询不到,则再去查询HDFS系统的数据库,如果查询到第二文件内容,则将写入小文件的第二文件内容上传并更新到数据库中;否则,调用Hadoop archive工具的API访问对应的HAR文件,并将写入小文件的HAR文件上传并更新到数据库中。本发明的写入方法能提高小文件的读取效率。
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,即被定义为小文件。
现有技术对于海量小文件的处理都是将若干个小文件合并成一个block块大小的大文件,并没有考虑到文件之间的关联性,使得小文件的读取效率不太理想。
发明内容
本发明实施例提出一种基于Hadoop的海量小文件写入方法,在结合小文件合并和HBase缓存机制后,写入后的小文件更容易被读取,能提高小文件的读取效率。
本发明实施例提供一种基于Hadoop的海量小文件写入方法,包括:所述写入方法适用于具有数据合并模块和HBase缓存模块的HDFS系统;所述写入方法包括:
接收用户输入的小文件写入命令;其中,所述小文件写入命令包括用户ID和小文件文件名;
根据所述用户ID和所述小文件文件名查询所述HBase缓存模块;
如果查询到相应的文件内容,则返回所述HBase缓存模块查询到的第一文件内容,写入所述小文件,并将写入所述小文件的第一文件内容上传并更新到所述HBase缓存模块中;如果查询不到相应的文件内容,则根据所述小文件文件名查询所述HDFS系统的数据库,并判断是否查询到相应的文件内容;
如果是,则返回所述数据库查询到的第二文件内容,写入所述小文件,并将写入所述小文件的第二文件内容上传并更新到所述数据库中;
否则,调用Hadoop archive工具的API访问所述小文件文件名对应的HAR文件,写入所述小文件,并将写入所述小文件的HAR文件上传更新到所述数据库中。
进一步的,所述数据合并模块采用的数据合并方法为:
步骤A:当客户端上传待存储文件后,遍历HDFS上所有的文件,结合用户访问偏好模型找出所述待存储文件的关联性文件集合;其中,所述用户访问偏好模型是根据用户访问日志记录而统计得出;
步骤B:依次将所述关联性文件集合的中文件和所述待存储文件添加到待合并队列中;
步骤C:判断所述待合并队列中的所有文件总大小是否超过128MB,如果是,则执行步骤D;否则,执行步骤E;
步骤D:将所述待合并队列中的所有文件合并成一个数据块,并清空所述待合并队列中的文件信息和删除已合并文件的源文件,返回步骤B;
步骤E:判断所述关联性文件集合的中文件和所述待存储文件是否均添加到所述待合并队列中;如果是,则将所述待合并队列中的所有文件合并成一个数据块,并清空所述待合并队列中的文件信息和删除已合并文件的源文件,再执行步骤F;否则,返回步骤B;
步骤F:将已合并的所有数据块存储到HDFS系统中。
进一步的,其特征在于,所述用户访问偏好模型是根据用户访问日志记录而统计得出,具体为:
从所述用户访问日志记录中统计得出活跃用户集;
采用bean对象表示所述活跃用户集访问过的小文件;所述小文件为大小小于或等于2MB的文件;其中,所述bean对象的属性包括访问该小文件的用户ID、用户访问过的小文件名、以及该小文件被其访问过的次数;
结合JDBC技术,将所述bean对象持久化到Mysql数据库存储,并根据存储的数据,计算任意两个不同访问行为的相似度;
当所述任意两个不同访问行为的相似度为正时,确定所述任意两个访问行为的用户为相似用户,将相似用户的id记录并采用关联性文件集合存储所有相似用户访问过且具有关联的文件信息;
根据所述关联性文件集合,构建所述用户访问偏好模型。
进一步的,其特征在于,所述HBase缓存模块采用的缓存方法为:
获取用户访问日志记录,并从所述用户访问日志记录中统计得出活跃用户集;
结合对数线性模型,计算出所述活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前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的海量小文件写入方法,该写入方法适用于具有数据合并模块和HBase缓存模块的HDFS系统。该写入方法包括:接收用户输入的小文件写入命令;其中,小文件写入命令包括用户ID和小文件文件名;根据用户ID和小文件文件名查询先查询HBase缓存模块,如果查询到相应的第一文件内容,则返回第一文件内容,写入小文件,并将写入小文件的第一文件内容上传并更新到HBase缓存模块中;如果查询不到,则再去查询HDFS系统的数据库,如果查询到,则返回查询到的第二文件内容,并将写入小文件的第二文件内容上传并更新到数据库中;否则,调用Hadoop archive工具的API访问对应的HAR文件,写入小文件,并将写入小文件的HAR文件上传并更新到数据库中。相比于现有技术不考虑小文件之间的关联性和热点文件,本发明的写入方法在结合了小文件合并和HBase缓存机制后,写入后的小文件更容易被读取,能提高小文件的读取效率。
附图说明
图1是本发明提供的基于Hadoop的海量小文件写入方法的一种实施例的流程示意图;
图2是本发明提供的数据合并方法的一种实施例的流程示意图;
图3是本发明提供的缓存方法的一种实施例的流程示意图;
图4是本发明提供的缓存方法的另一种实施例的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明提供的基于Hadoop的海量小文件写入方法的一种实施例的流程示意图,该方法包括步骤101至步骤106。该写入方法适用于具有数据合并模块和HBase缓存模块的HDFS系统,各步骤具体如下:
步骤101:接收用户输入的小文件写入命令;其中,小文件写入命令包括用户ID和小文件文件名。
步骤102:根据用户ID和小文件文件名查询HBase缓存模块,并判断是否查询到相应的第一文件内容,如果是,则执行步骤105,否则,执行步骤103。
步骤103:根据小文件文件名查询所述HDFS系统的数据库,并判断是否查询到相应的第二文件内容,如果是,则执行步骤106,否则,执行步骤104。
步骤104:调用Hadoop archive工具的API访问小文件文件名对应的HAR文件,写入小文件,并将写入小文件的HAR文件上传更新到数据库中。
步骤105:返回第一文件内容,写入小文件,并将写入小文件的第一文件内容上传并更新到HBase缓存模块中。
步骤106:返回数据库查询到的第二文件内容,写入小文件,并将写入小文件的第二文件内容上传并更新到数据库中。
参见图2,图2是本发明提供的数据合并方法的一种实施例的流程示意图,本发明的数据合并模块采用了图2所示的数据合并方法,包括步骤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元素,设计一个计数器统计每一个访问者IP访问量。使用一个HashMap集合,访问者IP作为Key值,Value值是该访问者的访问量。
(4)对步骤3产生的HashMap集合按照Value值来进行降序排序,筛选出排名靠前20%的访问者IP,使用ArrayList集合存储该IP子集,标记为活跃用户集。
(5)使用一个bean对象抽象表示活跃用户集访问过的小文件,对象的属性包括访问该小文件的用户ID,用户访问过的小文件名,以及该小文件被其访问过的次数。方法为获取属性的get、set方法。
(6)结合JDBC技术bean对象持久化到Mysql数据库存储,形成以下格式的表所示:
(7)在20行中两行之间取出数据,通过公式计算出两个不同用户访问行为的相似度。其中,本发明采用Pearson相关系数确定相似用户,给定评分矩阵R,用户a和用户b的相似度采用sim(a,b)表示,ra、rb为“用户-访问量”评分矩阵的评分数据
(8)这里设定当sim(a,b)的值为正时,可以判定两个不同用户是相似用户,记录下他们的用户ID。
(9)根据相似用户的用户ID,使用一个集合存储所有相似用户访问过且具有关联的文件信息。
步骤B:依次将关联性文件集合的中文件和待存储文件添加到待合并队列中。
步骤C:判断待合并队列中的所有文件总大小是否超过128MB,如果是,则执行步骤D;否则,执行步骤E。
步骤D:将待合并队列中的所有文件合并成一个数据块,并清空待合并队列中的文件信息和删除已合并文件的源文件,返回步骤B。
步骤E:判断关联性文件集合的中文件和待存储文件是否均添加到待合并队列中;如果是,则将待合并队列中的所有文件合并成一个数据块,并清空待合并队列中的文件信息和删除已合并文件的源文件,再执行步骤F;否则,返回步骤B。
步骤F:将已合并的所有数据块存储到HDFS系统中。
参见图3,图3是本发明提供的缓存方法的一种实施例的流程示意图。本发明的HBase缓存模块采用了图3的缓存方法,该方法包括301至步骤303,各步骤具体如下:
步骤301:获取用户访问日志记录,并从用户访问日志记录中统计得出活跃用户集。
在本实施例中,步骤301中从用户访问日志记录中统计得出活跃用户集,具体为:筛选出用户访问日志记录中访问资源后缀名以jpg结尾的记录行;其中,记录行包括:用户IP、访问页面URL、访问起始时间、访问状态、访问流量;编写日志解析类对记录行进行解析,并使用一个二维数组来存储访问者IP和小文件名;遍历二维数组中的访问者IP,并使用HashMap集合统计每一个访问者IP访问量;HashMap集合的Key值为访问者IP,Value值是访问量;对HashMap集合按照Value值来进行降序排序,筛选出排名靠前20%的访问者IP,使用ArrayList集合存储该IP子集,并标记为活跃用户集。
本发明的步骤301要计算出活跃用户集的目的是,用户关于小文件的访问接近于帕累托分布规律而不是均匀的随机分布。即大部分的I/O请求访问少量的热门数据,大多数80%的访问量集中在20%的数据上。因此,如果能从文件系统存储的海量小文件通过模型预测出热点文件,再进行缓存,一定能将节省提高用户访问数据的效率。
步骤302:结合对数线性模型,计算出活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件。
在本实施例中,步骤302具体为:将从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之间的时间差,为了方便计算,时间长度以小时作为单位。
步骤303:获取热点文件,并采用Hbase数据库缓存热点文件的相关信息。
在本实施例中,采用Hbase数据库缓存热点文件的相关信息,HBase的表名值为访问者ID,HBase的RowKey设为小文件名,HBase的列族名为”file content”,Value值即单元格值为小文件内容。当用户访问HBase中的小文件时,只需根据用户ID作为表名和所要访问的小文件名作为HBase的get()方法的参数,就可以获取对应的小文件内容。
为了更好的说明本发明的缓存方法,参见图4,图4是本发明提供的缓存方法的另一种实施例的流程示意图。如图4所示,该流程包括:用户访问记录集→正则表达式过滤筛选出所需的记录行→解析记录行→使用bean对象封装好记录行信息→调研JDBC API将bean对象持久化到Mysql数据库→使用一个二维数组存储访问者IP与小文件名信息→遍历数组,统计出用户访问量→根据用户访问量进行排序,使用ArrayList集合存储活跃用户集的用户IP→将二维数组和活跃用户集中的访问者IP进行匹配→匹配成功时,以访问者IP作为关键词,提取出用户访问起始时间和访问量→使用文件热度预测公式计算出文件热度值→对文件热度值进行排序,标记处热点文件→HBase缓存热点文件相关信息。
由上可见,本发明实施例提供的基于Hadoop的海量小文件写入方法,该写入方法适用于具有数据合并模块和HBase缓存模块的HDFS系统。该写入方法包括:接收用户输入的小文件写入命令;其中,小文件写入命令包括用户ID和小文件文件名;根据用户ID和小文件文件名查询先查询HBase缓存模块,如果查询到相应的第一文件内容,则返回第一文件内容,写入小文件,并将写入小文件的第一文件内容上传并更新到HBase缓存模块中;如果查询不到,则再去查询HDFS系统的数据库,如果查询到,则返回查询到的第二文件内容,并将写入小文件的第二文件内容上传并更新到数据库中;否则,调用Hadoop archive工具的API访问对应的HAR文件,写入小文件,并将写入小文件的HAR文件上传并更新到数据库中。相比于现有技术不考虑小文件之间的关联性和热点文件,本发明的写入方法在结合了小文件合并和HBase缓存机制后,写入后的小文件更容易被读取,能提高小文件的读取效率。
进一步的,本发明提供了一种数据合并方法,能提高小文件的读取效率,减少HDFS系统中namenode内存的消耗。
进一步的,本发明数据合并方法将多个具有关联的小文件合并成一个大文件后再存入系统,系统的namenode节点只会存有一份大文件所对应的元数据,namenode节点需要维护的元数据量会大大减少,内存的消耗也就会减小。
进一步的,本发明数据合并方式是将相关联文件合并在同一个大的文件中,文件被合并后是存储在同一个的datanode的同一个数据块中。当用户对文件的请求具有很强的关联性,即只要用户不断访问的小文件是合并在同一个大文件,根据文件访问原则,系统会选择较近datanode节点上的数据块读取,也就是不断的从同一个datanode的数据块读取数据,这样避免了不同文件访问时需要在不同的数据节点间跳转,减少了磁盘寻址开销,占用的系统资源相对较少,大大提高了文件的读取效率。
进一步的,本发明提供了一种缓存方法,相比于现有技术没有考虑用户访问的热点文件,本发明通过HBase缓存热度文件,不仅提高了缓存的命中率,而且加快了文件的读取效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (6)
1.一种基于Hadoop的海量小文件写入方法,其特征在于,包括:所述写入方法适用于具有数据合并模块和HBase缓存模块的HDFS系统;所述写入方法包括:
接收用户输入的小文件写入命令;其中,所述小文件写入命令包括用户ID和小文件文件名;
根据所述用户ID和所述小文件文件名查询所述HBase缓存模块;
如果查询到相应的文件内容,则返回所述HBase缓存模块查询到的第一文件内容,写入所述小文件,并将写入所述小文件的第一文件内容上传并更新到所述HBase缓存模块中;如果查询不到相应的文件内容,则根据所述小文件文件名查询所述HDFS系统的数据库,并判断是否查询到相应的文件内容;
如果是,则返回所述数据库查询到的第二文件内容,写入所述小文件,并将写入所述小文件的第二文件内容上传并更新到所述数据库中;
否则,调用Hadoop archive工具的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技术,将所述bean对象持久化到Mysql数据库存储,并根据存储的数据,计算任意两个不同访问行为的相似度;
当所述任意两个不同访问行为的相似度为正时,确定所述任意两个访问行为的用户为相似用户,将相似用户的id记录并采用关联性文件集合存储所有相似用户访问过且具有关联的文件信息;
根据所述关联性文件集合,构建所述用户访问偏好模型。
4.根据权利要求1所述的基于Hadoop的海量小文件写入方法,其特征在于,其特征在于,所述HBase缓存模块采用的缓存方法为:
获取用户访问日志记录,并从所述用户访问日志记录中统计得出活跃用户集;
结合对数线性模型,计算出所述活跃用户集中每个活跃用户访问过的文件的热度预测值,并按照热度预测值由大到小将各文件进行排序,将排名前20%的文件标记为热点文件;
获取所述热点文件,并采用Hbase数据库缓存所述热点文件的相关信息。
5.根据权利要求4所述的基于Hadoop的海量小文件写入方法,其特征在于,所述从所述用户访问日志记录中统计得出活跃用户集,具体为:
筛选出所述用户访问日志记录中访问资源后缀名以jpg结尾的记录行;其中,所述记录行包括:用户IP、访问页面URL、访问起始时间、访问状态、访问流量;
编写日志解析类对所述记录行进行解析,并使用一个二维数组来存储访问者IP和小文件名;
遍历所述二维数组中的访问者IP,并使用HashMap集合统计每一个访问者IP访问量;所述HashMap集合的Key值为访问者IP,Value值是访问量;
对所述HashMap集合按照Value值来进行降序排序,筛选出排名靠前20%的访问者IP,使用ArrayList集合存储该IP子集,并标记为活跃用户集。
6.根据权利要求5所述的基于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 |
---|---|---|---|
CN201810500092.8A CN108932287B (zh) | 2018-05-22 | 2018-05-22 | 一种基于Hadoop的海量小文件写入方法 |
JP2018147289A JP6642650B2 (ja) | 2018-05-22 | 2018-08-04 | Hadoopに基づいて、データマージモジュールとHBaseキャッシュモジュールを備えるHDFSに複数の2MB以下の小さなファイルを書き込む方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810500092.8A CN108932287B (zh) | 2018-05-22 | 2018-05-22 | 一种基于Hadoop的海量小文件写入方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108932287A true CN108932287A (zh) | 2018-12-04 |
CN108932287B CN108932287B (zh) | 2019-11-29 |
Family
ID=64449331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810500092.8A Active CN108932287B (zh) | 2018-05-22 | 2018-05-22 | 一种基于Hadoop的海量小文件写入方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6642650B2 (zh) |
CN (1) | CN108932287B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913917A (zh) * | 2020-07-24 | 2020-11-10 | 北京锐安科技有限公司 | 一种文件处理方法、装置、设备和介质 |
CN117519608A (zh) * | 2023-12-27 | 2024-02-06 | 泰安北航科技园信息科技有限公司 | 一种以Hadoop为核心的大数据服务器 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111143158B (zh) * | 2019-12-04 | 2023-05-16 | 武汉光谷信息技术股份有限公司 | 一种监控数据实时存储方法、系统、电子设备及存储介质 |
CN111813749B (zh) * | 2020-08-21 | 2024-06-21 | 网易(杭州)网络有限公司 | 文件过滤方法及装置、电子设备、存储介质 |
CN112532724A (zh) * | 2020-11-27 | 2021-03-19 | 上海爱数信息技术股份有限公司 | 一种文件传输系统及其方法 |
CN114817176A (zh) * | 2022-04-24 | 2022-07-29 | 福建财通信息科技有限公司 | 一种基于Nginx+MinIO+Redis的分布式文件存储系统及方法 |
CN115599792B (zh) * | 2022-12-13 | 2023-03-10 | 深圳市润信数据技术有限公司 | 一种物联网大数据分类存储方法 |
CN116069741A (zh) * | 2023-02-20 | 2023-05-05 | 北京集度科技有限公司 | 文件处理方法、装置和计算机程序产品 |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102332029A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种基于Hadoop的海量可归类小文件关联存储方法 |
CN102902716A (zh) * | 2012-08-27 | 2013-01-30 | 苏州两江科技有限公司 | 基于Hadoop分布式计算平台的存储系统 |
CN103176754A (zh) * | 2013-04-02 | 2013-06-26 | 浪潮电子信息产业股份有限公司 | 一种海量小文件读取存储方法 |
CN103246700A (zh) * | 2013-04-01 | 2013-08-14 | 厦门市美亚柏科信息股份有限公司 | 基于HBase的海量小文件低延时存储方法 |
CN103530387A (zh) * | 2013-10-22 | 2014-01-22 | 浪潮电子信息产业股份有限公司 | 一种hdfs针对小文件的改进方法 |
CN103577123A (zh) * | 2013-11-12 | 2014-02-12 | 河海大学 | 一种基于hdfs的小文件优化存储方法 |
CN103678491A (zh) * | 2013-11-14 | 2014-03-26 | 东南大学 | 一种基于Hadoop中小文件优化和倒排索引的方法 |
CN103856567A (zh) * | 2014-03-26 | 2014-06-11 | 西安电子科技大学 | 基于Hadoop分布式文件系统的小文件存储方法 |
CN104536959A (zh) * | 2014-10-16 | 2015-04-22 | 南京邮电大学 | 一种Hadoop存取海量小文件的优化方法 |
CN105183839A (zh) * | 2015-09-02 | 2015-12-23 | 华中科技大学 | 一种基于Hadoop的小文件分级索引的存储优化方法 |
CN105205082A (zh) * | 2014-06-27 | 2015-12-30 | 国际商业机器公司 | 用于处理hdfs中的文件存储的方法和系统 |
CN105404652A (zh) * | 2015-10-29 | 2016-03-16 | 河海大学 | 一种基于hdfs的海量小文件处理方法 |
CN105631010A (zh) * | 2015-12-29 | 2016-06-01 | 成都康赛信息技术有限公司 | 一种基于hdfs小文件存储的优化方法 |
CN106909651A (zh) * | 2017-02-23 | 2017-06-30 | 郑州云海信息技术有限公司 | 一种基于hdfs小文件写入和读取的方法 |
CN107391280A (zh) * | 2017-07-31 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种小文件的接收和存储方法及装置 |
CN107741947A (zh) * | 2017-08-30 | 2018-02-27 | 浙江九州量子信息技术股份有限公司 | 基于hdfs文件系统的随机数密钥的存储与获取方法 |
-
2018
- 2018-05-22 CN CN201810500092.8A patent/CN108932287B/zh active Active
- 2018-08-04 JP JP2018147289A patent/JP6642650B2/ja not_active Expired - Fee Related
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102332029A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种基于Hadoop的海量可归类小文件关联存储方法 |
CN102902716A (zh) * | 2012-08-27 | 2013-01-30 | 苏州两江科技有限公司 | 基于Hadoop分布式计算平台的存储系统 |
CN103246700A (zh) * | 2013-04-01 | 2013-08-14 | 厦门市美亚柏科信息股份有限公司 | 基于HBase的海量小文件低延时存储方法 |
CN103176754A (zh) * | 2013-04-02 | 2013-06-26 | 浪潮电子信息产业股份有限公司 | 一种海量小文件读取存储方法 |
CN103530387A (zh) * | 2013-10-22 | 2014-01-22 | 浪潮电子信息产业股份有限公司 | 一种hdfs针对小文件的改进方法 |
CN103577123A (zh) * | 2013-11-12 | 2014-02-12 | 河海大学 | 一种基于hdfs的小文件优化存储方法 |
CN103678491A (zh) * | 2013-11-14 | 2014-03-26 | 东南大学 | 一种基于Hadoop中小文件优化和倒排索引的方法 |
CN103856567A (zh) * | 2014-03-26 | 2014-06-11 | 西安电子科技大学 | 基于Hadoop分布式文件系统的小文件存储方法 |
CN105205082A (zh) * | 2014-06-27 | 2015-12-30 | 国际商业机器公司 | 用于处理hdfs中的文件存储的方法和系统 |
CN104536959A (zh) * | 2014-10-16 | 2015-04-22 | 南京邮电大学 | 一种Hadoop存取海量小文件的优化方法 |
CN105183839A (zh) * | 2015-09-02 | 2015-12-23 | 华中科技大学 | 一种基于Hadoop的小文件分级索引的存储优化方法 |
CN105404652A (zh) * | 2015-10-29 | 2016-03-16 | 河海大学 | 一种基于hdfs的海量小文件处理方法 |
CN105631010A (zh) * | 2015-12-29 | 2016-06-01 | 成都康赛信息技术有限公司 | 一种基于hdfs小文件存储的优化方法 |
CN106909651A (zh) * | 2017-02-23 | 2017-06-30 | 郑州云海信息技术有限公司 | 一种基于hdfs小文件写入和读取的方法 |
CN107391280A (zh) * | 2017-07-31 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种小文件的接收和存储方法及装置 |
CN107741947A (zh) * | 2017-08-30 | 2018-02-27 | 浙江九州量子信息技术股份有限公司 | 基于hdfs文件系统的随机数密钥的存储与获取方法 |
Non-Patent Citations (6)
Title |
---|
JIAN HUANG ETC.: "Improving the Small File Synchronous Write Performance for", 《ADVANCED MATERIALS RESEARCH》 * |
刘小俊等: "一种结合RDBMS和Hadoop的海量小文件存储方法", 《武汉大学学报 信息科学版》 * |
宋晓东: "Hadoop分布式文件系统小文件数据存储性能的优化方法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
张春明等: "一种Hadoop 小文件存储和读取的方法", 《计算机应用与软件》 * |
彭建烽等: "基于Hadoop 的海量小文件合并的研究与设计", 《广东技术师范学院学报(自然科学)》 * |
陈旭: "基于Hadoop的海量小文件处理技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913917A (zh) * | 2020-07-24 | 2020-11-10 | 北京锐安科技有限公司 | 一种文件处理方法、装置、设备和介质 |
CN117519608A (zh) * | 2023-12-27 | 2024-02-06 | 泰安北航科技园信息科技有限公司 | 一种以Hadoop为核心的大数据服务器 |
CN117519608B (zh) * | 2023-12-27 | 2024-03-22 | 泰安北航科技园信息科技有限公司 | 一种以Hadoop为核心的大数据服务器 |
Also Published As
Publication number | Publication date |
---|---|
JP2019204473A (ja) | 2019-11-28 |
JP6642650B2 (ja) | 2020-02-05 |
CN108932287B (zh) | 2019-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108804566B (zh) | 一种基于Hadoop的海量小文件读取方法 | |
CN108932287B (zh) | 一种基于Hadoop的海量小文件写入方法 | |
US7747612B2 (en) | Indication of exclusive items in a result set | |
CN108846021A (zh) | 一种基于用户访问偏好模型的海量小文件存储方法 | |
CN101055580B (zh) | 用于检索文档的系统、方法及用户接口 | |
US7747614B2 (en) | Difference control for generating and displaying a difference result set from the result sets of a plurality of search engines | |
US7945637B2 (en) | Server architecture and methods for persistently storing and serving event data | |
US8140541B2 (en) | Time-weighted scoring system and method | |
US20070124277A1 (en) | Index and Method for Extending and Querying Index | |
US20050278314A1 (en) | Variable length snippet generation | |
CN105637506B (zh) | 用于优化数据存储上的查询执行的方法 | |
JP2009531792A (ja) | 類似のクエリの結果に対するユーザアクティビティに基づいて現在のクエリに最も関連のある項目を識別すること | |
CN102521406A (zh) | 海量结构化数据复杂查询任务的分布式查询方法和系统 | |
CN108932288A (zh) | 一种基于Hadoop的海量小文件缓存方法 | |
CN101641695A (zh) | 资源接入过滤系统及供与资源接入过滤系统一起使用的数据库结构 | |
US20070100821A1 (en) | Presentation of differences between multiple searches | |
JP2008059557A (ja) | データベースインデクシング、サーチング、及びデータ検索のシステム及び方法 | |
JP2011154467A (ja) | 検索結果順位付け方法および検索結果順位付けシステム | |
CN101997933A (zh) | 一种网址提供方法、装置及系统 | |
JPWO2010084754A1 (ja) | データベースシステム、データベース管理方法、及びデータベース構造 | |
Mallia et al. | Faster BlockMax WAND with longer skipping | |
CN109299143A (zh) | 基于Redis缓存的数据互操作测试知识库的知识快速索引方法 | |
CN110874360A (zh) | 一种基于固定容量的有序队列缓存方法及装置 | |
KR101180371B1 (ko) | 폭소노미 기반 개인화 웹 검색 방법 및 이를 수행하는 시스템 | |
Mitra et al. | Query-based partitioning of documents and indexes for information lifecycle management |
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: 510000 No. 293 Shipai Zhongshan Avenue, Tianhe District, Guangzhou City, Guangdong Province Applicant after: Guangdong Normal University of Technology Address before: 510665 293 Zhongshan Avenue, Tianhe District, Guangzhou, Guangdong. Applicant before: Guangdong Technical Normal College |
|
GR01 | Patent grant | ||
GR01 | Patent grant |