CN109299059A - 文件存储、检索方法、装置、存储介质及服务器 - Google Patents
文件存储、检索方法、装置、存储介质及服务器 Download PDFInfo
- Publication number
- CN109299059A CN109299059A CN201811369039.5A CN201811369039A CN109299059A CN 109299059 A CN109299059 A CN 109299059A CN 201811369039 A CN201811369039 A CN 201811369039A CN 109299059 A CN109299059 A CN 109299059A
- Authority
- CN
- China
- Prior art keywords
- file
- small documents
- hdfs
- major key
- information
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种文件存储、检索方法、装置、存储介质及服务器。所述文件存储方法包括:获取小文件的文件信息,其中,所述小文件的大小小于预设阈值;根据所述文件信息按照预设规则生成与所述小文件唯一对应的主键;基于所述主键将所述小文件写入预先创建的数据库Hbase表中。通过本发明实施例提供的技术方案,能够有效利用Hbase的高可靠性、高性能、面向列、可伸缩的分布式存储系统,实现对海量小文件列存储,以减轻HDFS对元数据管理的压力,达到HDFS存储资源的有效利用的效果。
Description
技术领域
本发明实施例涉及大数据处理技术领域,尤其涉及文件存储、检索方法、装置、存储介质及服务器。
背景技术
HDFS(Hadoop Distributed File System,分布式文件系统)为整个分布式计算Hadoop生态圈提供了基础的存储服务。可以说hadoop的整个架构都是建立在HDFS基础上的。HDFS专为解决大数据存储问题而产生的,HDFS文件系统专门存储超大文件。对于Hadoop系统,小文件通常定义为远小于HDFS的区块大小block size(默认128MB)的文件,由于每个文件都会产生各自的元数据MetaData,Hadoop通过命名空间Namenode来存储这些信息,若小文件过多,容易导致Namenode存储出现瓶颈。
在一些业务场景下,hadoop不得不接收海量的小文件的落地。大量的小文件将会导致NameNode压力过大,出现宕机甚至奔溃。具体的,首先,在HDFS中,任何区块block为HDFS中的基本的存储单元,文件或者目录等对象的元数据信息约占150byte(字节),如果有1000 0000个小文件,每个文件占用一个区块block,则命名空间NameNode大约需要2G空间。如果存储1亿个文件,则NameNode需要20G空间。这样NameNode内存容量严重制约了集群的扩展。其次,访问大量小文件的速度远远低于访问几个大文件的速度。HDFS最初是为流式存储大文件开发的,如果访问大量小文件,需要不断的从一个数据节点DataNode跳到另一个数据节点DataNode,严重影响性能。最后,处理大量小文件的速度远远小于处理同等大小的大文件的速度。每一个小文件要占用一个位置slot,而任务task启动将耗费大量时间甚至大部分时间都耗费在启动任务和释放任务上。因此,对HDFS的存储资源进行合理利用,尤其是对小文件的合理处理变得至关重要。
发明内容
本发明实施例提供一种文件存储、检索方法、装置、存储介质及服务器,可以使得HDFS的存储资源得到有效利用。
第一方面,本发明实施例提供了一种文件存储方法,包括:
获取小文件的文件信息,其中,所述小文件的大小小于预设阈值;
根据所述文件信息按照预设规则生成与所述小文件唯一对应的主键;
基于所述主键将所述小文件写入预先创建的数据库Hbase表中。
进一步的,获取小文件的文件信息,包括:
判断HDFS中的文件是否为小文件,若是,则获取HDFS中的小文件的文件信息;
基于所述主键将所述小文件写入预先创建的数据库Hbase表中,包括:
确定所述小文件在HDFS中的位置,并基于所述主键及所述小文件在HDFS中的位置,将所述HDFS中的小文件以二进制流的形式写入预先创建的数据库Hbase表中。
进一步的,在基于所述主键及所述小文件在HDFS中的位置,将所述HDFS中小文件以二进制流的形式写入预先创建的数据库Hbase表中之后,还包括:
关闭二进制流,并删除所述HDFS中的小文件。
进一步的,所述数据库Hbase表包括内存空间和多个存储文件;
基于所述主键将所述小文件写入预先创建的数据库Hbase表中,包括:
基于所述主键将所述小文件写入预先创建的数据库Hbase表中的内存空间;
当所述内存空间的当前可用空间小于预设内存阈值时,将所述小文件以存储文件的形式写入HDFS中。;
进一步的,所述文件信息包括文件名称、文件所在路径、文件后缀、文件入库时间中的至少一种。
第二方面,本发明实施例还提供了一种文件检索方法,包括:
获取待检索文件的文件信息,并根据所述文件信息按照预设规则生成与所述待检索文件对应的主键;
基于所述主键在预先存储的数据库Hbase表中,检索与所述主键对应的文件数据;
确定所述文件数据对应的文件内容及文件后缀信息,并基于所述文件内容和所述文件后缀信息,将所述文件内容转换为对应的文件并输出。
第三方面,本发明实施例还提供了一种文件存储装置,包括:
文件信息获取模块,用于获取小文件的文件信息,其中,所述小文件的大小小于预设阈值;
主键生成模块,用于根据所述文件信息按照预设规则生成与所述小文件唯一对应的主键;
文件写入模块,用于基于所述主键将所述小文件写入预先创建的数据库Hbase表中。
第四方面,本发明实施例还提供了一种文件检索装置,包括:
文件信息处理模块,用于获取待检索文件的文件信息,并根据所述文件信息按照预设规则生成与所述待检索文件对应的主键;
文件数据检索模块,用于基于所述主键在预先存储的数据库Hbase表中,检索与所述主键对应的文件数据;
文件转换模块,用于确定所述文件数据对应的文件内容及文件后缀信息,并基于所述文件内容和所述文件后缀信息,将所述文件内容转换为对应的文件并输出。
第五方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例第一方面所述的文件存储方法或者如第二方面所述的文件检索方法。
第六方面,本发明实施例提供了一种服务器,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明实施例第一方面所述文件存储方法或者第二方面所述的文件检索方法。
本发明实施例提供的文件存储方案,获取小文件的文件信息,其中,所述小文件的大小小于预设阈值,然后根据所述文件信息按照预设规则生成与所述小文件唯一对应的主键,并基于所述主键将所述小文件写入预先创建的数据库Hbase表中。通过采用上述技术方案,能够有效利用Hbase的高可靠性、高性能、面向列、可伸缩的分布式存储系统,实现对海量小文件列存储,以减轻HDFS对元数据管理的压力,达到HDFS存储资源的有效利用的效果。
附图说明
图1是本发明实施例一提供的一种文件存储方法的流程示意图;
图2是本发明实施例二提供的一种文件存储方法的流程示意图;
图3是本发明实施例三提供的一种文件存储方法的流程示意图;
图4为本发明实施例三提供的文件在Hbase内部存储过程示意图;
图5是本发明实施例四提供的一种文件检索方法的流程示意图;
图6是本发明实施例五提供的一种文件存储装置的结构示意图;
图7是本发明实施例六提供的一种文件检索装置的结构示意图;
图8是本发明实施例八提供的一种服务器的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
目前,为了对HDFS中海量小文件进行合理处理,HDFS自带有三种小文件合并的方案,分别为:HAR(Hadoop Archive),Sequence File和CombineFileInputFormat。这三种小文件合并方案,均是通过将多个小文件合并成一个大文件的方式,来减少系统中小文件的数量,从而减轻NameNode的压力。
其中,HAR是通过打包的方式将多个小文件合并成一个以.har为后缀的文件,并可以支持对文件进行透明的访问。但HAR所有的实现都是基于Hadoop shell命令实现的,该方案适用于对小文件的手动打包和定时打包。对har包的大小无法准确控制,且不支持文件复写,Lock块的利用率较低。
SequenceFile的基本思路就是将小文件进行合并成一个大文件,同时对这些小文件的位置信息构建索引。不过,这类解决方案还涉及到Hadoop的另一种文件格式——MapFile文件。SequenceFile文件并无法保证其存储的键值key-value数据是按照key的某个顺序存储的,同时不支持append操作。
另外,HDFS中内置CombineFileInputFormat类来专门处理小文件的方案的核心思想是:根据一定的规则,将HDFS上多个小文件合并到一个InputSplit中,然后启用一个Map来处理InputSplit里面的文件,通过不断迭代节点列表和机架列表的方式,形成切片,切片大小可自行配置。该方案多用于MapReduce程序中,主要目的是通过减少HDFS文件数量,达到减少MapReduce整体作业的运行时间的目的,使用范围上存在一定的局限性。
然而,这三种小文件合并方案,各有所长,也各有所短,基于以上原因,本发明实施例提供以下文件存储方法。
实施例一
图1为本发明实施例提供的文件存储方法的流程示意图,该方法可适用于服务器对小文件进行合理管理的情况,可以由文件存储装置执行,其中该装置可由软件和/或硬件实现,一般可集成在服务器中。如图1所示,该方法包括:
S101、获取小文件的文件信息,其中,所述小文件的大小小于预设阈值。
在本发明实施例中,当某文件的大小小于预设阈值时,可将该文件称为小文件,例如,预设阈值为64K,则可将文件大小小于64K的文件作为小文件。获取小文件的文件信息,其中,小文件的文件信息可以包括任意与小文件相关的信息。示例性的,所述文件信息可以包括文件名称、文件所在路径、文件后缀、文件入库时间中的至少一种。当然,文件信息还可以包括文件大小和文件的URL(Uniform Resource Locator,统一资源定位符)等相关信息。需要说明的是,本发明实施例对小文件的文件信息包含的具体内容不做限定。
在本发明实施例中,获取的小文件可以包括HDFS中的小文件,即已经落地到HDFS中的海量小文件中的任一一个或多个,还可以包括直接从终端设备传输过来的小文件(还未落地到HDFS中的小文件),需要说明的是,本发明实施例对小文件的来源不做限定。
S102、根据所述文件信息按照预设规则生成与所述小文件唯一对应的主键。
在本发明实施例中,根据S101获取的小文件的文件信息生成与小文件唯一对应的主键。示例性的,根据小文件的文件信息按照预设规则生成与小文件唯一对应的主键。可选的,小文件的文件信息包括文件名称、文件所在路径以及文件后缀,则可通过“MurMurHash(文件所在路径+文件名称+文件后缀)”的方式生成与小文件唯一对应的主键。这样设置的好处在于,在相同目录下不应该存储相同文件名称和相同后缀的文件,这样可以有效保证基于文件信息生成的与小文件对应的主键的唯一性。示例性的,对小文件的文件名称进行哈希变换,生成与文件名称对应的字符串,将该字符串与文件入库时间(时间戳的形式)及文件路径拼写成的最终的字符串,作为与小文件唯一对应的主键。当然,在实际的开发应用中,可根据实际的应用场景,根据小文件的文件信息基于预设规则生成与小文件对应的主键,只要能够保证小文件与主键的唯一对应性即可。
需要说明的是,在本发明实施例中,需要保证小文件与生成主键的唯一对应性,是因为在后续的操作步骤中,将小文件写入Hbase中后,小文件在Hbase中是一条完整的数据形式存在的,为了保证每条数据的唯一性,在生成与小文件对应的主键时,需避免不同小文件对应的主键的重复,因为,一旦两个小文件的主键重复后,后写入Hbase的文件生成的文件数据将会覆盖前写入的文件生成的文件数据,造成文件的丢失。
S103、基于所述主键将所述小文件写入预先创建的数据库Hbase表中。
在本发明实施例中,预先创建的数据库Hbase表用于存放小文件,其中,Hbase列簇任意,Hbase表中包含的字段列可根据实际需求进行设计,由于,Hbase是为了减轻HDFS的管理和存储负担而设计的,目的是在需要时,能够快速检索到待检索的小文件即可。因此,预先创建的Hbase中包含的字段列必须包含主键列,其中,主键列用于存储于小文件唯一对应的主键。可选的,预先创建的Hbase包含的字段列还可以包含文件名称(FileName)、文件所在路径(FilePath)、文件内容(FileInfo)、文件后缀(FileCatalog)及文件入库时间(ImportTime)中的任一一个或多个。
示例性的,基于主键将小文件写入预先创建的数据Hbase表中,例如,将小文件对应的主键写入Hbase中的主键列。可选的,基于主键以二进制流的形式将小文件写入预先创建的Hbase中。可选的,还可基于主键、文件名称、文件所在路径、文件内容、文件后缀(FileCatalog)及文件入库时间等文件信息,以二进制流的形式将小文件写入预先创建的Hbase中,生成与小文件对应的文件数据。
本发明实施例提供的文件存储方法,获取小文件的文件信息,其中,所述小文件的大小小于预设阈值,然后根据所述文件信息按照预设规则生成与所述小文件唯一对应的主键,并基于所述主键将所述小文件写入预先创建的数据库Hbase表中。通过采用上述技术方案,能够有效利用Hbase的高可靠性、高性能、面向列、可伸缩的分布式存储系统,实现对海量小文件列存储,以减轻HDFS对元数据管理的压力,达到HDFS存储资源的有效利用的效果。
实施例二
图2是本发明实施例二提供的一种文件存储方法的流程图。本实施例以上述实施例为基础进行优化,在本实施例中,该文件存储方法获取小文件的文件信息,包括:判断HDFS中的文件是否为小文件,若是,则获取HDFS中的小文件的文件信息;基于所述主键将所述小文件写入预先创建的数据库Hbase表中,包括:确定所述小文件在HDFS中的位置,并基于所述主键及所述小文件在HDFS中的位置,将所述HDFS中的小文件以二进制流的形式写入预先创建的数据库Hbase表中。在基于所述主键及所述小文件在HDFS中的位置,将所述HDFS中小文件以二进制流的形式写入预先创建的数据库Hbase表中之后,还包括:关闭二进制流,并删除所述HDFS中的小文件。相应的,本实施例的方法具体包括:
S201、判断HDFS中的文件是否为小文件,若是,则获取HDFS中的小文件的文件信息。
在本发明实施例中,从HDFS中的海量文件中,随机获取至少一个文件,判断所述文件是否为小文件。例如,获取文件的大小,判断文件的大小是否小于预设阈值,文件的大小小于预设阈值,则确定文件为小文件。若确定HDFS中的文件为小文件时,获取HDFS中的小文件的文件信息。其中,HDFS中的小文件的文件信息可以包括文件名称、文件所在路径、文件后缀、文件入库时间中的至少一种。当然,文件信息还可以包括文件大小和文件的URL等相关信息。
S202、根据所述文件信息按照预设规则生成与所述小文件唯一对应的主键。
S203、确定所述小文件在HDFS中的位置,并基于所述主键及所述小文件在HDFS中的位置,将所述HDFS中的小文件以二进制流的形式写入预先创建的数据库Hbase表中。
在本发明实施例中,确定小文件在HDFS中的具体位置,根据小文件在HDFS中的位置,基于小文件的主键将HDFS中的小文件以二进制流的形式写入预先创建的数据库Hbase表中。可选的,预先创建的Hbase包含的字段列中还可以包括小文件在HDFS中的位置信息,基于小文件主键将HDFS中的小文件以二进制流的形式写入Hbase中的主键字段列,基于小文件在HDFS中的位置,将HDFS中的小文件以二进制流的形式写入Hbase中的小文件在HDFS中的位置信息的字段列。
S204、关闭二进制流,并删除所述HDFS中的小文件。
示例性的,为了避免不间断的二进制流对HDFS及Hbase的工作性能的影响,在将HDFS中的小文件写入Hbase后,关闭二进制流。另外,在将HDFS中的小文件写入Hbase后,删除HDFS中的小文件,这样可以有效减少HDFS中的小文件对HDFS中的NameNode内存的消耗。
本发明实施例提供的文件存储方法,获取HDFS中的小文件的文件信息,其中,所述小文件的大小小于预设阈值,然后根据所述文件信息按照预设规则生成与所述小文件唯一对应的主键,并确定所述小文件在HDFS中的位置,并基于所述主键及所述小文件在HDFS中的位置,将所述HDFS中的小文件以二进制流的形式写入预先创建的数据库Hbase表中,最后关闭二进制流,并删除所述HDFS中的小文件。通过采用上述技术方案,能够有效利用Hbase的高可靠性、高性能、面向列、可伸缩的分布式存储系统,实现对HDFS中海量小文件列存储,以减轻HDFS对元数据管理的压力,尤其可以减少HDFS中的小文件对HDFS中的NameNode内存的消耗,达到HDFS存储资源的有效利用的效果。
实施例三
图3是本发明实施例三提供的一种文件存储方法的流程图。本实施例以上述实施例为基础进行优化,在本实施例中,所述数据库Hbase表包括内存空间;基于所述主键将所述小文件写入预先创建的数据库Hbase表中,包括:基于所述主键将所述小文件写入预先创建的数据库Hbase表中的内存空间;当所述内存空间的当前可用空间小于预设内存阈值时,将所述小文件以存储文件的形式写入HDFS中。相应的,本实施例的方法具体包括:
S301、获取小文件的文件信息,其中,所述小文件的大小小于预设阈值。
S302、根据所述文件信息按照预设规则生成与所述小文件唯一对应的主键。
S303、基于所述主键将所述小文件写入预先创建的数据库Hbase表中的内存空间。
在本发明实施例中,Hbase的存储核心为HStore,其中,HStore由两部分组成,一部分是内存空间MemStore,一部分是存储文件SotreFiles。当基于主键将小文件写入预先创建的Hbase时,首先会将小文件写入Hbase中的内存空间MemStore中,即基于主键将小文件写入预先创建的数据库Hbase表中的内存空间。其中,Hbase中的内存空间MemStore大小是固定的、有限的,通常为128M。
S304、当所述内存空间的当前可用空间小于预设内存阈值时,将所述小文件以存储文件的形式写入HDFS中。
在本发明实施例中,随着大量小文件不断地写入Hbase中的内存空间,Hbase中的内存空间的存储空间不断被占用,剩余的可用空间不断减少,当内存空间的当前可用空间小于预设内存阈值时,将所述小文件以存储文件的形式写入HDFS中。其中,预设内存阈值可为内存空间的总存储大小的20%,例如,内存空间的大小为128M,则预设内存阈值可设置为128*20%,也即,当内存空间的当前可用空间小于内存空间的总存储大小的20%时,将所述小文件以存储文件的形式写入HDFS中。
示例性的,当内存空间的当前可用空间小于预设内存阈值时,将小文件存储至多个存储文件中的任一存储文件中,直至当前存储文件的存储空间使用完毕后,将所述小文件存储至下一个存储文件中,这样会不断生成多个存储空间已满的存储文件。示例性的,当多个存储文件的存储空间均使用完毕后,即多个存储文件中均已存储满多个小文件,则将多个存储文件写入HDFS中,这样可以有效实现对HDFS中海量小文件的合并。可以理解的是,Hbase是与HDFS连接的数据库,Hbase中的所有数据文件最终都会存储在HDFS文件系统上,也就是说,小文件写入Hbase后,最终还是落地在HDFS文件系统上。
可选的,当多个存储文件的存储空间均使用完毕后,可直接将多个存储文件作为目标存储文件,并将多个存储文件写入HDFS中。图4为本发明实施例提供的文件在Hbase内部存储过程示意图。Hbase的最核心部分为区域服务器RegionServer,其中,RegionServer主要用于响应I/O请求,向HDFS的文件系统中读写数据。也即,Hbase通过RegionServer与HDFS的文件系统进行交互。其中,Hbase中包含多个RegionServer,每个RegionServer包含多个区域模块,每个区域模块中包含多个存储区域Store,而每个Store均包含一个内存空间MemStore和多个储存文件StoreFile。如图4所示,当通过本发明实施例提供的技术方案,使得Store中的多个存储文件StoreFile的存储空间使用完毕后,可将多个存储文件StoreFile写入HDFS的文件系统中,如写入HDFS的DataNode中,为了满足hadoop集群的工作需求,避免写入DataNode中文件的丢失,造成存储到StoreFile中存储的各个小文件丢失无法找回,可将每个存储空间使用完毕的StoreFile写入HDFS中的至少两个DataNode中。
本发明实施例提供的文件存储方法,获取小文件的文件信息,其中,所述小文件的大小小于预设阈值,然后根据所述文件信息按照预设规则生成与所述小文件唯一对应的主键,并基于所述主键将所述小文件写入预先创建的数据库Hbase表中的内存空间,当所述内存空间的当前可用空间小于预设内存阈值时,将所述小文件以存储文件的形式写入HDFS中。通过采用上述技术方案,能够有效利用Hbase的高可靠性、高性能、面向列、可伸缩的分布式存储系统,实现对海量小文件列存储,并实现了对HDFS中海量小文件的合并处理,从而减轻了HDFS对元数据管理的压力,达到HDFS存储资源的有效利用的效果,而且还有效规避了HDFS自带的几种小文件合并方式的通病,即合并的大文件一旦形成,不支持复写和追加的不足。
实施例四
图5为本发明实施例提供的文件检索方法的流程示意图。在本发明实施例提供的上述文件存储方法的基础上,本发明实施提供了一种文件检索方法,该方法可适用于服务器对小文件进行检索的情况,可以由文件检索装置执行,其中该装置可由软件和/或硬件实现,一般可集成在服务器中。如图5所示,该方法包括:
S501、获取待检索文件的文件信息,并根据所述文件信息按照预设规则生成与所述待检索文件对应的主键。
在本发明实施例中,当需要对HDFS中的小文件进行检索时,获取待检索文件的文件信息。其中,待检索文件的文件信息可以包括文件名称、文件所在路径、文件后缀、文件入库时间中的至少一种。当然,待检索文件的文件信息还可以包括文件大小和文件的URL等相关信息。需要说明的是,本发明实施例对待检索文件的文件信息包含的具体内容不做限定。
根据待检索文件的文件信息按照预设规则生成与所述待检索文件对应的主键,其中,获取的待检索文件的文件信息,与上述实施例提供的文件存储方法中,获取的小文件的文件信息相同,根据待检索文件的文件信息生成与待检索文件对应的主键时的预设规则,与上述实施例提供的文件存储方法中,根据小文件的文件信息生成与小文件唯一对应的主键时的预设规则相同。
S502、基于所述主键在预先存储的数据库Hbase表中,检索与所述主键对应的文件数据。
在本发明实施例中,基于S501确定的待检索文件对应的主键,在预先存储的Hbase中进行检索,查找与主键对应的文件数据。其中,检索到的与待检索文件对应的文件数据包括待检索文件的主键、待检索文件的名称、待检索文件所在的路径、待检索文件的后缀、待检索文件的名称以及待检索文件的内容在Hbase中具体的位置(如在Hbase中的具体字段列的具体位置)及对应的相关信息。
S503、确定所述文件数据对应的文件内容及文件后缀信息,并基于所述文件内容和所述文件后缀信息,将所述文件内容转换为对应的文件并输出。
示例性的,读取文件数据的文件内容及文件的后缀所在Hbase中的字段列,从而确定出文件数据对应的文件内容及文件的后缀信息。然后,基于文件内容和文件后缀信息,将文件内容转换为对应的文件,并输出。
本发明实施例提供的文件检索方法,获取待检索文件的文件信息,并根据所述文件信息按照预设规则生成与所述待检索文件对应的主键,并基于所述主键在预先存储的数据库Hbase表中,检索与所述主键对应的文件数据,最后确定所述文件数据对应的文件内容及文件后缀信息,并基于所述文件内容和所述文件后缀信息,将所述文件内容转换为对应的文件并输出。通过采用上述技术方案,能够简单、快速、准确地对基于Hbase存储的小文件进行检索,满足用户需求。
实施例五
图6是本发明实施例五提供的一种文件存储装置的结构示意图。如图6所示,所述装置包括:文件信息获取模块601、主键生成模块602及文件写入模块603,其中:
文件信息获取模块601,用于获取小文件的文件信息,其中,所述小文件的大小小于预设阈值;
主键生成模块602,用于根据所述文件信息按照预设规则生成与所述小文件唯一对应的主键;
文件写入模块603,用于基于所述主键将所述小文件写入预先创建的数据库Hbase表中。
本发明实施例提供的文件存储装置,获取小文件的文件信息,其中,所述小文件的大小小于预设阈值,然后根据所述文件信息按照预设规则生成与所述小文件唯一对应的主键,并基于所述主键将所述小文件写入预先创建的数据库Hbase表中。通过采用上述技术方案,能够有效利用Hbase的高可靠性、高性能、面向列、可伸缩的分布式存储系统,实现对海量小文件列存储,以减轻HDFS对元数据管理的压力,达到HDFS存储资源的有效利用的效果。
可选的,所述文件信息获取模块,用于:
判断HDFS中的文件是否为小文件,若是,则获取HDFS中的小文件的文件信息;
相应的,所述文件写入模块,包括:
文件写入单元,用于确定所述小文件在HDFS中的位置,并基于所述主键及所述小文件在HDFS中的位置,将所述HDFS中的小文件以二进制流的形式写入预先创建的数据库Hbase表中。
可选的,该装置还包括:
文件删除模块,用于在基于所述主键及所述小文件在HDFS中的位置,将所述HDFS中小文件以二进制流的形式写入预先创建的数据库Hbase表中之后,关闭二进制流,并删除所述HDFS中的小文件。
可选的,所述数据库Hbase表包括内存空间;
所述文件写入模块,用于:
基于所述主键将所述小文件写入预先创建的数据库Hbase表中的内存空间;
当所述内存空间的当前可用空间小于预设内存阈值时,将所述小文件以存储文件的形式写入HDFS中。
可选的,所述文件信息包括文件名称、文件所在路径、文件后缀、文件入库时间中的至少一种。
实施例六
图7是本发明实施例六提供的一种文件检索装置的结构示意图。如图7所示,所述装置包括:文件信息处理模块701、文件数据检索模块702及文件转换模块703,其中:
文件信息处理模块701,用于获取待检索文件的文件信息,并根据所述文件信息按照预设规则生成与所述待检索文件对应的主键;
文件数据检索模块702,用于基于所述主键在预先存储的数据库Hbase表中,检索与所述主键对应的文件数据;
文件转换模块703,用于确定所述文件数据对应的文件内容及文件后缀信息,并基于所述文件内容和所述文件后缀信息,将所述文件内容转换为对应的文件并输出。
本发明实施例提供的文件检索装置,获取待检索文件的文件信息,并根据所述文件信息按照预设规则生成与所述待检索文件对应的主键,并基于所述主键在预先存储的数据库Hbase表中,检索与所述主键对应的文件数据,最后确定所述文件数据对应的文件内容及文件后缀信息,并基于所述文件内容和所述文件后缀信息,将所述文件内容转换为对应的文件并输出。通过采用上述技术方案,能够简单、快速、准确地对基于Hbase存储的小文件进行检索,满足用户需求。
实施例七
本发明实施例七提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于文件存储方法或者文件检索方法
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDRRAM、SRAM、EDORAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统。第二计算机系统可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的文件存储操作或者文件检索操作,还可以执行本发明任意实施例所提供的文件存储方法或者文件检索方法中的相关操作。
实施例八
图8为本发明实施例八提供的一种服务器的结构示意图。图8显示的服务器仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图8所示,本发明实施例六提供的服务器,包括处理器81、存储器82、输入装置83和输出装置84;服务器中处理器81的数量可以是一个或多个,图8中以一个处理器81为例;服务器中的处理器81、存储器82、输入装置83和输出装置84可以通过总线或其他方式连接,图8中以通过总线连接为例。
存储器82作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的基于蓝牙的工作模式配置方法对应的程序指令/模块(例如,文件存储装置中的文件信息获取模块601、主键生成模块602及文件写入模块603;或者,文件检索装置中的文件信息处理模块701、文件数据检索模块702及文件转换模块703)。处理器81通过运行存储在存储器82中的软件程序、指令以及模块,从而执行各种功能应用以及文件处理,例如实现本发明实施例所提供的应用于服务器的文件存储方法或者文件检索方法。
存储器82可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器82可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器82可进一步包括相对于处理器81远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置83可用于接收用户输入的数字或字符信息,以产生与服务器的用户设置以及功能控制有关的键信号输入。输出装置84可包括显示屏等显示设备。
上述实施例中提供的文件存储、检索装置、存储介质及服务器可执行本发明实施例所提供的对应的文件存储、检索方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的文件存储、检索方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种文件存储方法,其特征在于,包括:
获取小文件的文件信息,其中,所述小文件的大小小于预设阈值;
根据所述文件信息按照预设规则生成与所述小文件唯一对应的主键;
基于所述主键将所述小文件写入预先创建的数据库Hbase表中。
2.根据权利要求1所述的方法,其特征在于,获取小文件的文件信息,包括:
判断HDFS中的文件是否为小文件,若是,则获取HDFS中的小文件的文件信息;
基于所述主键将所述小文件写入预先创建的数据库Hbase表中,包括:
确定所述小文件在HDFS中的位置,并基于所述主键及所述小文件在HDFS中的位置,将所述HDFS中的小文件以二进制流的形式写入预先创建的数据库Hbase表中。
3.根据权利要求2所述的方法,其特征在于,在基于所述主键及所述小文件在HDFS中的位置,将所述HDFS中小文件以二进制流的形式写入预先创建的数据库Hbase表中之后,还包括:
关闭二进制流,并删除所述HDFS中的小文件。
4.根据权利要求1所述的方法,其特征在于,所述数据库Hbase表包括内存空间;
基于所述主键将所述小文件写入预先创建的数据库Hbase表中,包括:
基于所述主键将所述小文件写入预先创建的数据库Hbase表中的内存空间;
当所述内存空间的当前可用空间小于预设内存阈值时,将所述小文件以存储文件的形式写入HDFS中。
5.根据权利要求1-4任一所述的方法,其特征在于,所述文件信息包括文件名称、文件所在路径、文件后缀、文件入库时间中的至少一种。
6.一种文件检索方法,其特征在于,包括:
获取待检索文件的文件信息,并根据所述文件信息按照预设规则生成与所述待检索文件对应的主键;
基于所述主键在预先存储的数据库Hbase表中,检索与所述主键对应的文件数据;
确定所述文件数据对应的文件内容及文件后缀信息,并基于所述文件内容和所述文件后缀信息,将所述文件内容转换为对应的文件并输出。
7.一种文件存储装置,其特征在于,包括:
文件信息获取模块,用于获取小文件的文件信息,其中,所述小文件的大小小于预设阈值;
主键生成模块,用于根据所述文件信息按照预设规则生成与所述小文件唯一对应的主键;
文件写入模块,用于基于所述主键将所述小文件写入预先创建的数据库Hbase表中。
8.一种文件检索装置,其特征在于,包括:
文件信息处理模块,用于获取待检索文件的文件信息,并根据所述文件信息按照预设规则生成与所述待检索文件对应的主键;
文件数据检索模块,用于基于所述主键在预先存储的数据库Hbase表中,检索与所述主键对应的文件数据;
文件转换模块,用于确定所述文件数据对应的文件内容及文件后缀信息,并基于所述文件内容和所述文件后缀信息,将所述文件内容转换为对应的文件并输出。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一所述的文件存储方法或者权利要求6所述的文件检索方法。
10.一种服务器,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5任一所述的文件存储方法或者权利要求6所述的文件检索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811369039.5A CN109299059A (zh) | 2018-11-16 | 2018-11-16 | 文件存储、检索方法、装置、存储介质及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811369039.5A CN109299059A (zh) | 2018-11-16 | 2018-11-16 | 文件存储、检索方法、装置、存储介质及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109299059A true CN109299059A (zh) | 2019-02-01 |
Family
ID=65144254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811369039.5A Pending CN109299059A (zh) | 2018-11-16 | 2018-11-16 | 文件存储、检索方法、装置、存储介质及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109299059A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110633261A (zh) * | 2019-09-02 | 2019-12-31 | 恩亿科(北京)数据科技有限公司 | 一种图片存储方法、图片查询方法及装置 |
CN113011413A (zh) * | 2021-04-15 | 2021-06-22 | 深圳市鹰硕云科技有限公司 | 基于智能笔手写图像的处理方法、装置、系统及存储介质 |
CN113190527A (zh) * | 2021-05-19 | 2021-07-30 | 重庆忽米网络科技有限公司 | 一种基于hdfs的数据转换存储方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102970378A (zh) * | 2012-12-13 | 2013-03-13 | 中国电子科技集团公司第十五研究所 | 二进制数据优化传输系统 |
CN103647850A (zh) * | 2013-12-25 | 2014-03-19 | 北京京东尚科信息技术有限公司 | 一种分布式版本控制系统的数据处理方法、设备及系统 |
CN104915450A (zh) * | 2015-07-01 | 2015-09-16 | 武汉大学 | 一种基于HBase的大数据存储与检索方法及系统 |
CN105404652A (zh) * | 2015-10-29 | 2016-03-16 | 河海大学 | 一种基于hdfs的海量小文件处理方法 |
CN107729432A (zh) * | 2017-09-29 | 2018-02-23 | 浪潮软件股份有限公司 | 一种分布式小文件的存储、读取方法、装置及存取系统 |
CN108053863A (zh) * | 2017-12-22 | 2018-05-18 | 中国人民解放军第三军医大学第附属医院 | 适合大小文件的海量医疗数据存储系统及数据存储方法 |
-
2018
- 2018-11-16 CN CN201811369039.5A patent/CN109299059A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102970378A (zh) * | 2012-12-13 | 2013-03-13 | 中国电子科技集团公司第十五研究所 | 二进制数据优化传输系统 |
CN103647850A (zh) * | 2013-12-25 | 2014-03-19 | 北京京东尚科信息技术有限公司 | 一种分布式版本控制系统的数据处理方法、设备及系统 |
CN104915450A (zh) * | 2015-07-01 | 2015-09-16 | 武汉大学 | 一种基于HBase的大数据存储与检索方法及系统 |
CN105404652A (zh) * | 2015-10-29 | 2016-03-16 | 河海大学 | 一种基于hdfs的海量小文件处理方法 |
CN107729432A (zh) * | 2017-09-29 | 2018-02-23 | 浪潮软件股份有限公司 | 一种分布式小文件的存储、读取方法、装置及存取系统 |
CN108053863A (zh) * | 2017-12-22 | 2018-05-18 | 中国人民解放军第三军医大学第附属医院 | 适合大小文件的海量医疗数据存储系统及数据存储方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110633261A (zh) * | 2019-09-02 | 2019-12-31 | 恩亿科(北京)数据科技有限公司 | 一种图片存储方法、图片查询方法及装置 |
CN113011413A (zh) * | 2021-04-15 | 2021-06-22 | 深圳市鹰硕云科技有限公司 | 基于智能笔手写图像的处理方法、装置、系统及存储介质 |
CN113190527A (zh) * | 2021-05-19 | 2021-07-30 | 重庆忽米网络科技有限公司 | 一种基于hdfs的数据转换存储方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6774499B2 (ja) | オフラインでのハイブリッドアプリケーションへのアクセスの提供 | |
CN103020315B (zh) | 一种基于主从分布式文件系统的海量小文件存储方法 | |
Chandrasekar et al. | A novel indexing scheme for efficient handling of small files in hadoop distributed file system | |
US9628438B2 (en) | Consistent ring namespaces facilitating data storage and organization in network infrastructures | |
US8677366B2 (en) | Systems and methods for processing hierarchical data in a map-reduce framework | |
US11914585B2 (en) | Servicing queries of a hybrid event index | |
CN103282899B (zh) | 文件系统中数据的存储方法、访问方法及装置 | |
CN103647797A (zh) | 一种分布式文件系统及其数据访问方法 | |
JP2012098934A (ja) | 文書管理システム、文書管理システムの制御方法、プログラム | |
US20170193039A1 (en) | Servicing queries of an event log | |
CN104156381A (zh) | Hadoop分布式文件系统的副本存取方法、装置和Hadoop分布式文件系统 | |
CN103002027A (zh) | 基于键值对系统实现树形目录结构的数据存储系统及方法 | |
US9900386B2 (en) | Provisioning data to distributed computing systems | |
CN109542907A (zh) | 数据库缓存构建方法、装置、计算机设备以及存储介质 | |
CN109299059A (zh) | 文件存储、检索方法、装置、存储介质及服务器 | |
CN110347651A (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
US9110820B1 (en) | Hybrid data storage system in an HPC exascale environment | |
CN106570113B (zh) | 一种海量矢量切片数据云存储方法及系统 | |
CN109684282A (zh) | 一种构建元数据缓存的方法及装置 | |
CN109408689A (zh) | 数据获取方法、装置、系统及电子设备 | |
Liu et al. | An improved hadoop data load balancing algorithm | |
Zhai et al. | Hadoop perfect file: A fast and memory-efficient metadata access archive file to face small files problem in hdfs | |
JP2015528957A (ja) | 分散ファイルシステム、ファイルアクセス方法及びクライアントデバイス | |
CN110502472A (zh) | 一种大量小文件的云存储优化方法及其系统 | |
CN110020272A (zh) | 缓存方法、装置以及计算机存储介质 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190201 |
|
RJ01 | Rejection of invention patent application after publication |