CN103246700B - 基于HBase的海量小文件低延时存储方法 - Google Patents
基于HBase的海量小文件低延时存储方法 Download PDFInfo
- Publication number
- CN103246700B CN103246700B CN201310112130.XA CN201310112130A CN103246700B CN 103246700 B CN103246700 B CN 103246700B CN 201310112130 A CN201310112130 A CN 201310112130A CN 103246700 B CN103246700 B CN 103246700B
- Authority
- CN
- China
- Prior art keywords
- small documents
- row
- hbase
- file
- write
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于HBase的海量小文件低延时存储方法,其通过在Hadoop、HBase环境下建立一种包括一个行主键及两个列族的小文件表,从而建立适合小文件存储环境,并配套包括小文件写入、小文件续写及小文件读取应用流程,进而实现海量小文件的合理存储和低延时性读写,满足实际需求。
Description
技术领域
本发明涉及一种,尤其是指一种基于HBase的海量小文件低延时存储方法。
背景技术
Hadoop提供的分布式文件***(HDFS-Hadoop Distributed File System)作为一种低成本的分布式存储解决方案,近年来得到广泛的应用。
HDFS的设计目标主要是针对大文件,比如几百MB、上GB的大文件,不适合存储小文件,原因是作为Hadoop主数据服务的NameNode节点,需要在内存中保存所有文件的关键信息,据估算,一千万个文件需要占用2~3GB的内存,可想而知,更多的文件带来的内存问题将给目前主流的服务器硬件带来很大压力,甚至不能通过硬件增配解决问题。
另外,HDFS偏向于高吞吐量的读写做优化,带来的负面影响是有一定的延时性,比如文件写入后,不能马上反应到其他正在读取该文件的客户端上,要等HDFS同步之后才行。所以HDFS本身不适合用于存储有低延时要求的数据。
目前已有一些方法用于解决HDFS不适合存储小文件的问题,其中Hadoop官方的解决办法包括HAR(Hadoop Archives),即把一批小文件归档到一个大文件中存储,但是存在很多问题,一是小文件的URI(统一资源标识符)变了,对构建于HDFS之上的应用***不友好,应用***需要重新修改以适应这个变化;二是这种归档不支持压缩;三是归档文件中的内容无法修改,比如往归档文件中新增或者删除一个小文件,需要重新进行归档。
另外一些解决办法是通过Hadoop提供的SequenceFile、MapFile,把小文件先组合成一个大文件进行存储,但是也存在一些问题,比如无法简单快速的列出小文件目录,并且这个解决办法主要是面向Java语言的,对其他语言的支持不好。
已有的专利中,《一种基于Hadoop的海量非独立小文件关联存储方法》(专利申请号:201110312671.8),《一种基于Hadoop的海量可归类小文件关联存储方法》(专利申请号:201110312694.9),也是采用先组合成大文件的方法,对上层应用***的开发有要求,或者说无法对上层应用完全透明。另外也不具备低延时性的特性。
发明内容
本发明的目的在于克服了上述缺陷,提供一种可实现海量小文件的合理存储和低延时性,并且对上层应用***完全透明的基于HBase的海量小文件低延时存储方法。
本发明的目的是这样实现的:一种基于HBase的海量小文件低延时存储方法,其特征在于:在Hadoop、HBase环境下建立小文件存储环境后提供包括小文件写入、小文件续写及小文件读取应用的步骤;其中,建立小文件存储环境,包括,
建立HBase小文件表,在HBase数据库中创建一个小文件表的步骤;所述小文件表如下,
所述行主键的值为一个随机生成的唯一的字符串;
所述列族i,用于对应存储小文件根据预定义的规则分为N个切片后的每个切片的长度信息及文件内容的字节流;
所述列族m,用于记录本行记录的锁信息,用于在并发写入时判定行是否正在被别的线程或进程锁定;
对小文件表进行预分区(分区策略采用16进制表示的字符串)的步骤;以及
对小文件表开启行的布隆过滤器的步骤。
上述方法中,所述行主键的值通过取UUID值,对此值做MD5摘要计算,再取摘要值的十六进制表示形成的字符串;所述列族i的键名由切片序列号和当前切片长度组成,键值内存储有当前切片序列号对应的切片内容的字节数组;
上述方法中,所述小文件写入应用包括步骤,
A1)、初始化小文件输出流,获得目标小文件的引用后在小文件输出流内部开辟内存缓冲区,向输出流传递目标小文件的URI;所述URI中包含了写入小文件表的目标行主键;所述缓冲区空间不小于定义的小文件切片大小;
A2)、检查小文件表中列族m的键名锁的键值,若为否,则行可操作,新增锁;
A3)、从源文件中读取字节流,输入到缓冲区中,当一个缓冲区被写满后,将此时缓冲区中的内容形成新的切片,并获得切片序列号,并获取该切片的真实字节长度,与切片序列号共同预组装为HBase小文件表i列族下的键名,而切片的内容存储到对应的键值中;
A4)、连接HBase,将新的完整切片输出到小文件表中,小文件表中列族i动态扩展出新的一个列用于存储该新切片;
A5)、重置缓冲区,回到步骤A2;
A6)、源文件所有内容读取完毕后,在小文件输出流被关闭前,将缓冲区中剩余的未达到切片定义大小阈值的内容组装为此次写入的最后一个切片,输出到HBase小文件表相同的行中;
A7)、释放锁;
最佳的,所述步骤A7后还可包括步骤,
A8)、通过小文件存储的行主键,配合HBase的KeyOnlyFilter抓取对应行i列族下的所有列名,进而从列名中解析出目前状态下已有的所有切片序列号;
A9)、判定小文件行主键对应的m列族下锁的键值为是/否,若否则继续步骤;
A10)、排序得到当前最大的切片序列号;
A11)、递增最大序列号并开始切片写入,后续与完整小文件写入流程相同;
上述方法中,所述小文件读取应用包括步骤,
B1)、初始化小文件输入流,小文件输入流内部开辟缓冲区,获得HBase小文件表的读写权限;所述缓冲区空间不小于定义的小文件最大切片大小;
B2)、根据欲读取的小文件在小文件表中的行主键,查询对应行的列族i下的所有列信息;利用HBase的KeyOnlyFilter,仅从小文件表读取列族i的键名;
B3)、当应用层对小文件输入流中读取数据时,小文件输入流检查其缓冲区内是否有可用的数据,如果没有可用数据,诱发小文件输入流流向HBase请求新的切片数据;
B4)、应用层消费完当前缓冲区的数据,返回步骤B2;
B5)、当小文件输入流定位并处理完小文件对应的最后一个切片后,返回结束信号完成整个小文件的读取;
上述方法中,所述小文件删除操作,依赖HBase对需删除小文件的行主键进行快速定位,然后直接使用HBase的API删除对应行;
上述方法中,建立一个文件存储抽象层,用于接收来自应用层的文件大小报告,并根据预定义的大小文件区分阈值构建对应的URI后返回给应用层,而后接收应用层送来的欲进行读/写的文件输入流及URI传递来时解析URI,并自动将文件的读/写操作对应指向HDFS文件***或者HBase的小文件表中;
上述中,所述阈值大小为10兆字节。
本发明的有益效果在于通过在Hadoop、HBase环境下建立一种适合小文件存储环境,从而配套包括小文件写入、小文件续写及小文件读取应用流程,进而实现海量小文件的合理存储和低延时性读写,满足实际需求。
附图说明
下面结合附图详述本发明的具体结构
图1为本发明方法中上层应用大小文件存储抽象图;
图2为本发明方法中写入小文件流程示意图;
图3为本发明方法中读取小文件流程示意图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明提供了一种基于HBase的海量小文件低延时存储方法,其通过在Hadoop、HBase环境下建立小文件存储环境后供包括小文件写入、小文件续写及小文件读取应用。
其中的小文件存储环境的搭建包括步骤:
一、准备Hadoop、HBase环境
本方法基于Hadoop、HBase实现,因此首先需要先部署Hadoop、HBase环境。
本方法构建于HBase之上。HBase是构建于Hadoop之上的一个分布式、面向列的数据库,原先也是Hadoop的一部分,现在独立为一个Apache的顶级项目。HBase不适合直接用来存储文件,它的设计目标是用于存储结构化数据,同时具备低延时的特性。HBase的数据可以保存在很多文件***中,HDFS是最佳的选择。
二、建立HBase小文件表
在HBase数据库中创建一个小文件表,表结构设计如下:
其中,行主键(键名:rowkey)的值为一个随机生成的、唯一的字符串:取UUID(Universally Unique Identifier)值,对此值做MD5摘要计算,之后再取摘要值的十六进制表示的字符串。如此处理行主键的目的是可以充分利用HBase已有的表分区(region splitting)策略,使行分散到不同的region中,避免region热点问题。
该表有且仅有2个列族(column family):
列族i:用于存储小文件切片后的切片字节流(文件内容)及长度信息。
列族m:用于记录本行记录的锁信息,用于在并发写入时判定行是否正在被别的线程或进程锁定。
一个完整的小文件在该表中被一个行完整表示。在写入该表时,文件会根据预定义的规则切分为N个切片,每个切片将获得递增的切片序列号。切片序列号、切片大小、切片完整的字节数组将被该表中i列族下的一个列完整表示。
切片序列号、切片大小被存储为列名。切片内容(字节数组)被存储为列值。
列名的前两个字节为切片序列号。切片序列号为短整型(short类型),短整型的正值部分最大可以提供32767个切片序列号,对于小文件来说此切片上限已经足够。递增的切片序列号一方面用于区分不同的切片,另一方面用于为小文件读取时切片重新组合为完整文件提供组装顺序。
列名余下的字节部分存储的是当前切片的实际长度。在列值中存储此切片大小,在计算整个小文件大小时,可以仅从该表读取列名,而不用读取真正的切片列值,避免加载整个切片完整字节数组的内存开销。
列值存储切片内容(字节数组),每个小文件被切分成多个大小均等的切片,保存其中。切片大小可以根据需要定制,比如4KB、128KB、512KB、1MB。
列族m下仅有一个名为lock的列,用于提供行锁信息。当小文件正在写入时存在此列,文件写入结束时锁释放,此列被删除。使用自定义列族下的列存储行锁信息,较HBase原生的行锁机制更具灵活性。
三、对小文件表预分区
本方法需要对小文件表采用16进制表示的字符串预分区策略(RegionSplitter.HexStringSplit)。基于小文件表HEX(MD5(UUID))的行主键生成方式,小文件存储到HBase中将有效的均匀分配到不同的region上处理,预分区后可以防止单region过热的问题,通过合理的预分区,可以有效的把读写请求分散到不同的分区上,提升并发读写能力,从而提升小文件并发读写性能。
随着存储空间的增长,可以根据需要在已有的分区上做进一步手工分区处理。
四、对小文件表开启布隆过滤器(Bloom Filter)
布隆过滤器是一种基于哈希的快速查找方法,它可以做确定的排除和可能的推测。HBase支持对表开启布隆过滤器。本方法对小文件表开启行的布隆过滤器,确保随机读取的性能。
经过上述小文件存储环境的搭建后,即可进行基于HBase的海量小文件的读、写应用操作。为了更好的实现海量小文件的读写操作对上层应用***完全透明,在上述环境搭建基础上还需要对大小文件存储进行抽象层的处理,具体的:
参见图1,为上层应用***提供一个通过文件存储抽象层,文件最终被存储在HDFS文件***中还是存储在HBase小文件表中,对于上层应用是透明的。上层应用只需要无区别的关注于文件存储的通用接口。步骤如下:
1、应用层将文件大小告知存储抽象层。抽象层内部根据预定义的大小文件区分阈值,构建对应的URI,返回给应用层。
2、应用层无需关注URI的具体内容,将欲进行存储的文件输入流及URI传递给抽象存储方法。抽象层内部会解析URI自动将文件存储到HDFS文件***或者HBase小文件表中。
例如,存储于HDFS的URI以hdfs://开头,存储于HBase小文件表的URI以hbase://开头。
上述放发中,通过为上层应用***提供了一个文件存储抽象层,自动根据文件大小判断存储位置,大于设定阀值(例如10MB)的,存储到HDFS,URI以hdfs://标识;小等于设定阀值的,存储到HBase,URI以hbase://标识。以下说明小于设定阀值(即小文件)存储到HBase中的处理方法。小文件是定向存储到HBase中的,HBase本身具备低延时的特性,所以本方法也实现了小文件储存的低延时性。
本发明还提供了一套标准的小文件I/O接口方法,包括小文件创建、读取、续写、删除、获得文件大小、能否写入、能否读取、是否存在。继承了HBase低延时的读写特性,提供了低内存开销的I/O流写入接口(原生HBase API不支持流写入)。具体的:
小文件写入应用
写入HBase小文件表通过一个自定义的小文件输出流,完成小文件字节流的切片及向HBase进行存储的过程。写入过程可以使用正常的文件流形式,内存开销等于切片大小,相当于标准I/O的缓冲大小。
参见图2小文件写入的逻辑流程如下:
1、获得目标小文件的引用,准备进行写入。
2、初始化小文件输出流。小文件输出流内部开辟内存缓冲区,缓冲区空间与定义的小文件切片大小相同。向小文件输出流传递目标小文件的URI(通过“上层应用文件存储抽象”产生)。URI中包含了写入小文件表的目标行主键(rowkey)。
3、检查行锁,如可写,新增行锁,即小文件表中列族m的lock列。
4、从源文件中读取字节流,输入到缓冲区中。当一个缓冲区被写满后(即形成了一个新的完整切片),其内容形成新的切片,获得切片序列号。从此切片获取其真实字节长度,与切片序列号共同预组装为HBase小文件表i列族下的列名(键名),切片的内容存储到对应的列值(键值)中。
5、连接HBase,将新的完整切片输出到小文件表中。小文件表对应行将动态扩展出新的一个列(属于列族i)用于存储新切片。
6、重置缓冲区,回到步骤3。
7、源文件所有内容读取完毕后,在输入流被关闭前,将缓冲区中剩余的未达到切片定义大小阈值的内容组装为此次写入的最后一个切片,输出到HBase小文件表相同的行中。
8、释放行锁。
小文件续写应用
此外,本方法还支持对已有小文件进行追加写入,绕过了HBase普通列只能整存整取的限制。
续写小文件的逻辑流程续上,如下:
9、通过小文件存储的行主键,配合HBase的KeyOnlyFilter抓取对应行i列族下的所有列名。进而从列名中解析出目前状态下已有的所有切片序列号。
10、判定小文件能否写入。根据小文件表结构设计,HBase小文件表的m列族下将记录行锁。通过判定小文件行主键对应的m列族下行锁是否存在,可以直接判定小文件是否可以写入;
11、排序得到当前最大的切片序列号。
12、递增最大序列号并开始切片写入,后续与完整小文件写入流程相同。
小文件读取应用
小文件的读取,即从HBase小文件表中读取对应行中读取所有的列(切片),并将切片重新按顺序组装为完整小文件的过程。读出过程可以使用正常的文件流形式,内存开销等于切片大小,相当于标准I/O的缓冲大小。
参见图3,小文件读取的逻辑流程如下:
1、初始化小文件输入流。输入流内部开辟缓冲区,缓冲区空间与定义的小文件最大切片大小相同。获得HBase小文件表的读写权限。
2、根据欲读取的小文件行主键,查询对应行i列族下的所有列信息。
利用HBase提供的KeyOnlyFilter,仅从小文件表读取列名(列的key),减少数据流量及避免加载完整切片内容到内存中的开销。根据获得的数据构造出小文件的切片序列,维护切片序列号和列名的映射,用于后续分切片读取小文件。
3、当上层应用尝试从小文件输入流中读取数据时,小文件输入流检查缓冲区内是否有可用的数据,如果没有可用数据,将诱发输入流向HBase请求新的切片数据。此时会根据之前获得的切片序列号和列名映射直接定位读取对应的切片内容。新获取的切片将载入缓冲区,供给上层应用消费。
4、当上层应用消费完当前缓冲区的数据,将再次触发步骤2。
5、当输入流定位并处理完小文件对应的最后一个切片后,将返回结束信号完成整个小文件的读取。
在读取之前,上层应用可以获得文件长度,本方案无需读取完整的文件内容即可来获得文件长度。根据小文件存储的表结构设计,小文件存储时,被切片后,每个切片对应的长度将记录在i列族下各个列的列名中。
通过HBase的KeyOnlyFilter,仅抓取对应行i列族下所有列的列名,即获得所有切片的信息。将列名前两个字节丢弃后,余下的字节转换后可以得到对应的切片大小。累加所有的切片大小即为对应小文件的完整准确大小。
在上述步骤1之前,上层应用需要判定小文件能否读取。HBase支持并发读取,因此小文件储存表并不存在HBase本身并发读取之外的问题。唯一需要判定的是小文件是否存在。可以通过HBase API直接判定小文件对应行主键在HBase小文件表中是否存在,存在即表示可以读取。
一个完整的小文件是以行的形式存储在HBase小文件表中的。一个行即代表一个完整的小文件,因此可以通过HBase API直接判定小文件对应行主键在小文件表中是否存在,即可判定小文件是否存在。
小文件删除应用
小文件是以切片的形式存储在HBase小文件表中,而单文件所有切片均存储在同一个行之下。进而依赖HBase对rowkey的快速定位,直接使用HBase API删除对应行,也意味着对应的小文件已被删除。
综上可见,本发明方法解决了背景技术中的两大问题,实现海量小文件的合理存储和低延时性,并且对上层应用***完全透明。
要达到的实际效果:首先,在Hadoop、HBase环境下建立小文件存储环境,而后配套提供了包括小文件写入、小文件续写及小文件读取应用流程。进而实现海量小文件的合理存储和低延时性。
进而为上层应用***提供一个文件存储抽象层,上层应用通过这个抽象层进行文件的写入、读取,不管是大文件还是小文件。具备存储海量小文件的特性,解决了HDFS不适合存储小文件问题,即文件数量的增长不需要依靠增加NameNode内存来支撑。写入、读取文件的操作通过标准的I/O流,上层应用通过这个抽象层感知不到底层对大小文件的不同处理,也就是说把上层应用的改造工作量降低到最小。同时,由于是通过标准的I/O流进行文件操作,而不是通过字节数组,所以对服务器内存的要求很低,比如写入或读取一个10MB大小的文件,并不需要一次分配10MB大小的内存来缓存文件内容,文件内容都是通过I/O流的方式进行操作。另外,小文件的存储具备低延时的特性。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种基于HBase的海量小文件低延时存储方法,其特征在于:在Hadoop、HBase环境下建立小文件存储环境和对大小文件存储进行抽象层的处理后提供包括小文件写入应用、小文件续写应用及小文件读取应用;其中,建立小文件存储环境,包括,
建立HBase小文件表,在HBase数据库中创建一个小文件表;所述小文件表如下,
所述行主键的值为一个字符串;
所述行主键的值通过取UUID值,对此值做MD5摘要计算,再取摘要值的十六进制表示的字符串;
所述列族i,用于对应存储小文件根据预定义的规则分为N个切片后的每个切片的长度信息及文件内容的字节流;
所述列族i的键名由切片序列号和当前切片长度组成,键值内存储有当前切片序列号对应的切片内容的字节数组;
所述列族m,用于记录本行记录的锁信息,用于在并发写入时判定行是否正在被别的线程或进程锁定;
对大小文件存储进行抽象层的处理,包括:
建立一个文件存储抽象层,用于接收来自应用层的文件大小报告,并根据预定义的大小文件区分阈值构建对应的URI后返回给应用层,而后接收应用层送来的欲进行读/写的文件输入流及URI传递来时解析URI,并自动将文件的读/写操作对应指向HDFS文件***或者HBase的小文件表中;
对小文件表进行预分区;以及
对小文件表开启行的布隆过滤器。
2.如权利要求1所述的基于HBase的海量小文件低延时存储方法,其特征在于:所述小文件写入应用包括步骤,
A1)、初始化小文件输出流,获得目标小文件的引用后在小文件输出流内部开辟内存缓冲区,向输出流传递目标小文件的URI;所述URI中包含了写入小文件表的目标行主键;所述内存缓冲区的空间不小于定义的小文件切片大小;
A2)、检查小文件表中列族m的键名锁的键值,若为否,则行可操作,新增锁;
A3)、从源文件中读取字节流,输入到缓冲区中,当一个缓冲区被写满后,将此时缓冲区中的内容形成新的切片,并获得切片序列号,并获取该切片的真实字节长度,与切片序列号共同预组装为HBase小文件表i列族下的键名,而切片的内容存储到对应的键值中;
A4)、连接HBase,将新的完整切片输出到小文件表中,小文件表中列族i动态扩展出新的一个列用于存储新切片;
A5)、重置缓冲区,回到步骤A2;
A6)、源文件所有内容读取完毕后,在小文件输出流被关闭前,将缓冲区中剩余的未达到切片定义大小阈值的内容组装为此次写入的最后一个切片,输出到HBase小文件表相同的行中;
A7)、释放锁。
3.如权利要求2所述的基于HBase的海量小文件低延时存储方法,其特征在于:所述步骤A7)后还包括步骤,
A8)、通过小文件存储的行主键,配合HBase的KeyOnlyFilter抓取对应行i列族下的所有列名,进而从列名中解析出目前状态下已有的所有切片序列号;
A9)、判定小文件行主键对应的m列族下锁的键值为是/否,若否则继续步骤;
A10)、排序得到当前最大的切片序列号;
A11)、递增最大序列号并开始切片写入,后续与完整小文件写入流程相同。
4.如权利要求1所述的基于HBase的海量小文件低延时存储方法,其特征在于:所述小文件读取应用包括步骤,
B1)、初始化小文件输入流,小文件输入流内部开辟缓冲区,获得HBase小文件表的读写权限;所述缓冲区的空间不小于定义的小文件最大切片大小;
B2)、根据欲读取的小文件在小文件表中的行主键,查询对应行的列族i下的所有列信息;利用HBase的KeyOnlyFilter,仅从小文件表读取列族i的键名;
B3)、当应用层对小文件输入流中读取数据时,小文件输入流检查其缓冲区内是否有可用的数据,如果没有可用数据,诱发小文件输入流流向HBase请求新的切片数据;
B4)、应用层消费完当前缓冲区的数据,返回步骤B2;
B5)、当小文件输入流定位并处理完小文件对应的最后一个切片后,返回结束信号完成整个小文件的读取。
5.如权利要求1所述的基于HBase的海量小文件低延时存储方法,其特征在于:还包括小文件删除操作,所述小文件删除操作,依赖HBase对需删除小文件的行主键进行快速定位,然后直接使用HBase的API删除对应行。
6.如权利要求1所述的基于HBase的海量小文件低延时存储方法,其特征在于:所述阈值大小为10兆字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310112130.XA CN103246700B (zh) | 2013-04-01 | 2013-04-01 | 基于HBase的海量小文件低延时存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310112130.XA CN103246700B (zh) | 2013-04-01 | 2013-04-01 | 基于HBase的海量小文件低延时存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103246700A CN103246700A (zh) | 2013-08-14 |
CN103246700B true CN103246700B (zh) | 2016-08-10 |
Family
ID=48926220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310112130.XA Active CN103246700B (zh) | 2013-04-01 | 2013-04-01 | 基于HBase的海量小文件低延时存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103246700B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473365B (zh) * | 2013-09-25 | 2017-06-06 | 北京奇虎科技有限公司 | 一种基于hdfs的文件存储方法、装置及分布式文件*** |
CN103646073A (zh) * | 2013-12-11 | 2014-03-19 | 浪潮电子信息产业股份有限公司 | 一种基于HBase表的条件查询优化方法 |
CN105205082A (zh) | 2014-06-27 | 2015-12-30 | 国际商业机器公司 | 用于处理hdfs中的文件存储的方法和*** |
CN104391910B (zh) * | 2014-11-17 | 2016-06-08 | 西安交通大学 | 一种基于HBase的税收统计报表存储与计算的方法 |
CN105988995B (zh) * | 2015-01-27 | 2019-05-24 | 杭州海康威视数字技术股份有限公司 | 一种基于HFile批量加载数据的方法 |
CN105094695B (zh) * | 2015-06-29 | 2018-09-04 | 浪潮(北京)电子信息产业有限公司 | 一种存储方法和*** |
CN105354323A (zh) * | 2015-11-16 | 2016-02-24 | 天津南大通用数据技术股份有限公司 | 使用二级过滤提高列存数据库精确查询速度的方法与装置 |
CN105426466A (zh) * | 2015-11-16 | 2016-03-23 | 天津南大通用数据技术股份有限公司 | 提高列存数据库精确查询速度的方法与装置 |
CN105677826A (zh) * | 2016-01-04 | 2016-06-15 | 博康智能网络科技股份有限公司 | 一种针对海量非结构化数据的资源管理方法 |
CN105956106B (zh) * | 2016-05-04 | 2019-12-13 | 北京思特奇信息技术股份有限公司 | 一种基于内存数据库和Hbase存取大数据的方法及*** |
CN106021491B (zh) * | 2016-05-20 | 2019-10-08 | 天津海量信息技术股份有限公司 | 基于hdfs的准实时数据存储方法 |
CN106469225B (zh) * | 2016-09-28 | 2019-04-16 | 厦门嵘拓物联科技有限公司 | 一种智能车间管理中海量制造数据访问的方法 |
CN106528819A (zh) * | 2016-11-16 | 2017-03-22 | 北京集奥聚合科技有限公司 | 一种HBase读写时序性数据的方法及*** |
CN108932287B (zh) * | 2018-05-22 | 2019-11-29 | 广东技术师范大学 | 一种基于Hadoop的海量小文件写入方法 |
CN110532425B (zh) * | 2019-08-19 | 2022-04-01 | 深圳市网心科技有限公司 | 视频数据分布式存储方法、装置、计算机设备及存储介质 |
CN112256634B (zh) * | 2020-10-14 | 2024-03-26 | 杭州当虹科技股份有限公司 | 一种基于http的低内存大文件解析方法 |
CN115658626B (zh) * | 2022-12-26 | 2023-03-07 | 成都数默科技有限公司 | 一种分布式网络小文件存储管理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866359A (zh) * | 2010-06-24 | 2010-10-20 | 北京航空航天大学 | 一种机群文件***中的小文件存储和访问方法 |
CN102662992A (zh) * | 2012-03-14 | 2012-09-12 | 北京搜狐新媒体信息技术有限公司 | 一种海量小文件的存储、访问方法及装置 |
CN102902716A (zh) * | 2012-08-27 | 2013-01-30 | 苏州两江科技有限公司 | 基于Hadoop分布式计算平台的存储*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8768980B2 (en) * | 2009-11-02 | 2014-07-01 | Stg Interactive S.A. | Process for optimizing file storage systems |
-
2013
- 2013-04-01 CN CN201310112130.XA patent/CN103246700B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866359A (zh) * | 2010-06-24 | 2010-10-20 | 北京航空航天大学 | 一种机群文件***中的小文件存储和访问方法 |
CN102662992A (zh) * | 2012-03-14 | 2012-09-12 | 北京搜狐新媒体信息技术有限公司 | 一种海量小文件的存储、访问方法及装置 |
CN102902716A (zh) * | 2012-08-27 | 2013-01-30 | 苏州两江科技有限公司 | 基于Hadoop分布式计算平台的存储*** |
Non-Patent Citations (2)
Title |
---|
Xuhui Liu 等.Implementing WebGIS on Hadoop:A Case Study of Improving Small File I/O Performance on HDFS.《Cluster Computer and Workshops,2009》.2009,第1页-第8页. * |
赵跃龙 等.一种性能优化的小文件存储访问策略的研究.《计算机研究与发展》.2012,第49卷(第7期),第1579页-第1585页. * |
Also Published As
Publication number | Publication date |
---|---|
CN103246700A (zh) | 2013-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103246700B (zh) | 基于HBase的海量小文件低延时存储方法 | |
CN108053863B (zh) | 适合大小文件的海量医疗数据存储***及数据存储方法 | |
CN106484877B (zh) | 一种基于hdfs的文件检索*** | |
CN104536959B (zh) | 一种Hadoop存取海量小文件的优化方法 | |
US10037341B1 (en) | Nesting tree quotas within a filesystem | |
CN103327052B (zh) | 数据存储方法和***以及数据访问方法和*** | |
CN101674334B (zh) | 一种网络存储设备的访问控制方法 | |
CN110291518A (zh) | 合并树无用单元指标 | |
CN110268394A (zh) | Kvs树 | |
KR100856245B1 (ko) | 파일 시스템 장치 및 그 파일 시스템의 파일 저장 및 파일 탐색 방법 | |
CN103812939A (zh) | 一种大数据存储*** | |
CN111427847B (zh) | 面向用户自定义元数据的索引与查询方法和*** | |
CN105787093B (zh) | 一种基于LSM-Tree结构的日志文件***的构建方法 | |
CN105612491A (zh) | 分布式存储架构中基于具有密集树结构的元数据的盘区的管理 | |
CN102024019B (zh) | 一种分布式文件***中基于后缀树的目录组织方法 | |
CN101641695A (zh) | 资源接入过滤***及供与资源接入过滤***一起使用的数据库结构 | |
CN106407355A (zh) | 一种数据存储方法及装置 | |
WO2014110940A1 (en) | A method, apparatus and system for storing, reading the directory index | |
CN113721862B (zh) | 数据处理方法及装置 | |
CN109542861A (zh) | 一种文件管理方法、装置和*** | |
CN105354250A (zh) | 一种面向云存储的数据存储方法及装置 | |
CN104182487A (zh) | 一种支持多种存储方式的统一存储方法 | |
CN107291915A (zh) | 一种小文件存储方法、小文件读取方法及*** | |
GB2439577A (en) | Storing data in streams of varying size | |
KR20140048396A (ko) | 클라우드 스토리지 서비스의 파일 검색 시스템 및 방법, 및 파일 제어 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |