CN103678519B - 一种支持Hive DML增强的混合存储系统及其方法 - Google Patents
一种支持Hive DML增强的混合存储系统及其方法 Download PDFInfo
- Publication number
- CN103678519B CN103678519B CN201310618652.7A CN201310618652A CN103678519B CN 103678519 B CN103678519 B CN 103678519B CN 201310618652 A CN201310618652 A CN 201310618652A CN 103678519 B CN103678519 B CN 103678519B
- Authority
- CN
- China
- Prior art keywords
- dualtable
- data
- tables
- hive
- row
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种支持Hive DML(Data Manipulation Language)增强的混合存储系统及其方法,该存储系统基于DualTable表建立,包括:DualTable表创建模块和DualTable表执行模块;DualTable表创建模块用于建立包含主表和附表,为每行数据维护了唯一ID并基于代价模型对外提供特定操作集的DualTable表;DualTable表执行模块用于基于DualTable的主表和附表实现对DualTable表中的数据进行读取和查询,基于DualTable的附表实现对DualTable表中的数据进行更改,基于代价模型实现DualTable表提供的操作集,基于有序的每行数据唯一ID实现主表和附表数据读取时的合并。
Description
技术领域
本发明涉及到大数据环境下,使Apache Hive高效的实现DML(Data ManipulationLanguage数据操作语言)操作的混合存储系统的开发与实现,特别涉及支持Hive DML增强的混合存储系统。
背景技术
Hive为基于Hadoop的数据分析提供了类SQL接口,减少了MapReduce开发量,同时方便了从现有的提供SQL接口的关系数据仓库向Hadoop生态系统的转换。Hive能够将用户定义的数据表模式映射到底层的数据存储之上,并基于MapReduce实现对数据的查询与操作。但是,受制于较弱的DML支持,Hive在企业级大数据处理中无法充分发挥效能。学术界和工业界进行了大量Hive优化的工作,包括了查询方案优化、执行系统优化、存储系统优化等方面。
(1)查询方案优化
在2011年The International Conference on Distributed Computing Systems(国际分布式计算系统会议)中Rubao Lee等人公开了一篇名为“YSmart:Yet another SQL-to-MapReduce Translator”的文献,YSmart能够在复杂的查询中发现关联的操作并基于规则对其化简来产生包含MapReduce任务最少的执行方案,从而减少查询时间。在2011年ACMSymposium on Cloud Computing(ACM云计算研讨会)上Sai Wu等人公开了一篇名为“QueryOptimization for Massively Parallel Data Processing”的文献,提出了一个Hive的优化器AQUA,它能够对查询中多个JOIN进行分组并基于代价模型选择最优的方案;在The38thInternational Conference on Very Large Data Bases(第38届国际超大规模数据库会议)上Harold Lim等人公开了一篇名为“Stubby:A Transformation-based Optimizer forMapReduce Workflows”的文献,提出了一个面向MapReduce工作流的优化器Stubby,它能基于一系列的变换(transformation)规则搜索出查询方案各种变体中最高效的一个。这些工作目 标在于提高Hive的查询性能,并没有为Hive带来DML操作的增强。
(2)执行系统优化
Hortonworks公司提出了Tez框架,基于Hadoop的第二代MapReduce框架YARN让Hadoop更好的执行DAG(Directed Acyclic Graph,有向无环图)工作流,减少Hive查询执行时不必要的中间任务和数据,从而缩短Hive查询响应时间。UC Berkeley大学开发的Shark(http://spark.incubator.apache.org/)在内存计算框架Spark的基础之上提供了与Hive兼容的接口,使得现有的Hive查询能够获得内存计算带来的加速。此外,学术界进行了大量MapReduce框架相关的优化工作,例如MRShare、Starfish、各种调度器等。这些工作都能够对基于MapReduce的Hive带来好处。这些工作缩短了Hive查询响应时间,但没有增强Hive的DML能力。
(3)存储系统优化
Hive默认使用HDFS(Hadoop Distributed File System)作为存储,HDFS是GoogleFile System的开源实现,提供的高吞吐的大文件顺序读。在2011年的Proceedings of theIEEE International Conference on Data Engineering(IEEE数据工程国际会议)中HeYongqiang等人公开了一篇文献“RCFile:a Fast and Space-efficient Data PlacementStructure in MapReduce-based Warehouse systems”,提出了利用行列混合存储及压缩的RCFile存储结构,实现数据快速加载、查询快速响应和磁盘充分利用,在Hive和Pig等系统中广泛应用。Hortonworks公司进一步提出了ORC(Optimized RCFile),提供了Hive类型模型的支持、部分统计信息和索引的存储等功能,进一步优化了Hive数据存储。Hive通过StorageHandler机制支持扩展多种底层存储系统,包括了HBase(http://hbase.apache.org/)、Cassandra(http://cassandra.apache.org/)等。HBase是类似BigTable的分布式列存储数据库,能够支持对海量结构化数据的随机读写,支撑应用的在线访问需求。HBase借助Log Structure Merge Tree方法,将对文件多次随机写转换为磁盘批量写,弥补了HDFS随机读写方面的不足。Phoenix(https://github.com/forcedotcom/phoenix)为HBase提供了类SQL接口,支持了数据的查询、更新、删除等操作。但是Phoenix面向的是低延迟的在线应用(OLTP,Online Transaction Processing),而不是类似Hive的批量数据处理(OLAP,Online Analytical Processing),不具有高效的涉及大量数据的 查询处理能力。本发明提出的Hive DML增强面向的是批量数据处理中的更新与删除,与Phoenix系统的目标完全不同。
以上介绍的所有Hive相关优化工作和相关系统都没有涉及增强类SQL接口中的DML操作,都不能解决在企业级大数据处理场景中遇到的数据更改问题。
发明内容
本发明的所要解决的技术问题在于提供一种面向Hive DML增强的混合存储系统,基于DualTable表,以解决在企业级大数据处理场景中数据更改问题。
为达上述目的,本发明提供了一种支持Hive DML增强的混合存储系统,其特征在于,所述系统基于DualTable表建立,所述混合存储系统,包括:
DualTable表创建模块:用于建立包含主表和附表,为每行数据维护了唯一ID并基于代价模型对外提供特定操作集的DualTable表;
DualTable表执行模块:用于基于所述主表和所述附表实现对所述DualTable表中的数据读取和查询,基于所述附表实现对所述DualTable表中的数据进行更改,基于所述代价模型实现所述DualTable表提供的操作集,基于有序的每行数据的所述唯一ID实现所述主表和所述附表数据读取时的合并。
上述支持Hive DML增强的混合存储系统,其特征在于,所述维护每行数据唯一ID的机制用于维护每行数据唯一的ID,确保不同存储系统间读取数据有序合并。
上述支持Hive DML增强的混合存储系统,其特征在于,所述主表用于所述DualTable表的数据存储,采用分布式文件存储。
上述支持Hive DML增强的混合存储系统,其特征在于,所述附表用于存储所述DualTable表中数据的更改信息。
上述支持Hive DML增强的混合存储系统,其特征在于,所述操作集为所述DualTable提供的操作集合,包含:Union Read、UPDATE、DELETE、INSERT INTO、CREATE、DROP、LOAD和COMPACT。
上述支持Hive DML增强的混合存储系统,其特征在于,基于所述代价模 型,实现所述UPDATE、DELETE操作。
上述支持Hive DML增强的混合存储系统,其特征在于,所述UPDATE操作和DELETE操作包括:OVERWRITE操作方式和EDIT操作方式。
上述支持Hive DML增强的混合存储系统,其特征在于,基于所述代价模型计算对所述OVERWRITE和EDIT操作方式进行动态选取。
上述支持Hive DML增强的混合存储系统,其特征在于,所述DualTable表执行模块,还包括:
数据读取模块:通过专用输入格式读取所述DualTable表中的数据;
数据查询模块:用于根据所述数据读取模块的读取数据,通过查询语句对所述DualTable中的数据进行查询;
数据行ID管理模块:用于确保所述每行数据唯一ID在整个所述DualTable表中的唯一性;
COMPACT模块:用于将所述DualTable表的所述附表中的数据合并进所述主表,并清空附表数据;
代价模型模块:包含代价模型参数获取子模块,用于获取所述代价模型所需的计算参数,基于所述代价模型的估算,实现对所述DualTable表的所述操作集;
删除和更新模块:用于基于所述代价模型模块的动态计算,实现所述UPDATE和所述DELETE操作。
上述支持Hive DML增强的混合存储系统,其特征在于,还包括:
命令处理模块:用于外部向所述DualTable表提交命令,并将所述命令进行格式转换;
上述支持Hive DML增强的混合存储系统,其特征在于,还包括:
并发控制模块:用于通过语句加锁机制,对需要操作的所述数据进行加锁,确保操作的并发控制。
进一步的,本发明提供了一种支持Hive DML增强的混合存储方法应用于所述混合存储系统,所述系统基于DualTable表建立,所述混合存储方法,包括:
DualTable表创建步骤:用于-建立包含主表和附表,为每行数据维护了唯一ID并基于代价模型对外提供特定操作集的DualTable表;
DualTable表执行步骤:用于基于所述主表和所述附表实现对所述DualTable表中的数据读取和查询,基于所述附表实现对所述DualTable表中的数据进行更改,基于所述代价模型实现所述DualTable表提供的操作集,基于有序的每行数据的所述唯一ID实现所述主表和所述附表数据读取时的合并。
上述支持Hive DML增强的混合存储方法,其特征在于,所述DualTable表执行步骤,还包括:
数据读取步骤:通过专用输入格式读取所述DualTable表中的数据;
数据查询步骤:用于根据所述数据读取步骤的读取数据,通过查询语句对所述DualTable中的数据进行查询;
数据行ID管理模块:用于确保所述每行数据唯一ID在整个所述DualTable表中的唯一性;
COMPACT步骤:用于将DualTable表的附表中的数据合并进主表,并清空附表数据;
代价模型步骤:包含代价模型参数获取步骤,用于获取所述代价模型所需的计算参数,基于所述代价模型的估算,实现对所述DualTable表的所述操作集;
删除和更新步骤:用于基于所述代价模型步骤的动态计算,实现所述UPDATE和所述DELETE操作。
上述支持Hive DML增强的混合存储方法,其特征在于,还包括:
命令处理步骤:用于外部向所述DualTable表提交命令,并将所述命令进行格式转换;
上述支持Hive DML增强的混合存储方法,其特征在于,还包括:
并发控制步骤:用于通过语句加锁机制,对需要操作的所述数据进行加锁,确保操作的并发控制。
本发明通过整合HDFS和HBase两种不同特点的存储来同时提供高吞吐的流式读和高效的随机写,并透明的维护底层数据的一致性,使得基于DualTable的Hive能够同时实现高效的查询和更改操作,获得更强的DML支持。
与现有技术相比,本发明具有以下有益效果:
1、支持高效顺序读取主表,实现高效的数据查询操作;
2、支持随机改写的附表,实现高效的数据更改操作;
3、支持基于代价模型的更新和删除操作,以及能够让附表中数据量保持合理的COMPACT操作;
4、支持基于行ID的读取数据合并,能够低代价的维护两个存储中数据的读写一致性。
附图说明
图1为本发明提供的支持Hive DML增强的混合存储系统结构示意图;
图2为本发明提供的支持Hive DML增强的混合存储方法流程示意图。
其中,附图标记:
1DualTable表创建模块 2DualTable表执行模块
21数据查询模块 22删除和更新模块
23数据读取模块 24数据行ID管理模块
25COMPACT模块 26代价模型模块
3命令处理模块 4并发控制模块
S1~S4、S21~S27:本发明实施例的步骤
具体实施方式
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
首先介绍该系统的相关术语。
DualTable可形式化的描述为:DualTable:=<ID Mechanism,Master Table,Attached Table,Operation Set,Cost Model>。其中,ID Mechanism是维护每行数据唯一ID的机制,数据行的唯一ID用于联系两个存储系统;Master Table(主表)是用于支持高效顺序读的存储系统;Attached Table(附表)是用于存储更改数据的存储系统;OperationSet是DualTable提供的操作集,定义为:Operation Set:=Union Read(读取)|UPDATE(更新)|DELETE(删除)|INSERT INTO(插入)|CREATE(表创建)|DROP(表删除)|LOAD(数据导入)|COMPACT(数据合并);Cost Model是支持读写操作实现的代价模型。
本发明基于Hive提供的多种扩展机制实现了DualTable,其中主表使用Hive默认的HDFS存储,附表使用了HBase存储。
如图1所示,本发明提供的一种支持Hive DML增强的混合存储系统是基于DualTable表建立,混合存储系统,包括:DualTable表创建模块1和DualTable表执行模块2;
DualTable表创建模块1:用于建立包含维护每行数据唯一ID的机制、主表、附表、操作集和代价模型的DualTable表;
DualTable表创建方法与现有Hive表创建类似,区别包括(1)需要明确指定使用DualTable专用的InputFormat,OutputFormat和SerDe,同时允许设置DualTable相关的参数;(2)每张DualTable数据表模式中的第一列默认为数据行ID,列名固定为rowid。(3)创建过程中,将检查并创建HBase中对应的Attached Table;(4)DualTable暂时不支持表上的PARTITON和BUCKET。
DualTable表创建完毕后,通过Hive的INSERT OVERWRITE语句将数据导入到其中。
DualTable表执行模块2:基于DualTable的主表实现对DualTable表中的数据进行读取和查询,基于DualTable的附表实现对DualTable表中的数据进行更改,基于代价模型实现DualTable表提供的操作集,基于每行数据唯一ID实现读取时主表和附表数据的有序合并。
基于DualTable的主表,实现对DualTable表中的数据进行查询和读取:本发明支持高效顺序读的主表Master Table能够实现高效的查询操作,主表是每张DualTable表数据的主要存储,数据初始导入时即进入主表。主表提供高效的流式读取和写入性能,而不需要随机的改写支持。在具体实现中,主表可以采用HDFS、GFS(Google File System)、KFS(Kosmos Distributed File System)等支持高效顺序读的分布式文件存储,并可以采用RCFile等优化的文件结构;
基于DualTable的附表,实现对DualTable表中的数据进行更改:本发明支持随机改写的Attached Table能够实现高效的数据更改操作,附表用于存储对每张DualTable表数据的更改信息。每张DualTable表对应的主表数据和附表数据的合并视图,即是该表当前的数据内容。在Hive中,没有对DELETE和UPDATE的直接支持,任何更改操作都要通过重写整个数据表(INSERT OVERWRITE)的方式来间接实现,这增大了将企业级系统已有的SQL移植到Hive的复杂度,同时带来了庞大的文件读写开销。支持随机改写的Attached Table能够实现高效的数据更改操作。
基于代价模型,实现DualTable表提供的操作集:支持基于代价模型的更新和删除操作实现。
对于DualTable表中数据的UPDATE和DELETE,有两种方式可以选择:
1)OVERWRITE方案:类似Hive的INSERT OVERWRITE语义,直接读取并重写一遍主表中的数据,重写的过程中将替换要更新的值(UPDATE)或者删除要删除的数据(DELETE),最后将附表中的数据完全清除。可见,OVERWRITE方案能够清空附表,有利于控制附表的数据量。
2)EDIT方案:将数据表中被更改的数据及其行id信息写入附表中:对于更新操作,写入新值;对于删除操作,写入删除标记。不改动主表中数据。
两种方案在同一场景下执行效率以及对后续读效率的影响均不同,DualTable会根据一个代价模型来选择一个最高效的方案。
基于每行数据唯一ID,实现读取数据有序合并:支持基于行ID的读时数据合并,能够低代价的维护两个存储中数据的读写一致性。为了高效的实现数据合并,使用有序行id的方式进行优化:在主表和附表中按照升序维护行id,从而将两个存储的内容合并转化为两个有序id表的合并,提高效率。附表中所有行id按照升序维护,能够使附表支持高效的基于行id区间的查询。对于HBase、Google BigTable等存储,数据模型中已经保证row key升序,因此将行id作为row key即可保证有序。而在主表中所有行id按照“分块”呈升序即可达到优化效果。例如使用HDFS作为主表存储时,一个表可以包含一个文件夹下的多个文件,只要保证每个文件内部行id是升序的即可。单个文件内的升序行id在LOAD和INSERT INTO操作生成文件时自动生成。
其中DualTable表执行模块2,还包括:数据查询模块21、删除和更新模块22、数据读取模块23、数据行ID管理模块24、COMPACT模块25和代价模型模块26。
数据查询模块21:用于通过查询语句对DualTable中的数据进行查询;
DualTable的底层存储机制对查询语句透明,现有的HiveQL查询语句均可以直接在DualTable表上进行,不需要任何改动。
删除和更新模块22:用于基于代价模型模块26的动态计算,实现UPDATE 和所述DELETE操作。
本发明利用Hive的UDTF扩展机制实现UPDATE和DELETE语义。UDTF提供了对每一行数据进行自定义处理的机制。DualTable内部实现了dualtable_update和dualtable_delete两个UDTF。用户提交的UPDATE语句将被转化成INSERT OVERWRITE和UDTF两种方式(分别对应OVERWRITE方案和EDIT方案),然后在运行时依据代价模型选择合适的方案。
DualTable的COMPACT命令将表中的数据全部读出然后写进HDFS主表,随后删除HBase中的Attached Table。因此DUALTABLE COMPACT table语句等价于INSERT OVERWRITEtable SELECT*FROM table,然后删除HBase中相应Attached Table。
数据读取模块23:通过所述专用输入格式读取所述DualTable表中的数据;
Hive通过InputFormat来获取底层存储的数据,不断调用next()函数来获取下一行的数据。在为DualTable定制的DualTableInputFormat中,同时读取HBase和HDFS中的数据,并依据Union Read算法合并两份数据,在DualTableInputFormat的next()函数调用中返回合并后的实际数据。数据读取模块用于支撑数据查询模块对于底层数据的访问。
数据行ID管理模块24:用于确保所述每行数据的ID在整个所述DualTable表中的唯一性;
在对表进行INSERT OVERWRITE,INSERT INTO时要维护数据行ID,保证每行ID在整张表中的唯一性。
本发明使用了ORC(Optimized RCFile)文件结构作为HDFS上MasterTable的存储,由于HDFS文件不可被改写,因此本发明结合使用文件ID和数据行在整个文件中的行号作为该行的ID,数据行R的ID为“[R所在文件的ID][R在文件中的行数]”。在生成每个ORC文件时,从HBase中的DualTable Metadata表中获取一个该ORC文件所在数据表对应的自增ID值作为该文件的ID,并写入该ORC文件的元信息中。
INSERT OVERWRITE和INSERT INTO均会将新数据写入新生成的HDFS文件中,数据最开始也是通过INSERT OVERWRITE导入DualTable,因此上述ID管理机制能够保证DualTable中每行数据拥有唯一的ID。
此外,由于在ORC文件结构之上只需要额外记录一个文件ID,行号可以 在读取时自然获得,因此DualTable行ID带来的存储开销极小。
COMPACT模块25:用于将DualTable表的附表中的数据合并进主表,并清空附表数据;
随着对DualTable表的不断更改,附表中的数据会不断增加,Union Read需要处理的更改数据增多导致效率下降。因此,需要使用COMPACT操作合理的控制附表的数据量。Union read的过程中将附表和主表数据合并,并写到一个新的主表中,最后清空附表(因为其数据已经反映到主表中了)。
在COMPACT操作中,首先Union Read整张DualTable表,将结果INSERT INTO一个临时主表中,然后清空附表数据和旧的主表数据,最后将临时主表设为正式的主表。DualTable允许用户手动的对指定的表执行COMPACT操作。用户可以将COMPACT操作放到系统低负载时定时进行,也可以结合分析任务的具体情况,在分析过程中合适位置加入COMPACT操作。
DualTable表支持对行数据的顺序读取,例如支持作为Hive生成的MapReduce任务的输入。读取时同时访问主表和附表存储,对于主表中的每一行数据,依据行id在附表中获取更改数据,合并后作为最终数据返回。
代价模型模块26:包含代价模型参数获取子模块,用于获取代价模型所需的计算参数,并基于代价模型的估算,实现对DualTable表的操作集;
UPDATE和DELETE操作使用的代价模型的参数主要包括了HDFS的读写速度,HBase的读写速度,HDFS和HBase中的数据量,更新/删除的数据行比例α,两次更新之间涉及的读次数k,数据行平均长度d等。其他参数如“删除标记大小”为常量。
在DualTable进行HDFS/HBase读写的过程中,对读写的用时和处理行数量进行了记录,从而可以计算每秒能处理的行数。结合HDFS上文件的数据量,可以得到每秒的数据处理量。对于单次执行的单条语句,更新/删除的数据行比例α和两次更新之间涉及的读次数k由用户给定。对于多次重复执行的包含多条语句的任务,利用前几次执行记录的α值来估计之后的情况,k则通过分析任务中涉及的所有语句来确定。数据行平均长度d通过HDFS文件大小及数据行总数来估算。
本发明提供的混合存储系统,还包括:命令处理模块3和并发控制模块4;
命令处理模块3用于外部向DualTable表提交命令,并将命令进行格式转 换;
用户向DualTable命令行提交的命令,如果是普通的Hive查询或操作,将直接交由原生Hive执行;如果是DualTable相关操作,将交给DualTable命令解析器处理,依据元信息、代价模型计算信息,命令将被转化成原生Hive能够接受的形式,最后提交给原生Hive执行。
并发控制模块4:用于通过语句加锁机制,对需要操作的数据进行加锁,确保操作的并发控制。
DualTable不允许在一个表上同时执行多个操作(多个读操作除外)。因此,需要进行并发控制。现有的Hive可以利用Zookeeper开启语句级别的并发控制,通过对数据表和分区加“互斥-共享”锁来实现数据访问并发控制。DualTable开启Hive的语句加锁机制,并且对于本发明扩展的操作(COMPACT),按照现有Hive的加锁规则对涉及的数据表进行加锁,从而保证正确的并发控制。
下面结合具体实施方式,对本发明UPDATE和DELETE的代价模型,以及Union Read操作做进一步的说明。
一、UPDATE和DELETE的代价模型
DualTable在执行UPDATE或DELETE操作时,会根据如下的代价模型动态地选取一个最优的方案。两种方案中涉及的开销主要包括了:(1)读写主表的开销(2)读写附表的开销。以下是相关定义和假设。
定义1:在存储S中,读取和写入数据量为D的数据的开销分别记为和其中S可以为M(Master Table)或A(Attached Table)。
假设1:当数据量较大时,忽略读写时的额外开销,认为读写用时与数据量成正比,即其中λ∈(0,1)。同理。
定义2:方案P的总代价记为CostP,其中P可以为OVERWRITE或者EDIT。
假设2:CostP等于“更改代价”加上“后续读代价”。其中“更改代价”指使用P方案完成更改(UPDATE或DELETE)所产生的读写开销;“后续读代价”指更改完成后对表进行k次全表读取产生的读开销。
考虑一个数据量为D的DualTable表T,对表T进行一次更改后,后续需要对其进行k次读取。下面分别推导UPDATE操作与DELETE操作的代价模型。
(1)UPDATE操作代价模型
设更新的数据量占比为α且α∈(0,1)。采用OVERWRITE和EDIT两种方案,代价分别为:
OVERWRITE方案总代价CostOVERWRITE与EDIT方案总代价CostEDIT的差为:
其中:α可以利用历史执行信息估计,或者根据UPDATE语句对涉及的表进行数据采样来估计,或者利用已有的表统计信息估计。k可以让用户根据需求指定,或者在一个多语句过程中设为对表T下一个更改操作之前读T的次数。可以首先记录读写部分数据d时的开销(可以在普通读写时顺便记录),然后利用假设1来计算。
分析模型可知:当α和k较小时,差值会为正,即更新数据比例小且后续读次数少时,EDIT方案开销少。更新数据比例大且后续读次数多时,OVERWRITE方案开销可能较少。
(2)DELETE操作代价模型
设删除的数据行的占比为β且β∈(o,0)。设每行数据量平均为d,每个删除标记大小为m,则删除的数据量βD对应的“删除标记”的数据量为采用OVERWRITE和EDIT两种方案,代价分别为:
OVERWRITE方案总代价CostOVERWRITE与EDIT方案总代价CostEDIT的差为:
其中,m为常量,d可以通过数据行抽样得到。β的估计方法与UPDATE代价模型中α的估计方法相同。的估计方法也与UPDATE代价模型中相同。
分析模型可知:当β和k较小时,差值会为正,即删除数据比例小且后续读次数少时,EDIT方案开销少。删除数据比例大且后续读次数多时,OVERWRITE方案开销可能较少。
在参数估计值可用时,DualTable的代价模型均可以在常数时间内计算。实际运行时,DualTable将根据代价模型的计算结果,动态的选择最优的更改操作实现方案。
二、Union Read
基于有序行id的Union Read实现算法如下,其中输入:表T的主表数据表TM和附表数据表TA,更新数据读缓冲区大小为size;输出:合并后的表T的每行实际数据。
本发明还提供了一种支持Hive DML增强的混合存储方法,如图2所示,该方法包括以下步骤:
DualTable表创建步骤S1:用于建立包含维护每行数据唯一ID的机制、主表、附表、操作集和代价模型的DualTable表;
DualTable表执行步骤S2:基于DualTable的主表实现对DualTable表中的数据进行查询和读取,基于DualTable的附表实现对DualTable表中的数据进行更改,基于代价模型实现DualTable表提供的操作集,基于每行数据唯一ID实现读取数据有序合并。
其中,DualTable表执行步骤S2,还包括:
数据查询步骤S21:用于通过查询语句对DualTable中的数据进行查询;
删除和更新步骤S22:用于基于代价模型模块的动态计算,实现UPDATE和所述DELETE操作。
数据读取步骤S23:通过专用输入格式读取DualTable表中的数据;
数据行ID管理步骤S24:用于确保每行数据唯一ID在整个DualTable表中的唯一性;
COMPACT步骤S25:用于将DualTable表的附表中的数据合并进主表,并清空附表数据,以让附表的数据量保持合理;
代价模型步骤S26:包含代价模型参数获取步骤,用于获取代价模型所需的计算参数,并基于代价模型的估算,实现对DualTable表的操作集;
本发明提供的支持Hive DML增强的混合存储方法,还包括步骤:
命令处理步骤S3:用于外部向DualTable表提交命令,并将命令进行格式转换;
并发控制步骤S4:用于通过语句加锁机制,对需要操作的数据进行加锁,确保操作的并发控制。
以下为了验证本发明DualTable支持Hive DML增强的有效性,进行如下实验设置:
实验集群包括10个结点,每个结点拥有8CPU核,16GB内存。软件环境为Hadoop1.2.0,HBase0.94.10和在Hive0.11.0源码基础上开发的DualTable0.1。实验使用TPC-H30GB数据集中最大的两张数据表:lineitem(23GB,1.8亿行)和orders(5GB,4500万行)。实验中,通过比较不同系统中结果的更新数量、更新列的均值等方式,验证了DualTable实现的正确性。实验将分别测试DualTable,基于HDFS的Hive,基于HBase的Hive三者的读写效率,以及DualTable的更新能力及更新对读取效率的影响。
1、不同系统的读取效率
分别在基于HDFS的Hive,基于HBase的Hive,DualTable上执行TPC-H查询集中的Q1,比较不同系统的读取效率。其中,DualTable的附表不含更新数据。
由实验结果可知,在附表没有更新数据时,DualTable与基于HDFS的Hive性能近似,DualTable带来的额外开销很小。基于HBase的Hive读取用时较长,这证明了HBase相对HDFS较差的流式读能力。
2、不同系统的UPDATE效率
分别在基于HDFS的Hive,基于HBase的Hive,DualTable上执行同一个UPDATE操作,比较其用时。模仿智能电网应用的真实场景,基于TPC-H数据集开发了一个UPDATE操作U1:在orders表中增加一列totaltax(总税额),U1操作中连接lineitem和orders两表计算每个orders的totaltax,并将大于10000的totaltax值更新到orders表中。U1操作中,共改动了orders表中16%的数据行。
由实验可知,基于HBase的Hive用时最多,这表明Hive on HBase虽然在最后的更新上不需要重写整个表,但是在数据读取阶段,HBase的大量读取 用时,依然让更新操作总时间超过了Hive on HDFS。DualTable由于避免了重写整个被更新的表,更新用时比Hiveon HDFS减少了47%。
3、不同更新比例的UPDATE用时
分别在基于HDFS的Hive,基于HBase的Hive,DualTable上执行不同更新行比例的UPDATE操作。实验中,将lineitem表中比例为p的数据行的1_extendedprice列值增加10。
由实验可知,基于HDFS的Hive利用重写实现更新,更新时间随更新比例无明显变化。DualTable的EDIT更新方案将更新数据写入附表,因此更新时间随更新比例增加而增加。当更新比例较小时,更新时间明显少于基于HDFS的Hive;当更新比例增大到一定程度时,EDIT方案更新时间超过了基于文件重写的Hive,此时DualTable会放弃EDIT方案而改用与Hive on HDFS相同的OVERWRITE方案。总之,在更新比例较小时DualTable更新时间明显小于基于HDFS的Hive,而在更新比例较大时与其用时相近。
4、更改数据量对Union Read效率的影响
在DualTable中,附表中的更改数据量越多,Union Read时需要合并的数据就越多。在不同的更改行比例下,比较Union Read效率变化情况。实验中,将lineitem表中比例为p的数据行的1_extendedprice列值增加10,然后在lineitem上执行TPC-H Q1(读取了1_extendedprice),观察Q1的用时随更改比例p的变化。_extendedprice)
由实验可知,基于HDFS的Hive的更新不影响后续的读,因此用时不随更新比例变化。DualTable的读用时随更新比例增加而增加。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (14)
1.一种支持Hive DML增强的混合存储系统,其特征在于,包括:
DualTable表创建模块:用于建立包含主表和附表,为每行数据维护了唯一ID并基于代价模型对外提供操作集的DualTable表,所述DualTable表创建模块指定使用所述DualTable表专用的InputFormat,OutputFormat和SerDe,所述DualTable表创建模块允许设置所述DualTable表的参数,每一所述DualTable表模式中的第一列默认为数据行ID,所述主表使用Hive默认的HDFS存储,所述附表使用HBase存储,创建过程中检查并创建HBase中对应的所述附表,所述操作集为所述DualTable提供的操作集合,包含:Union Read、UPDATE、DELETE、INSERT INTO、CREATE、DROP、LOAD和COMPACT;
DualTable表执行模块:用于基于所述主表和所述附表实现对所述DualTable表中的数据读取和查询,基于所述附表实现对所述DualTable表中的数据进行更改,基于所述代价模型实现所述DualTable表提供的操作集,基于有序的每行数据的所述唯一ID实现所述主表和所述附表数据读取时的合并。
2.根据权利要求1所述支持Hive DML增强的混合存储系统,其特征在于,所述维护每行数据唯一ID的机制用于维护每行数据唯一的ID,确保不同存储系统间读取数据有序合并。
3.根据权利要求1所述支持Hive DML增强的混合存储系统,其特征在于,所述主表用于所述DualTable表的数据存储,采用分布式文件存储。
4.根据权利要求1所述支持Hive DML增强的混合存储系统,其特征在于,所述附表用于存储所述DualTable表中数据的更改信息。
5.根据权利要求1所述支持Hive DML增强的混合存储系统,其特征在于,基于所述代价模型,实现所述UPDATE和DELETE操作。
6.根据权利要求5所述支持Hive DML增强的混合存储系统,其特征在于,所述UPDATE操作和DELETE操作包括:OVERWRITE操作方式和EDIT操作方式。
7.根据权利要求6所述支持Hive DML增强的混合存储系统,其特征在于,基于所述代价模型计算对所述OVERWRITE和EDIT操作方式进行动态选取。
8.根据权利要求1所述支持Hive DML增强的混合存储系统,其特征在于,所述DualTable表执行模块,还包括:
数据读取模块:通过专用输入格式读取所述DualTable表中的数据;
数据查询模块:用于根据所述数据读取模块的读取数据,通过查询语句对所述DualTable中的数据进行查询;
数据行ID管理模块:用于确保所述每行数据唯一ID在整个所述DualTable表中的唯一性;
COMPACT模块:用于将DualTable表的附表中的数据合并进主表,并清空附表数据;
代价模型模块:包含代价模型参数获取子模块,用于获取所述代价模型所需的计算参数,基于所述代价模型的估算,支持所述DualTable表的删除和更新操作的实现;
删除和更新模块:用于基于所述代价模型模块的动态计算,实现所述UPDATE和所述DELETE操作。
9.根据权利要求1所述支持Hive DML增强的混合存储系统,其特征在于,还包括:
命令处理模块:用于外部向所述DualTable表提交命令,并将所述命令进行格式转换。
10.根据权利要求1所述支持Hive DML增强的混合存储系统,其特征在于,还包括:
并发控制模块:用于通过语句加锁机制,对需要操作的所述数据进行加锁,确保操作的并发控制。
11.一种支持Hive DML增强的混合存储方法,应用于如权利要求1-10中任一项所述混合存储系统,所述系统基于DualTable表建立,所述混合存储方法,包括:
DualTable表创建步骤:用于建立包含主表和附表,为每行数据维护了唯一ID并基于代价模型对外提供特定操作集的DualTable表,指定使用所述DualTable表专用的InputFormat,OutputFormat和SerDe,允许设置所述DualTable表的参数,每一所述DualTable表模式中的第一列默认为数据行ID,所述主表使用Hive默认的HDFS存储,所述附表使用HBase存储,创建过程中检查并创建HBase中对应的所述附表,所述操作集为所述DualTable提供的操作集合,包含:Union Read、UPDATE、DELETE、INSERT INTO、CREATE、DROP、LOAD和COMPACT;
DualTable表执行步骤:用于基于所述主表和所述附表实现对所述DualTable表中的数据读取和查询,基于所述附表实现对所述DualTable表中的数据进行更改,基于所述代价模型实现所述DualTable表提供的操作集,基于有序的每行数据的所述唯一ID实现所述主表和所述附表数据读取时的合并。
12.根据权利要求11所述支持Hive DML增强的混合存储方法,其特征在于,所述DualTable表执行步骤,还包括:
数据读取步骤:通过专用输入格式读取所述DualTable表中的数据;
数据查询步骤:用于根据所述数据读取步骤的读取数据,通过查询语句对所述DualTable中的数据进行查询;
数据行ID管理步骤:用于确保所述每行数据唯一ID在整个所述DualTable表中的唯一性;
COMPACT步骤:用于将DualTable表的附表中的数据合并进主表,并清空附表数据;
代价模型步骤:包含代价模型参数获取子步骤,用于获取所述代价模型所需的计算参数,基于所述代价模型的估算,实现对所述DualTable表的所述操作集;
删除和更新步骤:用于基于所述代价模型步骤的动态计算,实现所述UPDATE和所述DELETE操作。
13.根据权利要求11所述支持Hive DML增强的混合存储方法,其特征在于,还包括:
命令处理步骤:用于外部向所述DualTable表提交命令,并将所述命令进行格式转换。
14.根据权利要求11所述支持Hive DML增强的混合存储方法,其特征在于,还包括:
并发控制步骤:用于通过语句加锁机制,对需要操作的所述数据进行加锁,确保操作的并发控制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310618652.7A CN103678519B (zh) | 2013-11-29 | 2013-11-29 | 一种支持Hive DML增强的混合存储系统及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310618652.7A CN103678519B (zh) | 2013-11-29 | 2013-11-29 | 一种支持Hive DML增强的混合存储系统及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103678519A CN103678519A (zh) | 2014-03-26 |
CN103678519B true CN103678519B (zh) | 2017-03-29 |
Family
ID=50316064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310618652.7A Expired - Fee Related CN103678519B (zh) | 2013-11-29 | 2013-11-29 | 一种支持Hive DML增强的混合存储系统及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103678519B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104035956A (zh) * | 2014-04-11 | 2014-09-10 | 江苏瑞中数据股份有限公司 | 一种基于分布式列存储的时间序列数据存储方法 |
CN104156396B (zh) * | 2014-07-16 | 2017-12-01 | 成都康赛信息技术有限公司 | 大数据环境下提高数据库性能的方法及系统 |
CN104346447A (zh) * | 2014-10-28 | 2015-02-11 | 浪潮电子信息产业股份有限公司 | 一种面向混合型大数据处理系统的分区连接方法 |
CN104598587A (zh) * | 2015-01-19 | 2015-05-06 | 深圳市华成峰数据技术有限公司 | 发票真伪查询方法和系统 |
CN105426472B (zh) * | 2015-11-16 | 2019-08-16 | 广州供电局有限公司 | 分布式计算系统及其数据处理方法 |
CN105468735A (zh) * | 2015-11-23 | 2016-04-06 | 武汉虹旭信息技术有限责任公司 | 基于移动互联网海量信息的流式预处理系统及其方法 |
CN106294556A (zh) * | 2016-07-26 | 2017-01-04 | 江苏神州信源系统工程有限公司 | 一种使用Apache Drill集中搜索大数据库的方法 |
CN108509453B (zh) * | 2017-02-27 | 2021-02-09 | 华为技术有限公司 | 一种信息处理方法及装置 |
CN106933739A (zh) * | 2017-03-10 | 2017-07-07 | 郑州云海信息技术有限公司 | 一种基于hbase的读写混合测试工具 |
CN107203594B (zh) * | 2017-04-28 | 2021-01-26 | 努比亚技术有限公司 | 一种数据处理设备、方法和计算机可读存储介质 |
CN109766368B (zh) * | 2018-11-14 | 2021-08-27 | 国云科技股份有限公司 | 一种基于Hive的数据查询多类型视图产出系统及方法 |
CN109582726B (zh) * | 2018-12-18 | 2021-09-07 | 网易(杭州)网络有限公司 | 数据表的处理方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0336580A2 (en) * | 1988-04-08 | 1989-10-11 | International Business Machines Corporation | Relational databases |
CN101763433A (zh) * | 2010-01-12 | 2010-06-30 | 浪潮(北京)电子信息产业有限公司 | 一种数据存储系统及方法 |
CN101853278A (zh) * | 2010-05-19 | 2010-10-06 | 苏州迈科网络安全技术有限公司 | 数据存储系统应用方法 |
CN102323947A (zh) * | 2011-09-05 | 2012-01-18 | 东北大学 | 环形架构数据库上预连接表的生成方法 |
CN102521306A (zh) * | 2011-12-01 | 2012-06-27 | 苏州迈科网络安全技术股份有限公司 | 一种数据存储系统应用方法 |
CN102622436A (zh) * | 2012-02-29 | 2012-08-01 | 浙江吉利汽车研究院有限公司 | 人力资源管理系统的数据表创建方法 |
-
2013
- 2013-11-29 CN CN201310618652.7A patent/CN103678519B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0336580A2 (en) * | 1988-04-08 | 1989-10-11 | International Business Machines Corporation | Relational databases |
CN101763433A (zh) * | 2010-01-12 | 2010-06-30 | 浪潮(北京)电子信息产业有限公司 | 一种数据存储系统及方法 |
CN101853278A (zh) * | 2010-05-19 | 2010-10-06 | 苏州迈科网络安全技术有限公司 | 数据存储系统应用方法 |
CN102323947A (zh) * | 2011-09-05 | 2012-01-18 | 东北大学 | 环形架构数据库上预连接表的生成方法 |
CN102521306A (zh) * | 2011-12-01 | 2012-06-27 | 苏州迈科网络安全技术股份有限公司 | 一种数据存储系统应用方法 |
CN102622436A (zh) * | 2012-02-29 | 2012-08-01 | 浙江吉利汽车研究院有限公司 | 人力资源管理系统的数据表创建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103678519A (zh) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103678519B (zh) | 一种支持Hive DML增强的混合存储系统及其方法 | |
US11593369B2 (en) | Managing data queries | |
US10521427B2 (en) | Managing data queries | |
CN104866608B (zh) | 一种数据仓库中基于连接索引的查询优化方法 | |
Stonebraker et al. | The architecture of SciDB | |
CN104915450B (zh) | 一种基于HBase的大数据存储与检索方法及系统 | |
US7971175B2 (en) | Method and system for implementing cached parameterized cells | |
US20130275364A1 (en) | Concurrent OLAP-Oriented Database Query Processing Method | |
Li et al. | An integration approach of hybrid databases based on SQL in cloud computing environment | |
CN105393249A (zh) | 针对查询优化的范围分区统计数据的增量式维护 | |
El Alami et al. | Supply of a key value database redis in-memory by data from a relational database | |
Carniel et al. | FESTIval: A versatile framework for conducting experimental evaluations of spatial indices | |
CN103365923A (zh) | 用于评估数据库的分区方案的方法和装置 | |
CN103177046B (zh) | 一种基于行存储数据库的数据处理方法和设备 | |
CN109189994A (zh) | 一种面向图计算应用的cam结构存储系统 | |
Lysechko et al. | Research of modern NoSQL databases to simplify the process of their design | |
Kaplanis et al. | HB+ tree: use hadoop and HBase even your data isn't that big | |
US20180232416A1 (en) | Distribute execution of user-defined function | |
Karduck et al. | Data driven decision making for sustainable smart environments | |
Al-Badarneh et al. | Performance evaluation of bloom filter size in map-side and reduce-side bloom joins | |
Sheng et al. | Fast Access and Retrieval of Big Data Based on Unique Identification. | |
Pivert | NoSQL Data Models | |
Borovica-Gajic | Toward timely, predictable and cost-effective data analytics | |
AU2015221560C1 (en) | Managing data queries | |
Elazzabi | Storing Intermediate Results in Space and Time: SQL Graphs and Block Referencing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170329 Termination date: 20211129 |