CN101996250A - 一种基于Hadoop的海量流数据存储和查询方法及系统 - Google Patents
一种基于Hadoop的海量流数据存储和查询方法及系统 Download PDFInfo
- Publication number
- CN101996250A CN101996250A CN 201010546473 CN201010546473A CN101996250A CN 101996250 A CN101996250 A CN 101996250A CN 201010546473 CN201010546473 CN 201010546473 CN 201010546473 A CN201010546473 A CN 201010546473A CN 101996250 A CN101996250 A CN 101996250A
- Authority
- CN
- China
- Prior art keywords
- data
- page
- scan pattern
- row
- data page
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Hadoop的海量流数据存储和查询方法及系统。所述方法,包括下列步骤:构建段级列簇式存储结构:将流数据依次存储为列簇记录,并对列簇记录从前往后进行压缩得到压缩数据页,将该压缩数据页写到一个列簇数据,同时将该压缩数据页的页面概要信息追加写入到列簇数据的尾端,得到完整的数据段;在查询语句执行的过程中,根据过滤条件,利用存储在数据段尾端的所述页面概要信息构建出一张扫描表对数据进行快速过滤。
Description
技术领域
本发明涉及海量数据管理领域,特别是涉及一种基于Hadoop的海量流数据存储和查询方法及系统。
背景技术
随着数据产生的自动化进步,越来越多的应用要求将这些总量持续增长的流数据持久化保存下来,并进行后续的查询分析和数据挖掘,这对海量流数据的管理提出了严峻的挑战。
在存储方面,产生的流数据总量大,而且每天的流量也大。以国内互联网公司为例,每天大约有5TB的网页点击流数据产生,总记录数约为6亿多条。这些点击流数据需要持久化存储在系统中,并用于当天的报表统计分析(比如计算当天的页面点击率(PV)、用户访问量(UV)等),以及后续一定时间内的数据挖掘。除了互联网应用之外,在网络安全领域也存在类似挑战。据中国互联网信息中心发布的调查报告显示,截至2009年底,中国IPv4地址已经达到2.3亿,数量仅次于美国,是全球第二大IPv4地址拥有国,并且每年以28.2%的速度持续增长;同时国际出口带宽达到866,367Mbps,年增长率达到35.3%。互联网信息资源的增加,产生了更多的网络流量数据,这些流量数据需要被持久化保存用以快速分析和发现恶意网络攻击行为,保证用户正常使用网络。
源源不断产生的流数据进入系统后,通常需要被持久化保存一段时间,因此对流数据管理系统的数据加载性能和存储容量都提出了严峻的挑战。并且,这些流数据的增长速度也十分迅速,对系统的扩展能力也将是一种考验。
而在查询方面,对流数据的查询主要是统计分析类的查询。这类查询通常访问的数据量大,运行时间较长。以互联网点击流应用为例,典型的查询是对一天中的所有网页点击数据进行页面点击量(PV)、用户访问量(UV)等的统计,产生当日的报表。这类操作通常需要访问整一天的数据,运行的时间在几个小时以上。因此对查询的执行效率和执行过程中的容错能力都提出了挑战。
进行海量流数据存储管理的传统解决方案是关系型数据库。但是关系型数据库并不适合进行流数据管理,原因有三:
其一,关系型数据库制约流数据的加载速度。流数据以追加的方式进入系统中,并且在它们加载到系统中之后不再被修改。因此,海量流数据管理并不需要数据库系统提供的严格一致性保证和事务操作。相反,数据库系统严格的一致性保证和事务操作,带来了额外的开销,限制了流数据加载的性能。
其二,关系型数据库不能利用流数据时间有序的特性来加速查询处理。数据库使用索引技术来提高流数据应用中的时间区间查询分析。但是,时间维度的索引并不能提高流数据查询分析的性能。相反,使用索引不仅在数据加载阶段引入额外的开销,同时在查询执行过程中引入大量的随机磁盘I/O。更不幸的是,随机磁盘I/O将会严重影响查询分析的性能。
其三,关系型数据库的容错机制限制了数据库系统的扩展能力。(并行)数据库基于物理硬件是昂贵的、节点失效并不是经常性事件的假设,采用乐观式的容错机制,在查询执行过程中采用流水线的方式传递中间结果数据,以达到较高的执行性能。但是,一旦节点失效发生,整个查询任务将直接退出。用户必须重新提交查询语句,重做整个任务。这对于运行时间长的统计分析类查询,是不可忍受的。
基于Hadoop进行海量流数据的管理,可以充分利用HDFS和MapReduce的扩展性,解决海量数据管理面临的扩展性和规模的问题。同时,MapReduce的悲观式容错机制使得对于海量数据的查询分析在节点失效发生的情况下,也不必重新提交执行,提高了查询的效率。
但是,由于MapReduce并不是针对于结构化数据处理分析而设计的。因此MapReduce由于缺乏传统数据库技术在结构化数据处理的优化技术,导致其在分析查询结构化数据时,采用全表扫描的方式访问数据,性能不如并行数据库。因此,直接将Hadoop用于海量流数据管理将会面临查询性能低的问题。
发明内容
本发明的目的在于提供一种基于Hadoop的海量流数据存储和查询方法及系统。其能够解决海量流数据应用面临的高效率统计分析问题。
为实现本发明的目的而提供的一种基于Hadoop的海量流数据存储和查询方法,包括下列步骤:
步骤100.构建段级列簇式存储结构:将流数据依次存储为列簇记录,并对列簇记录从前往后进行压缩得到压缩数据页,将该压缩数据页写到一个列簇数据,同时将该压缩数据页的页面概要信息追加写入到列簇数据的尾端,得到完整的数据段;
步骤200.在查询语句执行的过程中,根据过滤条件,利用存储在数据段尾端的所述页面概要信息构建出一张扫描表对数据进行快速过滤。
所述步骤100,包括下列步骤:
步骤110.将缓存中的流数据根据表的列簇定义依序存储为列簇记录,写入到内存中;
步骤120.对内存中该列簇的列簇记录从前往后进行压缩,直到得到近似一个指定数据页大小的压缩数据页,将该数据页写到一个列簇数据中,如此反复写完整个列簇数据,存为一个数据段;
步骤130.在写数据页的同时,将该数据页的页面概要信息记录在内存中,并把该数据段的元数据信息追加写入到列簇数据的尾端,形成一个完整的数据段加入存储文件中;
步骤140.判断所述数据段的大小是否近似等于分布式文件系统中一个数据块的大小,若是,则执行步骤150;否则,返回步骤110;
步骤150;将新的数据段追加在上一数据段的尾端,并重复步骤110-130生成新的数据段;
步骤160.判断所述存储文件长度是否达到设定长度阈值,若是,则加载服务器将内存中描述该存储文件内所有数据段的索引信息写到存储文件的尾端,关闭该存储文件,并重新建立新的存储文件;否则返回步骤150。
步骤110中,根据列簇定义,确定每个字段的类型,并计算出每个字段在记录中的偏移量;对于定长字段,直接通过偏移量可以访问到相应的值;而对于变长字段,则需要从变长字段偏移区中读取该字段的实际偏移,然后根据这个偏移值到变长字段存储区中访问相应的值。
所述步骤200,包括下列步骤:
步骤210.判断过滤条件涉及的字段是否集中在一个列簇数据中,若是,则执行步骤220;否则,执行步骤230;
步骤220.遍历所述列簇数据的所有数据页的页面概要信息,并根据过滤条件表达式的操作类型及其所有子表达式,计算每个数据页在该过滤条件表达式下的扫描模式,以建立扫描表;
步骤230.将过滤条件表达式按照列簇数据归类拆分成多个子表达式,使得每个子表达式只包含该列簇数据中的字段,然后,分别对每个子表达式运用步骤220的方法,构建每个列簇的扫描模式列表;最后,将每个子表达式构建的扫描模式列表进行相应的逻辑运算,得到最终的扫描表。
所述步骤220,包括下列步骤:
步骤221.判断所述过滤条件表达式的运算类型,如果是比较运算,则执行步骤222;如果是逻辑运算,则执行步骤223;如果是其他类型,则执行步骤224;
步骤222.所述过滤条件表达式为比较运算时,根据该数据页的最大值和最小值判断该数据页中的所有记录是不是都能满足该比较表达式;如果所有记录都满足该比较表达式,则该数据页的扫描模式为POSITIVE;如果所有记录都不能满足该比较表达式,则该数据页的扫描模式为NEGATIVE;否则,该数据页的扫描模式为ROUGH;
步骤223.所述过滤条件表达式为逻辑运算时,首先计算其子表达式的扫描模式;接着,判断逻辑运算符:如果为AND或者OR操作,则将其子表达式运算得来的扫描模式进行逻辑运算得到最终数据页的扫描模式;如果为NOT操作,则对其子表达式运算得来的扫描模式进行取反操作:POSITIVE变为NEGATIVE,NEGATIVE变为POSITIVE,ROUGH则保持不变;
步骤224.所述过滤条件表达式为其他类型,则该数据页的扫描模式为ROUGH。
所述步骤230,包括下列步骤:
步骤231.从不同列簇数据的第一个数据页开始遍历;
步骤232.分别取得该数据页对应的页面概要信息和该数据页当前的扫描模式;通过比较两个数据页的起始记录号和结束记录号,判断这两个数据页的相互关系,若是包含关系,则执行步骤233;若是等价关系,则执行步骤234;若是其他情况,则执行步骤235;
步骤233.如果两个数据页进行逻辑与操作并且其中一个数据页的扫描模式为NEGATIVE,则设置另一数据页的扫描模式为NEGATIVE;如果两个数据页进行逻辑或操作并且其中一个数据页的扫描模式为POSITIVE,则设置另一数据页的扫描模式为POSITIVE;
步骤234.如果两个数据页进行逻辑与操作并且任一数据页的扫描模式为NEGATIVE,则设置另一个数据页的扫描模式为NEGATIVE;如果两个数据页进行逻辑或操作并且任一数据页的扫描模式为POSITIVE,则设置另一个数据页的扫描模式为POSITIVE;
步骤235.其他情况,则不做任何操作;
步骤236.根据计算需求移动相应列簇数据的下一个数据页,返回步骤232,直到遍历完所述不同的列簇数据。
为实现本发明的目的还提供一种基于Hadoop的海量流数据存储和查询系统,所述系统,包括:
段级列簇式存储模块,用于将流数据依次存储为列簇记录,并对列簇记录从前往后进行压缩得到压缩数据页,将该压缩数据页写到一个列簇数据,同时将该压缩数据页的页面概要信息追加写入到列簇数据的尾端,得到完整的数据段;
过滤模块,在查询语句执行的过程中,根据过滤条件,利用存储在数据段尾端的所述页面概要信息构建出一张扫描表对数据进行快速过滤。
所述段级列簇式存储模块,包括:
列簇记录存储模块,用于将缓存中的流数据根据表的列簇定义依序存储为列簇记录,写入到内存中;
压缩模块,用于对内存中该列簇的列簇记录从前往后进行压缩,直到得到近似一个指定数据页大小的压缩数据页,将该数据页写到一个列簇数据中,如此反复写完整个列簇数据,存入为一个数据段;
页面概要信息记录模块,用于在写数据页的同时,将该数据页的页面概要信息记录在内存中,并把该数据段的元数据信息追加写入到列簇数据的尾端,形成一个完整的数据段加入存储文件中;
数据段尺寸判断模块,用于判断所述数据段的大小是否近似等于分布式文件系统中一个数据块的大小,若是,则触发数据段生成模块;否则,触发列簇记录存储模块;
数据段生成模块,用于生成新的数据段,并将新的数据段追加在上一数据段的尾端;
文件长度判断模块,用于判断所述存储文件长度是否达到设定长度阈值,若是,则加载服务器将内存中描述该存储文件内所有数据段的索引信息写到存储文件的尾端,关闭该存储文件,并重新建立新的存储文件;否则触发数据段生成模块。
所述列簇记录存储模块,根据列簇定义,确定每个字段的类型,并计算出每个字段在记录中的偏移量;对于定长字段,直接通过偏移量可以访问到相应的值;而对于变长字段,则需要从变长字段偏移区中读取该字段的实际偏移,然后根据这个偏移值到变长字段存储区中访问相应的值。
所述过滤模块,包括:
判断模块,用于判断过滤条件涉及的字段是否集中在一个列簇数据中,若是,则触发独立扫描模块;否则,触发并行扫描模块;
独立扫描模块,用于遍历所述列簇数据的所有数据页的页面概要信息,并根据过滤条件表达式的操作类型及其所有子表达式,计算每个数据页在该过滤条件表达式下的扫描模式,以建立扫描表;
并行扫描模块,用于将过滤条件表达式按照列簇数据归类拆分成多个子表达式,使得每个子表达式只包含该列簇数据中的字段,然后,分别对每个子表达式运用独立扫描模块的方法,构建每个列簇的扫描模式列表;最后,将每个子表达式构建的扫描模式列表进行相应的逻辑运算,得到最终的扫描表。
所述独立扫描模块,包括:
运算类型判断模块,用于判断所述过滤条件表达式的运算类型,如果是比较运算,则触发比较运算标记模块;如果是逻辑运算,则触发逻辑运算标记模块;如果是其他类型,则触发其他类型标记模块;
比较运算标记模块,用于当所述过滤条件表达式为比较运算时,根据该数据页的最大值和最小值判断该数据页中的所有记录是不是都能满足该比较表达式;如果所有记录都满足该比较表达式,则该数据页的扫描模式为POSITIVE;如果所有记录都不能满足该比较表达式,则该数据页的扫描模式为NEGATIVE;否则,该数据页的扫描模式为ROUGH;
逻辑运算标记模块,用于当所述过滤条件表达式为逻辑运算时,首先计算其子表达式的扫描模式;接着,判断逻辑运算符:如果为AND或者OR操作,则将其子表达式运算得来的扫描模式进行逻辑运算得到最终数据页的扫描模式;如果为NOT操作,则对其子表达式运算得来的扫描模式进行取反操作:POSITIVE变为NEGATIVE,NEGATIVE变为POSITIVE,ROUGH则保持不变;
其他类型标记模块,用于当所述过滤条件表达式为其他类型,则该数据页的扫描模式为ROUGH。
所述并行扫描模块,包括:
数据页遍历模块.用于从不同列簇数据的第一个数据页开始遍历;
关系判断模块.用于分别取得该数据页对应的页面概要信息和该数据页当前的扫描模式;通过比较两个数据页的起始记录号和结束记录号,判断这两个数据页面的相互关系,若是包含关系,则触发包含关系更新模块;若是等价关系,则触发等价关系更新模块;若是其他情况,则不做任何操作;
包含关系更新模块,如果两个数据页进行逻辑与操作并且其中一个数据页的扫描模式为NEGATIVE,则设置另一数据页的扫描模式为NEGATIVE;如果两个数据页进行逻辑或操作并且其中一个数据页的扫描模式为POSITIVE,则设置另一数据页的扫描模式为POSITIVE;
等价关系更新模块,如果两个数据页进行逻辑与操作并且任一数据页的扫描模式为NEGATIVE,则设置另一个数据页的扫描模式为NEGATIVE;如果两个数据页进行逻辑或操作并且任一数据页的扫描模式为POSITIVE,则设置另一个数据页的扫描模式为POSITIVE。
本发明的有益效果是:
1.本发明的基于Hadoop的海量流数据存储和查询方法和系统,针对于结构化的流数据,提出了一种基于HDFS的段级列簇式存储组织,利用列存储和压缩技术,可以减少磁盘I/O的数据量,提高数据加载和查询分析的性能;
2.本发明的基于Hadoop的海量流数据存储和查询方法和系统,针对流数据时间近似有序的特性,提出了SCANMAP优化机制,利用段级列簇式存储结构中记录的概要信息,对数据进行快速过滤以提高查询处理效率。
附图说明
图1是本申请的基于Hadoop的海量流数据存储和查询方法的步骤流程图;
图2是本发明提出的段级列簇式存储结构示意图;
图3是本发明中基于段级列簇式存储结构存储流数据的步骤流程图;
图4是本发明中列簇中一条记录的存储结构示意图;
图5是本发明中数据段尾端的页面概要信息存储示意图;
图6是本发明中利用页面概要信息构建扫描表,对数据进行快速过滤的步骤流程图;
图7是本发明中根据单列簇过滤条件构建SCANMAP的步骤流程图;
图8是本发明中根据多列簇过滤条件构建SCANMAP的步骤流程图;
图9是本发明中两个数据页之间的相互关系示意图;
图10是本发明的一种基于Hadoop的海量流数据存储和查询系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的基于Hadoop的海量流数据存储和查询方法和系统进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的基于Hadoop的海量流数据存储和查询方法和系统,针对结构化的流数据时间近似有序的特性,提出了一种基于分布式文件系统(HadoopDistributed File System,HDFS)的段级列簇式存储结构和SCANMAP优化机制,利用段级列簇式存储结构中记录的概要信息,对数据进行快速过滤以提高查询处理效率。同时,利用列存储和压缩技术,可以减少磁盘I/O的数据量,提高数据加载和统计分析的性能。
下面结合上述目标详细介绍本发明的基于Hadoop的海量流数据存储和查询方法,图1是本申请的基于Hadoop的海量流数据存储和查询方法的步骤流程图,如图1所示,所述方法,包括下列步骤:
步骤100.将流数据依次存储为列簇记录,并对列簇记录从前往后进行压缩得到压缩数据页,将该数据页写到一个列簇数据,同时将该数据页的页面概要信息追加写入到列簇数据的尾端,得到完整的数据段;
根据结构化流数据存储底层HDFS的存储特性:即1)写一次,读多次的文件访问语义;2)随机均匀分布的定长块放置策略;3)针对顺序访问进行优化,并且跨数据块的随机读性能远差于数据块内的随机读性能。本发明提出了针对HDFS特性设计的段级列簇式存储(Segment Level Cluster Store,SLCStore)结构。
图2是本发明提出的段级列簇式存储结构示意图,如图2所示,在本发明的段级列簇式存储中,数据以数据段(Segment)为粒度进行组织。一个数据段通常代表着一段时间间隔内的流数据。与文件级列存储不同的是,不同的列簇数据按照列簇一、列簇二依次类推的顺序压缩存储到一个数据段中,而非写到不同文件中。这样,通过在数据加载时控制数据段的大小,使得一个数据段的大小近似等于HDFS一个数据块的大小,从而使得一个数据段的各个列簇存储在同一个数据块中。这些列簇最终存储在相同的物理机器上,从而避免了在列数据拼接时引入网络I/O。
所述基于HDFS的段级列簇式存储结构与索引机制不同,1)写入简单,不对数据加载产生额外的开销影响;2)在查询分析过程中,不会引入大量的磁盘I/O,达到加速带有时间区间的流数据分析性能的效果。
图3是本发明中基于段级列簇式存储结构存储流数据的步骤流程图,如图3所示,所述步骤100,包括下列步骤:
步骤110.将缓存中的流数据按照顺序存储为一条列簇记录写入到内存;
图4是本发明中列簇中一条记录的存储结构示意图,如图4所示,对于列簇中的每一条记录,SLCStore按照图4所示进行组织:SLCStore根据表的列簇定义,确定每个字段的类型,并计算出每个字段在记录中的偏移量。对于定长字段,直接通过偏移量可以访问到相应的值;而对于变长字段,则需要到图4所示的变长字段偏移区中,读取该字段的实际偏移,然后根据这个偏移值到变长字段存储区中访问相应的值。
结合流数据加载流程,加载服务器在数据流入系统之后,将流数据缓存在加载服务器的内存中,并在流数据缓存达到阈值(通常与HDFS数据块的大小一致,在进行数据压缩时需根据压缩比进行估算)时,将缓存中的数据按照列簇的顺序依次写回到HDFS文件中进行持久化存储。
步骤120.当一条列簇记录按照图4所示写入到内存后,SLCStore对内存中该列簇的数据从前往后进行压缩,直到得到近似一个指定数据页大小(如1MB)的压缩数据页,就将该数据页写到一个列簇数据中,如此反复写完整个列簇数据,存为一个数据段;
步骤130.SLCStore在写数据页的同时,将该数据页的页面概要信息(PageMeta,记录该数据页的最大值、最小值、数据页的文件偏移量以及包含的记录数)记录在内存中,SLCStore把该数据段的元数据信息(包括每个列簇在文件中的偏移量、每个数据页的概要信息等)追加写入到列簇数据的尾端,形成一个完整的数据段加入存储文件中;
步骤140.判断所述数据段的大小是否近似等于分布式文件系统中一个数据块的大小,若是,则执行步骤150;否则,返回步骤110;
步骤150;重复步骤110-130生成新的数据段,并将新的数据段追加在上一数据段的尾端;
步骤160.判断所述存储文件长度是否达到设定长度阈值,若是,则加载服务器将内存中描述该存储文件内所有数据段的索引信息写到存储文件的尾端,关闭该存储文件,并重新建立新的存储文件;否则返回步骤150。
随着流数据不断加载进入系统中,新的数据段也在不断产生,并以追加的方式写回到文件的尾端。在文件长度增加到指定长度阈值后,加载服务器将内存中描述该文件内所有数据段的索引信息写回文件尾端,关闭该文件,并重新打开新的文件继续后续的数据加载。
与已有的工作Pig Zebra不同的是,SLCStore采用段级列存储的组织方式,而非文件级列存储的组织方式进行数据的组织:SLCStore在数据加载阶段通过控制缓存的大小,使得数据段内的各个列簇尽可能地落在同一个HDFS文件块中,从而同一行的不同列簇数据存储在相同的物理节点上,避免了网络数据I/O。同时,在一个数据段内部,数据的组织方式按照纯粹的列式存储进行组织,并非PAX方式,与已有工作RCFile相比:一方面,避免了PAX方式下引入的大量无用磁盘I/O;另一方面,将一个数据段的各个列簇存储于同一个数据块中,避免了跨数据块随机读的额外代价。
步骤200.在查询语句执行的过程中,根据过滤条件,利用存储在数据段尾端的所述页面概要信息(图5是本发明中数据段尾端的页面概要信息存储示意图,如图5所示)构建出一张扫描表(SCANMAP)对数据进行快速过滤。
由于流数据的产生和流入具有近似时间有序性,因此本发明提出了SCANMAP优化机制。在查询语句执行的过程中,利用存储在数据段尾端的页面概要信息构建出一张扫描表(SCANMAP)。这张扫描表标识着在这条查询语句执行过程中,哪些数据页需要被扫描,哪些数据页则不需要被扫描,根据SCANMAP中描述的数据页扫描属性,可以过滤掉无关数据、减少大量数据扫描,快速地定位到查询语句所需要的数据页,加速统计分析的过程。。在SCANMAP中每个数据页具有相应的扫描属性(SCANMODE),包括:
I.POSITIVE:该数据页中的所有记录均满足该查询条件。
II.ROUGH:不确定该数据页中哪些记录满足该查询条件,需要读取并进行条件过滤。
III.NEGATIVE:该数据页中的所有记录均不满足该查询条件。
图6是本发明中利用页面概要信息构建扫描表,对数据进行快速过滤的步骤流程图,如图6所示,所述步骤200,包括下列步骤:
步骤210.判断过滤条件涉及的字段是否集中在一个列簇数据中,若是,则执行步骤220;否则,执行步骤230;
SCANMAP的构建,主要包括两种情况:其一,过滤条件涉及的字段集中在一个列簇中;其二,过滤条件涉及的字段分散在多个列簇中。
步骤220.单列簇过滤条件,SCANMAP的构建:遍历所述列簇数据的所有数据页的页面概要信息,并计算每个数据页在该过滤条件表达式下的扫描模式;
图7是本发明中根据单列簇过滤条件构建SCANMAP的步骤流程图,如图7所示,所述步骤220,包括下列步骤:
步骤221.对每个数据页扫描模式的计算,首先判断该过滤条件表达式的操作类型,以及获得其所有子表达式:
步骤222.表达式为比较运算(如”<”,”>”等)时,根据该数据页的最大值和最小值判断该数据页中的所有记录是不是都能满足该比较表达式。如果所有记录都满足该比较表达式,则该数据页的扫描模式为POSITIVE;如果所有记录都不能满足该比较表达式,则该数据页的扫描模式为NEGATIVE;否则,该数据页的扫描模式为ROUGH。
步骤223.表达式为逻辑运算(如AND,OR,NOT等)时,首先计算其子表达式的扫描模式;接着,判断逻辑运算符:如果为AND或者OR操作,则将其子表达式运算得来的扫描模式进行逻辑运算得到最终数据页的扫描模式;如果为NOT操作,则对其子表达式运算得来的扫描模式进行取反操作:POSITIVE变为NEGATIVE,NEGATIVE变为POSITIVE,ROUGH则保持不变。
步骤224.表达式为其他类型,比如用户自定义的函数(UDF,User DefineFunction),由于不知道用户自定义函数的语义,那么该数据页的扫描模式为ROUGH。
步骤230.多列簇过滤条件,SCANMAP的构建:
图8是本发明中根据多列簇过滤条件构建SCANMAP的步骤流程图,如图8所示,所述步骤230,包括下列步骤:
步骤231.从不同列簇数据的第一个数据页开始遍历;
步骤232.分别取得该数据页对应的页面概要信息和该数据页当前的扫描模式;通过比较两个数据页的起始记录号和结束记录号,判断这两个数据页的相互关系,若是包含关系,则执行步骤233;若是等价关系,则执行步骤234;若是其他情况,则执行步骤235;
步骤233.如果两个数据页进行逻辑与操作并且其中一个数据页的扫描模式为NEGATIVE,则设置另一数据页的扫描模式为NEGATIVE;如果两个数据页进行逻辑或操作并且其中一个数据页的扫描模式为POSITIVE,则设置另一数据页的扫描模式为POSITIVE;
步骤234.如果两个数据页进行逻辑与操作并且任一数据页的扫描模式为NEGATIVE,则设置另一个数据页的扫描模式为NEGATIVE;如果两个数据页进行逻辑或操作并且任一数据页的扫描模式为POSITIVE,则设置另一个数据页的扫描模式为POSITIVE;
步骤235.其他情况,则不做任何操作;
步骤236.根据计算需求移动相应列簇数据的下一个数据页,返回步骤232,直到遍历完所述不同的列簇数据。
对于过滤条件表达式涉及多个列簇字段的情况,其SCANMAP的构建则相对比较复杂:我们首先将表达式按照列簇数据归类拆分成多个子表达式,使得每个子表达式只包含该列簇数据中的字段。然后,分别对每个子表达式运用单列簇SCANMAP构建算法,构建每个列簇的扫描模式列表(ScanModeList)。最后,将每个子表达式构建的扫描模式列表进行相应的逻辑运算,得到最终的SCANMAP。
以条件表达式″A>a1 and B<b1 and C>c1″为例,其SCANMAP构建流程。(假设,A、B字段在列簇1中,C字段在列簇2中)。
该表达式所对应的SCANMAP构建流程如下所述:
(1)将表示式按照列簇关系划分成子表达式1(Child Expr 1)和子表达式2(Child Expr 2),子表达式1和子表达式2之间仍保留着逻辑与运算(AND)关系。
(2)分别对子表达式1和子表达式2计算出列簇1和列簇2的扫描模式列表。
(3)将(2)中计算得来的扫描模式列表进行逻辑与操作,得到最终的SCANMAP。
图9是本发明中两个数据页之间的相互关系示意图,如图9所示,由于两个不同的列簇数据所包含的字段数目和字段类型可能各不一样,采用的压缩方法也不尽相同,那么相同大小的数据页中所包含的列簇记录数也各不相同。因此,对两个不同列簇数据的扫描模式列表进行逻辑运算,并不能简单地进行一对一的逻辑运算:首先需要判断这两个列簇数据的数据页之间的相互关系,然后再根据数据页之间的相互关系进行相应的逻辑运算。两个数据页之间的相互关系,如图9所示。了解了数据页之间的相互关系之后,对两个不同列簇数据的扫描模式列表进行逻辑运算。
首先从左右两个列簇数据的第一个数据页开始遍历,分别取得该数据页对应的页面概要信息(PageMeta)和该数据页当前的扫描模式(ScanMode)。通过比较左右两个数据页的起始记录号和结束记录号,判断这两个页面的相互关系,并进行相应的逻辑运算:
i.两个页面存在包含关系,如图9(a)所示。如果列簇A和列簇B进行逻辑与(AND)操作并且列簇A当前数据页的扫描模式为NEGATIVE,则设置列簇B当前数据页的扫描模式为NEGATIVE,并且移动列簇A、列簇B到下一个数据页;如果列簇A和列簇B进行逻辑或(OR)操作并且列簇A当前数据页的扫描模式为POSITIVE,则设置列簇B当前数据页的扫描模式为POSITIVE,并且移动列簇A、B到下一个数据页。
ii.两个页面处于等价关系,如图9(b)所示。如果列簇A和列簇B进行逻辑与(AND)操作并且A、B任一列簇的当前数据页的扫描模式为NEGATIVE,则设置另一个列簇的当前数据页的扫描模式为NEGATIVE,并且移动列簇A、B到下一个数据页;如果列簇A和B进行逻辑或(OR)操作并且A、B任一列簇的当前数据页的扫描模式为POSITIVE,则设置另一个列簇的当前数据页的扫描模式为POSITIVE,并且移动列簇A、B到下一个数据页。
iii.其他情况,则不做任何操作。
在完成对这两个页面的扫描模式的逻辑运算之后,根据计算需求移动相应列簇到下一个数据页,比如图9(a)中,我们只需移动列簇B到下一个数据页;而在图9(b)中,我们同时移动列簇A、B到下一个数据页。然后重复上述计算流程。如此反复,直到遍历完这两个列簇数据。
通过步骤i-iii,可以确定查询过程中所需要读取的数据页,从而减少最终查询分析需要扫描的数据量。
相应于本发明的基于Hadoop的海量流数据存储和查询方法,还提供一种基于Hadoop的海量流数据存储和查询系统,图10是本发明的一种基于Hadoop的海量流数据存储和查询系统的结构示意图,如图10所示,所述系统,包括:
段级列簇式存储模块1,用于将流数据依次存储为列簇记录,并对列簇记录从前往后进行压缩得到压缩数据页,将该压缩数据页写到一个列簇数据,同时将该压缩数据页的页面概要信息追加写入到列簇数据的尾端,得到完整的数据段;
过滤模块2,在查询语句执行的过程中,根据过滤条件,利用存储在数据段尾端的所述页面概要信息构建出一张扫描表对数据进行快速过滤。
其中,所述段级列簇式存储模块1,包括:
列簇记录存储模块11,用于将缓存中的流数据根据表的列簇定义依序存储为列簇记录,写入到内存中;
其中,根据列簇定义,确定每个字段的类型,并计算出每个字段在记录中的偏移量;对于定长字段,直接通过偏移量可以访问到相应的值;而对于变长字段,则需要从变长字段偏移区中读取该字段的实际偏移,然后根据这个偏移值到变长字段存储区中访问相应的值。
压缩模块12,对内存中该列簇的列簇记录从前往后进行压缩,直到得到近似一个指定数据页大小的压缩数据页,将该数据页写到一个列簇数据中,如此反复写完整个列簇数据,存入为一个数据段;
页面概要信息记录模块13,用于在写数据页的同时,将该数据页的页面概要信息记录在内存中,并把该数据段的元数据信息追加写入到列簇数据的尾端,形成一个完整的数据段加入存储文件中;
数据段尺寸判断模块14,用于判断所述数据段的大小是否近似等于分布式文件系统中一个数据块的大小,若是,则触发数据段生成模块15;否则,触发列簇记录存储模块11;
数据段生成模块15,用于生成新的数据段,并将新的数据段追加在上一数据段的尾端;
文件长度判断模块16,用于判断所述存储文件长度是否达到设定长度阈值,若是,则加载服务器将内存中描述该存储文件内所有数据段的索引信息写到存储文件的尾端,关闭该存储文件,并重新建立新的存储文件;否则触发数据段生成模块15。
所述过滤模块2,包括:
判断模块21,用于判断过滤条件涉及的字段是否集中在一个列簇数据中,若是,则触发独立扫描模块22;否则,触发并行扫描模块23;
独立扫描模块22,用于遍历所述列簇数据的所有数据页的页面概要信息,并根据过滤条件表达式的操作类型及其所有子表达式,计算每个数据页在该过滤条件表达式下的扫描模式,以建立扫描表;
所述独立扫描模块22,包括:
运算类型判断模块221,用于判断所述过滤条件表达式的运算类型,如果是比较运算,则触发比较运算标记模块222;如果是逻辑运算,则触发逻辑运算标记模块223;如果是其他类型,则触发其他类型标记模块224;
比较运算标记模块222,用于当所述过滤条件表达式为比较运算时,根据该数据页的最大值和最小值判断该数据页中的所有记录是不是都能满足该比较表达式;如果所有记录都满足该比较表达式,则该数据页的扫描模式为POSITIVE;如果所有记录都不能满足该比较表达式,则该数据页的扫描模式为NEGATIVE;否则,该数据页的扫描模式为ROUGH;
逻辑运算标记模块223,用于当所述过滤条件表达式为逻辑运算时,首先计算其子表达式的扫描模式;接着,判断逻辑运算符:如果为AND或者OR操作,则将其子表达式运算得来的扫描模式进行逻辑运算得到最终数据页的扫描模式;如果为NOT操作,则对其子表达式运算得来的扫描模式进行取反操作:POSITIVE变为NEGATIVE,NEGATIVE变为POSITIVE,ROUGH则保持不变;
其他类型标记模块224,用于当所述过滤条件表达式为其他类型,则该数据页的扫描模式为ROUGH。
并行扫描模块23,用于将过滤条件表达式按照列簇数据归类拆分成多个子表达式,使得每个子表达式只包含该列簇数据中的字段,然后,分别对每个子表达式运用独立扫描模块22的方法,构建每个列簇的扫描模式列表;最后,将每个子表达式构建的扫描模式列表进行相应的逻辑运算,得到最终的扫描表。
所述并行扫描模块23,包括:
数据页遍历模块231.用于从不同列簇数据的第一个数据页开始遍历;
关系判断模块232.用于分别取得该数据页对应的页面概要信息和该数据页当前的扫描模式;通过比较两个数据页的起始记录号和结束记录号,判断这两个数据页面的相互关系,若是包含关系,则触发包含关系更新模块233;若是等价关系,则触发等价关系更新模块234;若是其他情况,则不做任何操作;
包含关系更新模块233,如果两个数据页进行逻辑与操作并且其中一个数据页的扫描模式为NEGATIVE,则设置另一数据页的扫描模式为NEGATIVE;如果两个数据页进行逻辑或操作并且其中一个数据页的扫描模式为POSITIVE,则设置另一数据页的扫描模式为POSITIVE;
等价关系更新模块234,如果两个数据页进行逻辑与操作并且任一数据页的扫描模式为NEGATIVE,则设置另一个数据页的扫描模式为NEGATIVE;如果两个数据页进行逻辑或操作并且任一数据页的扫描模式为POSITIVE,则设置另一个数据页的扫描模式为POSITIVE。
通过测试结果表明,使用段级列簇式存储和SCANMAP机制后,聚集类查询5~10倍优于Hive系统;在选择率低时3~5倍优于HadoopDB以及并行数据库系统GridSQL,在选择率高时50%~2倍优于HadoopDB以及GridSQL。关联类查询50%~2倍优于Hive系统。
本发明的有益效果在于:
1.本发明的基于Hadoop的海量流数据存储和查询方法和系统,针对于结构化的流数据,提出了一种基于HDFS的段级列簇式存储组织,利用列存储和压缩技术,可以减少磁盘I/O的数据量,提高数据加载和查询分析的性能;
2.本发明的基于Hadoop的海量流数据存储和查询方法和系统,针对流数据时间近似有序的特性,提出了SCANMAP优化机制,利用段级列簇式存储结构中记录的概要信息,对数据进行快速过滤以提高查询处理效率。
通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。
Claims (12)
1.一种基于Hadoop的海量流数据存储和查询方法,其特征在于,所述方法,包括下列步骤:
步骤100.构建段级列簇式存储结构:将流数据依次存储为列簇记录,并对列簇记录从前往后进行压缩得到压缩数据页,将该压缩数据页写到一个列簇数据,同时将该压缩数据页的页面概要信息追加写入到列簇数据的尾端,得到完整的数据段;
步骤200.在查询语句执行的过程中,根据过滤条件,利用存储在数据段尾端的所述页面概要信息构建出一张扫描表对数据进行快速过滤。
2.根据权利要求1所述的基于Hadoop的海量流数据存储和查询方法,其特征在于,所述步骤100,包括下列步骤:
步骤110.将缓存中的流数据根据表的列簇定义依序存储为列簇记录,写入到内存中;
步骤120.对内存中该列簇的列簇记录从前往后进行压缩,直到得到近似一个指定数据页大小的压缩数据页,将该数据页写到一个列簇数据中,如此反复写完整个列簇数据,存为一个数据段;
步骤130.在写数据页的同时,将该数据页的页面概要信息记录在内存中,并把该数据段的元数据信息追加写入到列簇数据的尾端,形成一个完整的数据段加入存储文件中;
步骤140.判断所述数据段的大小是否近似等于分布式文件系统中一个数据块的大小,若是,则执行步骤150;否则,返回步骤110;
步骤150;将新的数据段追加在上一数据段的尾端,重复步骤110-130生成新的数据段,并;
步骤160.判断所述存储文件长度是否达到设定长度阈值,若是,则加载服务器将内存中描述该存储文件内所有数据段的索引信息写到存储文件的尾端,关闭该存储文件,并重新建立新的存储文件;否则返回步骤150。
3.根据权利要求2所述的基于Hadoop的海量流数据存储和查询方法,其特征在于,步骤110中,根据列簇定义,确定每个字段的类型,并计算出每个字段在记录中的偏移量;对于定长字段,直接通过偏移量可以访问到相应的值;而对于变长字段,则需要从变长字段偏移区中读取该字段的实际偏移,然后根据这个偏移值到变长字段存储区中访问相应的值。
4.根据权利要求1所述的基于Hadoop的海量流数据存储和查询方法,其特征在于,所述步骤200,包括下列步骤:
步骤210.判断过滤条件涉及的字段是否集中在一个列簇数据中,若是,则执行步骤220;否则,执行步骤230;
步骤220.遍历所述列簇数据的所有数据页的页面概要信息,并根据过滤条件表达式的操作类型及其所有子表达式,计算每个数据页在该过滤条件表达式下的扫描模式,以建立扫描表;
步骤230.将过滤条件表达式按照列簇数据归类拆分成多个子表达式,使得每个子表达式只包含该列簇数据中的字段,然后,分别对每个子表达式运用步骤220的方法,构建每个列簇的扫描模式列表;最后,将每个子表达式构建的扫描模式列表进行相应的逻辑运算,得到最终的扫描表。
5.根据权利要求4所述的基于Hadoop的海量流数据存储和查询方法,其特征在于,所述步骤220,包括下列步骤:
步骤221.判断所述过滤条件表达式的运算类型,如果是比较运算,则执行步骤222;如果是逻辑运算,则执行步骤223;如果是其他类型,则执行步骤224;
步骤222.所述过滤条件表达式为比较运算时,根据该数据页的最大值和最小值判断该数据页中的所有记录是不是都能满足该比较表达式;如果所有记录都满足该比较表达式,则该数据页的扫描模式为POSITIVE;如果所有记录都不能满足该比较表达式,则该数据页的扫描模式为NEGATIVE;否则,该数据页的扫描模式为ROUGH;
步骤223.所述过滤条件表达式为逻辑运算时,首先计算其子表达式的扫描模式;接着,判断逻辑运算符:如果为AND或者OR操作,则将其子表达式运算得来的扫描模式进行逻辑运算得到最终数据页的扫描模式;如果为NOT操作,则对其子表达式运算得来的扫描模式进行取反操作:POSITIVE变为NEGATIVE,NEGATIVE变为POSITIVE,ROUGH则保持不变;
步骤224.所述过滤条件表达式为其他类型,则该数据页的扫描模式为ROUGH。
6.根据权利要求4所述的基于Hadoop的海量流数据存储和查询方法,其特征在于,所述步骤230,包括下列步骤:
步骤231.从不同列簇数据的第一个数据页开始遍历;
步骤232.分别取得该数据页对应的页面概要信息和该数据页当前的扫描模式;通过比较两个数据页的起始记录号和结束记录号,判断这两个数据页的相互关系,若是包含关系,则执行步骤233;若是等价关系,则执行步骤234;若是其他情况,则执行步骤235;
步骤233.如果两个数据页进行逻辑与操作并且其中一个数据页的扫描模式为NEGATIVE,则设置另一数据页的扫描模式为NEGATIVE;如果两个数据页进行逻辑或操作并且其中一个数据页的扫描模式为POSITIVE,则设置另一数据页的扫描模式为POSITIVE;
步骤234.如果两个数据页进行逻辑与操作并且任一数据页的扫描模式为NEGATIVE,则设置另一个数据页的扫描模式为NEGATIVE;如果两个数据页进行逻辑或操作并且任一数据页的扫描模式为POSITIVE,则设置另一个数据页的扫描模式为POSITIVE;
步骤235.其他情况,则不做任何操作;
步骤236.根据计算需求移动相应列簇数据的下一个数据页,返回步骤232,直到遍历完所述不同的列簇数据。
7.一种基于Hadoop的海量流数据存储和查询系统,其特征在于,所述系统,包括:
段级列簇式存储模块,用于将流数据依次存储为列簇记录,并对列簇记录从前往后进行压缩得到压缩数据页,将该压缩数据页写到一个列簇数据,同时将该压缩数据页的页面概要信息追加写入到列簇数据的尾端,得到完整的数据段;
过滤模块,在查询语句执行的过程中,根据过滤条件,利用存储在数据段尾端的所述页面概要信息构建出一张扫描表对数据进行快速过滤。
8.根据权利要求7所述的基于Hadoop的海量流数据存储和查询系统,其特征在于,所述段级列簇式存储模块,包括:
列簇记录存储模块,用于将缓存中的流数据根据表的列簇定义依序存储为列簇记录,写入到内存中;
压缩模块,用于对内存中该列簇的列簇记录从前往后进行压缩,直到得到近似一个指定数据页大小的压缩数据页,将该数据页写到一个列簇数据中,如此反复写完整个列簇数据,存入为一个数据段;
页面概要信息记录模块,用于在写数据页的同时,将该数据页的页面概要信息记录在内存中,并把该数据段的元数据信息追加写入到列簇数据的尾端,形成一个完整的数据段加入存储文件中;
数据段尺寸判断模块,用于判断所述数据段的大小是否近似等于分布式文件系统中一个数据块的大小,若是,则触发数据段生成模块;否则,触发列簇记录存储模块;
数据段生成模块,用于生成新的数据段,并将新的数据段追加在上一数据段的尾端;
文件长度判断模块,用于判断所述存储文件长度是否达到设定长度阈值,若是,则加载服务器将内存中描述该存储文件内所有数据段的索引信息写到存储文件的尾端,关闭该存储文件,并重新建立新的存储文件;否则触发数据段生成模块。
9.根据权利要求8所述的基于Hadoop的海量流数据存储和查询系统,其特征在于,所述列簇记录存储模块,根据列簇定义,确定每个字段的类型,并计算出每个字段在记录中的偏移量;对于定长字段,直接通过偏移量可以访问到相应的值;而对于变长字段,则需要从变长字段偏移区中读取该字段的实际偏移,然后根据这个偏移值到变长字段存储区中访问相应的值。
10.根据权利要求7所述的基于Hadoop的海量流数据存储和查询系统,其特征在于,所述过滤模块,包括:
判断模块,用于判断过滤条件涉及的字段是否集中在一个列簇数据中,若是,则触发独立扫描模块;否则,触发并行扫描模块;
独立扫描模块,用于遍历所述列簇数据的所有数据页的页面概要信息,并根据过滤条件表达式的操作类型及其所有子表达式,计算每个数据页在该过滤条件表达式下的扫描模式,以建立扫描表;
并行扫描模块,用于将过滤条件表达式按照列簇数据归类拆分成多个子表达式,使得每个子表达式只包含该列簇数据中的字段,然后,分别对每个子表达式运用独立扫描模块的方法,构建每个列簇的扫描模式列表;最后,将每个子表达式构建的扫描模式列表进行相应的逻辑运算,得到最终的扫描表。
11.根据权利要求10所述的基于Hadoop的海量流数据存储和查询系统,其特征在于,所述独立扫描模块,包括:
运算类型判断模块,用于判断所述过滤条件表达式的运算类型,如果是比较运算,则触发比较运算标记模块;如果是逻辑运算,则触发逻辑运算标记模块;如果是其他类型,则触发其他类型标记模块;
比较运算标记模块,用于当所述过滤条件表达式为比较运算时,根据该数据页的最大值和最小值判断该数据页中的所有记录是不是都能满足该比较表达式;如果所有记录都满足该比较表达式,则该数据页的扫描模式为POSITIVE;如果所有记录都不能满足该比较表达式,则该数据页的扫描模式为NEGATIVE;否则,该数据页的扫描模式为ROUGH;
逻辑运算标记模块,用于当所述过滤条件表达式为逻辑运算时,首先计算其子表达式的扫描模式;接着,判断逻辑运算符:如果为AND或者OR操作,则将其子表达式运算得来的扫描模式进行逻辑运算得到最终数据页的扫描模式;如果为NOT操作,则对其子表达式运算得来的扫描模式进行取反操作:POSITIVE变为NEGATIVE,NEGATIVE变为POSITIVE,ROUGH则保持不变;
其他类型标记模块,用于当所述过滤条件表达式为其他类型,则该数据页的扫描模式为ROUGH。
12.根据权利要求10所述的基于Hadoop的海量流数据存储和查询系统,其特征在于,所述并行扫描模块,包括:
数据页遍历模块.用于从不同列簇数据的第一个数据页开始遍历;
关系判断模块.用于分别取得该数据页对应的页面概要信息和该数据页当前的扫描模式;通过比较两个数据页的起始记录号和结束记录号,判断这两个数据页面的相互关系,若是包含关系,则触发包含关系更新模块;若是等价关系,则触发等价关系更新模块;若是其他情况,则不做任何操作;
包含关系更新模块,如果两个数据页进行逻辑与操作并且其中一个数据页的扫描模式为NEGATIVE,则设置另一数据页的扫描模式为NEGATIVE;如果两个数据页进行逻辑或操作并且其中一个数据页的扫描模式为POSITIVE,则设置另一数据页的扫描模式为POSITIVE;
等价关系更新模块,如果两个数据页进行逻辑与操作并且任一数据页的扫描模式为NEGATIVE,则设置另一个数据页的扫描模式为NEGATIVE;如果两个数据页进行逻辑或操作并且任一数据页的扫描模式为POSITIVE,则设置另一个数据页的扫描模式为POSITIVE。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105464733A CN101996250B (zh) | 2010-11-15 | 2010-11-15 | 一种基于Hadoop的海量流数据存储和查询方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105464733A CN101996250B (zh) | 2010-11-15 | 2010-11-15 | 一种基于Hadoop的海量流数据存储和查询方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101996250A true CN101996250A (zh) | 2011-03-30 |
CN101996250B CN101996250B (zh) | 2012-07-25 |
Family
ID=43786404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105464733A Expired - Fee Related CN101996250B (zh) | 2010-11-15 | 2010-11-15 | 一种基于Hadoop的海量流数据存储和查询方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101996250B (zh) |
Cited By (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102332004A (zh) * | 2011-07-29 | 2012-01-25 | 中国科学院计算技术研究所 | 用于海量数据管理的数据处理方法和系统 |
CN102332027A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种基于Hadoop的海量非独立小文件关联存储方法 |
CN102419766A (zh) * | 2011-11-01 | 2012-04-18 | 西安电子科技大学 | 基于hdfs分布式文件系统的数据冗余及文件操作方法 |
CN102521246A (zh) * | 2011-11-11 | 2012-06-27 | 国网信息通信有限公司 | 一种云数据仓库系统 |
CN102542071A (zh) * | 2012-01-17 | 2012-07-04 | 深圳市同洲视讯传媒有限公司 | 一种分布式处理数据的系统及方法 |
CN102571959A (zh) * | 2012-01-11 | 2012-07-11 | 北京奇虎科技有限公司 | 一种数据下载系统及方法 |
CN102663117A (zh) * | 2012-04-18 | 2012-09-12 | 中国人民大学 | 面向数据库与Hadoop混合平台的OLAP查询处理方法 |
CN102750391A (zh) * | 2012-07-06 | 2012-10-24 | 深圳市远行科技有限公司 | 一种基于Hadoop分布式文件预览方法及其系统 |
CN102880615A (zh) * | 2011-07-15 | 2013-01-16 | 腾讯科技(深圳)有限公司 | 一种数据存储方法和装置 |
CN102880709A (zh) * | 2012-09-28 | 2013-01-16 | 用友软件股份有限公司 | 数据仓库管理系统和数据仓库管理方法 |
CN102902729A (zh) * | 2012-09-07 | 2013-01-30 | 大唐移动通信设备有限公司 | 矩阵数据处理方法及装置 |
CN102999519A (zh) * | 2011-09-15 | 2013-03-27 | 上海盛付通电子商务有限公司 | 一种数据库的读写方法及系统 |
CN102999506A (zh) * | 2011-09-13 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种获取用户独立访问数的方法与装置 |
CN103019951A (zh) * | 2011-09-20 | 2013-04-03 | 阿里巴巴集团控股有限公司 | 有序数据的记录方法和装置、有序数据的访问方法和装置 |
CN103020315A (zh) * | 2013-01-10 | 2013-04-03 | 中国人民解放军国防科学技术大学 | 一种基于主从分布式文件系统的海量小文件存储方法 |
CN103093324A (zh) * | 2011-10-27 | 2013-05-08 | 镇江雅迅软件有限责任公司 | 一种基于数据表拆分技术的库存管理系统 |
CN103198068A (zh) * | 2012-01-07 | 2013-07-10 | 湖南省电力勘测设计院 | 一种动态信息数据库在配电自动化系统中的应用方法 |
CN103207887A (zh) * | 2013-01-14 | 2013-07-17 | 广州佳都信息技术研发有限公司 | 一种高效历史趋势数据存储方法 |
CN103218287A (zh) * | 2012-01-20 | 2013-07-24 | 百度在线网络技术(北京)有限公司 | 用于对hadoop streaming脚本进行测试的方法及装置 |
CN103946847A (zh) * | 2011-11-04 | 2014-07-23 | 惠普发展公司,有限责任合伙企业 | 分布式事件处理 |
CN104090954A (zh) * | 2014-07-04 | 2014-10-08 | 用友软件股份有限公司 | 只读表的连接方法和只读表的连接系统 |
CN104572862A (zh) * | 2014-12-19 | 2015-04-29 | 阳珍秀 | 一种海量数据存储访问方法及系统 |
CN104702702A (zh) * | 2012-01-11 | 2015-06-10 | 北京奇虎科技有限公司 | 一种数据下载系统及方法 |
CN104714997A (zh) * | 2013-12-13 | 2015-06-17 | 国际商业机器公司 | 提取装置、数据处理系统和提取方法 |
CN105159845A (zh) * | 2015-09-07 | 2015-12-16 | 四川神琥科技有限公司 | 存储器读取方法 |
CN105205084A (zh) * | 2014-06-30 | 2015-12-30 | 清华大学 | 一种数据处理方法、装置及系统 |
CN105701209A (zh) * | 2016-01-13 | 2016-06-22 | 广西师范大学 | 一种提高大数据上并行连接性能的负载平衡方法 |
CN105740295A (zh) * | 2014-12-12 | 2016-07-06 | 中国移动通信集团公司 | 一种分布式数据的处理方法及装置 |
CN105893435A (zh) * | 2015-12-11 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | 数据加载及存储设备、方法、以及系统 |
CN105981033A (zh) * | 2014-02-14 | 2016-09-28 | 慧与发展有限责任合伙企业 | 将放置策略分配给片段集合 |
WO2016169456A1 (en) * | 2015-04-20 | 2016-10-27 | Huawei Technologies Co., Ltd. | Serialization scheme for storing data and lightweight indices on devices with append-only bands |
US9501550B2 (en) | 2012-04-18 | 2016-11-22 | Renmin University Of China | OLAP query processing method oriented to database and HADOOP hybrid platform |
CN106156191A (zh) * | 2015-04-21 | 2016-11-23 | 北京大学 | 基于ePub文件的试读方法和基于ePub文件的试读系统 |
CN106353668A (zh) * | 2016-07-06 | 2017-01-25 | 芯海科技(深圳)股份有限公司 | 一种在Strip Test测试工艺的MAP数据压缩/恢复方法和系统 |
CN106469172A (zh) * | 2015-08-19 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 分布式文件系统的数据更新方法和装置 |
US9715515B2 (en) | 2014-01-31 | 2017-07-25 | Microsoft Technology Licensing, Llc | External data access with split index |
CN107276854A (zh) * | 2017-07-27 | 2017-10-20 | 中兴软创科技股份有限公司 | 一种大数据下molap统计分析的方法 |
CN107341227A (zh) * | 2017-07-01 | 2017-11-10 | 中国科学院计算机网络信息中心 | 文件处理方法、服务器及计算机可读存储介质 |
US9928267B2 (en) | 2014-06-13 | 2018-03-27 | International Business Machines Corporation | Hierarchical database compression and query processing |
CN109445704A (zh) * | 2018-10-29 | 2019-03-08 | 南京录信软件技术有限公司 | 一种综合使用多种设备存储海量数据的方法 |
CN109918369A (zh) * | 2017-12-13 | 2019-06-21 | 中兴通讯股份有限公司 | 数据存储方法及装置 |
US10353784B2 (en) | 2013-12-18 | 2019-07-16 | International Business Machines Corporation | Dynamically adjusting the number of replicas of a file according to the probability that the file will be accessed within a distributed file system |
CN110096555A (zh) * | 2019-04-17 | 2019-08-06 | 北京奇安信科技有限公司 | 一种分布式系统的表匹配处理方法及装置 |
US10534765B2 (en) | 2017-04-07 | 2020-01-14 | Micro Focus Llc | Assigning segments of a shared database storage to nodes |
CN110795265A (zh) * | 2019-10-25 | 2020-02-14 | 东北大学 | 一种基于乐观容错方法的迭代器 |
CN111159176A (zh) * | 2019-11-29 | 2020-05-15 | 中国科学院计算技术研究所 | 一种海量流数据的存储和读取的方法和系统 |
CN112612762A (zh) * | 2020-12-18 | 2021-04-06 | 深圳智慧林网络科技有限公司 | 数据处理方法及相关设备 |
CN113485638A (zh) * | 2021-06-07 | 2021-10-08 | 贵州大学 | 一种面向海量天文数据的存取优化系统 |
CN113760240A (zh) * | 2020-09-02 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种生成数据模型的方法和装置 |
CN115934730A (zh) * | 2023-01-09 | 2023-04-07 | 阿里云计算有限公司 | 数据处理方法和装置、介质和计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1744090A (zh) * | 2005-09-13 | 2006-03-08 | 北京中星微电子有限公司 | 文件分配表文件系统读写方法及装置 |
CN1904858A (zh) * | 2005-07-25 | 2007-01-31 | 索尼株式会社 | 数据存储设备、数据存储方法以及记录/再现系统 |
CN101127049A (zh) * | 2006-08-16 | 2008-02-20 | Sap股份公司 | 结构化数据的聚类 |
US20090171999A1 (en) * | 2007-12-27 | 2009-07-02 | Cloudscale Inc. | System and Methodology for Parallel Stream Processing |
-
2010
- 2010-11-15 CN CN2010105464733A patent/CN101996250B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1904858A (zh) * | 2005-07-25 | 2007-01-31 | 索尼株式会社 | 数据存储设备、数据存储方法以及记录/再现系统 |
CN1744090A (zh) * | 2005-09-13 | 2006-03-08 | 北京中星微电子有限公司 | 文件分配表文件系统读写方法及装置 |
CN101127049A (zh) * | 2006-08-16 | 2008-02-20 | Sap股份公司 | 结构化数据的聚类 |
US20090171999A1 (en) * | 2007-12-27 | 2009-07-02 | Cloudscale Inc. | System and Methodology for Parallel Stream Processing |
Cited By (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880615A (zh) * | 2011-07-15 | 2013-01-16 | 腾讯科技(深圳)有限公司 | 一种数据存储方法和装置 |
CN102332004B (zh) * | 2011-07-29 | 2013-04-24 | 中国科学院计算技术研究所 | 用于海量数据管理的数据处理方法和系统 |
CN102332004A (zh) * | 2011-07-29 | 2012-01-25 | 中国科学院计算技术研究所 | 用于海量数据管理的数据处理方法和系统 |
CN102999506A (zh) * | 2011-09-13 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种获取用户独立访问数的方法与装置 |
CN102999519B (zh) * | 2011-09-15 | 2017-05-17 | 上海盛付通电子商务有限公司 | 一种数据库的读写方法及系统 |
CN102999519A (zh) * | 2011-09-15 | 2013-03-27 | 上海盛付通电子商务有限公司 | 一种数据库的读写方法及系统 |
CN103019951B (zh) * | 2011-09-20 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 有序数据的记录方法和装置、有序数据的访问方法和装置 |
CN103019951A (zh) * | 2011-09-20 | 2013-04-03 | 阿里巴巴集团控股有限公司 | 有序数据的记录方法和装置、有序数据的访问方法和装置 |
CN102332027A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种基于Hadoop的海量非独立小文件关联存储方法 |
CN103093324A (zh) * | 2011-10-27 | 2013-05-08 | 镇江雅迅软件有限责任公司 | 一种基于数据表拆分技术的库存管理系统 |
CN102419766A (zh) * | 2011-11-01 | 2012-04-18 | 西安电子科技大学 | 基于hdfs分布式文件系统的数据冗余及文件操作方法 |
CN103946847A (zh) * | 2011-11-04 | 2014-07-23 | 惠普发展公司,有限责任合伙企业 | 分布式事件处理 |
CN102521246A (zh) * | 2011-11-11 | 2012-06-27 | 国网信息通信有限公司 | 一种云数据仓库系统 |
CN103198068A (zh) * | 2012-01-07 | 2013-07-10 | 湖南省电力勘测设计院 | 一种动态信息数据库在配电自动化系统中的应用方法 |
CN104702702B (zh) * | 2012-01-11 | 2018-03-23 | 北京奇虎科技有限公司 | 一种数据下载系统及方法 |
CN102571959A (zh) * | 2012-01-11 | 2012-07-11 | 北京奇虎科技有限公司 | 一种数据下载系统及方法 |
CN104702702A (zh) * | 2012-01-11 | 2015-06-10 | 北京奇虎科技有限公司 | 一种数据下载系统及方法 |
CN102571959B (zh) * | 2012-01-11 | 2015-05-06 | 北京奇虎科技有限公司 | 一种数据下载系统及方法 |
CN102542071B (zh) * | 2012-01-17 | 2014-02-26 | 深圳市龙视传媒有限公司 | 一种分布式处理数据的系统及方法 |
CN102542071A (zh) * | 2012-01-17 | 2012-07-04 | 深圳市同洲视讯传媒有限公司 | 一种分布式处理数据的系统及方法 |
CN103218287B (zh) * | 2012-01-20 | 2016-03-16 | 百度在线网络技术(北京)有限公司 | 用于对hadoop streaming脚本进行测试的方法及装置 |
CN103218287A (zh) * | 2012-01-20 | 2013-07-24 | 百度在线网络技术(北京)有限公司 | 用于对hadoop streaming脚本进行测试的方法及装置 |
CN102663117A (zh) * | 2012-04-18 | 2012-09-12 | 中国人民大学 | 面向数据库与Hadoop混合平台的OLAP查询处理方法 |
US9501550B2 (en) | 2012-04-18 | 2016-11-22 | Renmin University Of China | OLAP query processing method oriented to database and HADOOP hybrid platform |
CN102750391A (zh) * | 2012-07-06 | 2012-10-24 | 深圳市远行科技有限公司 | 一种基于Hadoop分布式文件预览方法及其系统 |
CN102902729B (zh) * | 2012-09-07 | 2016-03-02 | 大唐移动通信设备有限公司 | 矩阵数据处理方法及装置 |
CN102902729A (zh) * | 2012-09-07 | 2013-01-30 | 大唐移动通信设备有限公司 | 矩阵数据处理方法及装置 |
CN102880709A (zh) * | 2012-09-28 | 2013-01-16 | 用友软件股份有限公司 | 数据仓库管理系统和数据仓库管理方法 |
CN103020315B (zh) * | 2013-01-10 | 2015-08-19 | 中国人民解放军国防科学技术大学 | 一种基于主从分布式文件系统的海量小文件存储方法 |
CN103020315A (zh) * | 2013-01-10 | 2013-04-03 | 中国人民解放军国防科学技术大学 | 一种基于主从分布式文件系统的海量小文件存储方法 |
CN103207887A (zh) * | 2013-01-14 | 2013-07-17 | 广州佳都信息技术研发有限公司 | 一种高效历史趋势数据存储方法 |
US10089370B2 (en) | 2013-12-13 | 2018-10-02 | International Business Machines Corporation | Extraction device, data processing system, and extraction method |
US9984134B2 (en) | 2013-12-13 | 2018-05-29 | International Business Machines Corporation | Extraction device, data processing system, and extraction method |
CN104714997B (zh) * | 2013-12-13 | 2018-05-01 | 国际商业机器公司 | 提取装置、数据处理系统和提取方法 |
CN104714997A (zh) * | 2013-12-13 | 2015-06-17 | 国际商业机器公司 | 提取装置、数据处理系统和提取方法 |
US11176005B2 (en) | 2013-12-18 | 2021-11-16 | International Business Machines Corporation | Dynamically adjusting the number of replicas of a file according to the probability that the file will be accessed within a distributed file system |
US10353784B2 (en) | 2013-12-18 | 2019-07-16 | International Business Machines Corporation | Dynamically adjusting the number of replicas of a file according to the probability that the file will be accessed within a distributed file system |
US11030179B2 (en) | 2014-01-31 | 2021-06-08 | Microsoft Technology Licensing, Llc | External data access with split index |
US9715515B2 (en) | 2014-01-31 | 2017-07-25 | Microsoft Technology Licensing, Llc | External data access with split index |
CN105981033A (zh) * | 2014-02-14 | 2016-09-28 | 慧与发展有限责任合伙企业 | 将放置策略分配给片段集合 |
CN105981033B (zh) * | 2014-02-14 | 2019-05-07 | 慧与发展有限责任合伙企业 | 将放置策略分配给片段集合 |
US9928267B2 (en) | 2014-06-13 | 2018-03-27 | International Business Machines Corporation | Hierarchical database compression and query processing |
CN105205084B (zh) * | 2014-06-30 | 2018-10-16 | 清华大学 | 一种数据处理方法、装置及系统 |
CN105205084A (zh) * | 2014-06-30 | 2015-12-30 | 清华大学 | 一种数据处理方法、装置及系统 |
CN104090954A (zh) * | 2014-07-04 | 2014-10-08 | 用友软件股份有限公司 | 只读表的连接方法和只读表的连接系统 |
CN104090954B (zh) * | 2014-07-04 | 2019-02-05 | 用友网络科技股份有限公司 | 只读表的连接方法和只读表的连接系统 |
CN105740295A (zh) * | 2014-12-12 | 2016-07-06 | 中国移动通信集团公司 | 一种分布式数据的处理方法及装置 |
CN105740295B (zh) * | 2014-12-12 | 2019-06-14 | 中国移动通信集团公司 | 一种分布式数据的处理方法及装置 |
CN104572862A (zh) * | 2014-12-19 | 2015-04-29 | 阳珍秀 | 一种海量数据存储访问方法及系统 |
CN107533562B (zh) * | 2015-04-20 | 2020-07-24 | 华为技术有限公司 | 在具有只追加磁道带的设备上存储数据和轻量级索引的序列化方案 |
US10394786B2 (en) | 2015-04-20 | 2019-08-27 | Futurewei Technologies, Inc. | Serialization scheme for storing data and lightweight indices on devices with append-only bands |
CN107533562A (zh) * | 2015-04-20 | 2018-01-02 | 华为技术有限公司 | 在具有只追加磁道带的设备上存储数据和轻量级索引的序列化方案 |
WO2016169456A1 (en) * | 2015-04-20 | 2016-10-27 | Huawei Technologies Co., Ltd. | Serialization scheme for storing data and lightweight indices on devices with append-only bands |
CN106156191B (zh) * | 2015-04-21 | 2019-08-06 | 北京大学 | 基于ePub文件的试读方法和基于ePub文件的试读系统 |
CN106156191A (zh) * | 2015-04-21 | 2016-11-23 | 北京大学 | 基于ePub文件的试读方法和基于ePub文件的试读系统 |
CN106469172A (zh) * | 2015-08-19 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 分布式文件系统的数据更新方法和装置 |
CN106469172B (zh) * | 2015-08-19 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 分布式文件系统的数据更新方法和装置 |
CN105159845A (zh) * | 2015-09-07 | 2015-12-16 | 四川神琥科技有限公司 | 存储器读取方法 |
CN105893435A (zh) * | 2015-12-11 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | 数据加载及存储设备、方法、以及系统 |
CN105701209A (zh) * | 2016-01-13 | 2016-06-22 | 广西师范大学 | 一种提高大数据上并行连接性能的负载平衡方法 |
CN106353668A (zh) * | 2016-07-06 | 2017-01-25 | 芯海科技(深圳)股份有限公司 | 一种在Strip Test测试工艺的MAP数据压缩/恢复方法和系统 |
CN106353668B (zh) * | 2016-07-06 | 2020-03-17 | 芯海科技(深圳)股份有限公司 | 一种在Strip Test测试工艺的MAP数据压缩/恢复方法和系统 |
US10534765B2 (en) | 2017-04-07 | 2020-01-14 | Micro Focus Llc | Assigning segments of a shared database storage to nodes |
CN107341227A (zh) * | 2017-07-01 | 2017-11-10 | 中国科学院计算机网络信息中心 | 文件处理方法、服务器及计算机可读存储介质 |
CN107341227B (zh) * | 2017-07-01 | 2020-12-25 | 中国科学院计算机网络信息中心 | 文件处理方法、服务器及计算机可读存储介质 |
CN107276854B (zh) * | 2017-07-27 | 2021-11-09 | 浩鲸云计算科技股份有限公司 | 一种大数据下molap统计分析的方法 |
CN107276854A (zh) * | 2017-07-27 | 2017-10-20 | 中兴软创科技股份有限公司 | 一种大数据下molap统计分析的方法 |
CN109918369A (zh) * | 2017-12-13 | 2019-06-21 | 中兴通讯股份有限公司 | 数据存储方法及装置 |
CN109918369B (zh) * | 2017-12-13 | 2024-01-23 | 金篆信科有限责任公司 | 数据存储方法及装置 |
CN109445704A (zh) * | 2018-10-29 | 2019-03-08 | 南京录信软件技术有限公司 | 一种综合使用多种设备存储海量数据的方法 |
CN110096555A (zh) * | 2019-04-17 | 2019-08-06 | 北京奇安信科技有限公司 | 一种分布式系统的表匹配处理方法及装置 |
CN110795265A (zh) * | 2019-10-25 | 2020-02-14 | 东北大学 | 一种基于乐观容错方法的迭代器 |
CN110795265B (zh) * | 2019-10-25 | 2021-04-02 | 东北大学 | 一种基于乐观容错方法的迭代器 |
CN111159176A (zh) * | 2019-11-29 | 2020-05-15 | 中国科学院计算技术研究所 | 一种海量流数据的存储和读取的方法和系统 |
CN113760240A (zh) * | 2020-09-02 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种生成数据模型的方法和装置 |
CN113760240B (zh) * | 2020-09-02 | 2024-06-14 | 北京沃东天骏信息技术有限公司 | 一种生成数据模型的方法和装置 |
CN112612762A (zh) * | 2020-12-18 | 2021-04-06 | 深圳智慧林网络科技有限公司 | 数据处理方法及相关设备 |
CN112612762B (zh) * | 2020-12-18 | 2024-06-25 | 深圳智慧林网络科技有限公司 | 数据处理方法及相关设备 |
CN113485638A (zh) * | 2021-06-07 | 2021-10-08 | 贵州大学 | 一种面向海量天文数据的存取优化系统 |
CN115934730A (zh) * | 2023-01-09 | 2023-04-07 | 阿里云计算有限公司 | 数据处理方法和装置、介质和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101996250B (zh) | 2012-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101996250B (zh) | 一种基于Hadoop的海量流数据存储和查询方法及系统 | |
Ikeda et al. | Provenance for generalized map and reduce workflows | |
Ji et al. | Big data processing in cloud computing environments | |
CN103003813B (zh) | 记录的列状存储表示 | |
CN104156380A (zh) | 一种分布式存储器哈希索引方法及系统 | |
CN105824744A (zh) | 一种基于b2b平台的实时日志采集分析方法 | |
CN102831222A (zh) | 一种基于重复数据删除的差量压缩方法 | |
RU2646349C2 (ru) | Способ и система для обработки данных | |
CN103761236A (zh) | 一种增量式频繁模式增长数据挖掘方法 | |
CN102142032B (zh) | 一种分布式文件系统的数据读写方法及系统 | |
Tang et al. | Deferred lightweight indexing for log-structured key-value stores | |
Lee et al. | An efficient algorithm for mining frequent inter-transaction patterns | |
CN105653609A (zh) | 基于内存的数据处理方法及装置 | |
Stonebraker | Technical perspective one size fits all: an idea whose time has come and gone | |
CN108846021A (zh) | 一种基于用户访问偏好模型的海量小文件存储方法 | |
Yin et al. | Muse: A multi-tierd and sla-driven deduplication framework for cloud storage systems | |
Wang et al. | Lightweight indexing of observational data in log-structured storage | |
JPWO2020012380A5 (zh) | ||
CN103324762A (zh) | 基于Hadoop的索引创建方法及其索引方法 | |
CN106547484A (zh) | 一种基于raid5的实现内存数据可靠性方法及系统 | |
Balaji et al. | Distributed graph path queries using spark | |
Mathew et al. | Efficient information retrieval using Lucene, LIndex and HIndex in Hadoop | |
Rababa et al. | Optimizations for filter-based join algorithms in MapReduce | |
CN108121807B (zh) | Hadoop环境下多维索引结构OBF-Index的实现方法 | |
Yin et al. | GOM-Hadoop: A distributed framework for efficient analytics on ordered datasets |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120725 Termination date: 20211115 |
|
CF01 | Termination of patent right due to non-payment of annual fee |