一种大数据分布式存储方法和系统与流程

文档序号:12063268阅读:280来源:国知局

本发明涉及云存储,特别涉及一种大数据分布式存储方法和系统。



背景技术:

随着移动互联网、物联网等应用的飞速发展,全球数据量出现了爆炸式增长。数据量的飞速增长预示着现在已经进入了大数据时代。网络运营商拥有庞大的用户,同时具有对终端及用户上网通道的掌控能力,使得在用户行为分析方面具有很好的数据基础,深入分析用户流量行为特征和规律,发现用户潜在消费需求,是提升价值和经营水平的有效手段。然而,不仅仅是数据规模越来越大,而且数据类型多和处理实时性要求都极大地增加了大数据处理的复杂度。大数据给传统的数据分析处理技术(例如并行数据库、数据仓库)带来的技术挑战。传统数据分析处理技术无法处理大数据的高扩展性和海量需求;传统数据分析处理往往只针对某一种类型数据和比较单一,大数据具有数据量巨大、结构复杂、类型众多等特点,这对大数据的存储、处理与分析提出了新的挑战。并行数据库的高效性和稳定性成为数据分析在性能上的首选。但是基于成本的考虑,随着云计算服务平台的普及,将大规模数据分析任务从部署在并行数据库的高端服务器转移至更便宜的无共享体系结构的低端服务器集群上,成为当下海量数据分析真正需要解决的成本瓶颈问题。

因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。



技术实现要素:

为解决上述现有技术所存在的问题,本发明提出了一种大数据分布式存储方法,包括:

一种大数据分布式存储方法,用于在云存储系统中实现大数据的存储和查 询,所述云存储系统包括主节点,分布式计算节点和数据节点,包括:将数据管理引擎运行在主节点上,接收用户查询,对查询进行编译、转换和优化、生成查询执行计划并执行查询,同时进行元数据管理和节点监控;在分布式计算节点上运行服务器进程,执行分布式计算任务;将分布式计算的工作进程以及单节点数据库部署在数据节点,将数据表存储在数据节点的数据库中,将由用户查询转换成的子查询在数据库中执行,或者在分布式计算框架中执行。所述数据表使用二维关系表结构,数据表的存储采用独立划分存储和组合划分存储,其中:在对表进行独立划分时,指定划分数n、划分所依据的划分键属性列AP以及冗余系数k。对于需要划分的表的每一条元组,根据划分键AP的值计算出该元组所属的划分ID,然后将该元组存储到该划分对应的一个或者多个节点的数据库中;如果事实表A的划分键AP上是表A的外码,指向维表B的主码BP即表A的划分键AP也是表A与表B连接时使用的连接键,则将跨节点的连接操作转化为本地的连接操作并下推到数据库中执行,此时将两个表的数据组合划分;在对表进行组合划分时,使用基于散列的划分或者基于范围的划分,将数据划分为p个独立的划分,每个划分的数据存储在k个不同节点上;若表B依赖于表A进行组合划分,则表B的划分数等于表A的划分数,且:如果表B的冗余系数kB等于表A的冗余系数kA,则表B的每个划分的存储节点就是表A相应划分的存储节点;

如果表B的冗余系数kB小于表A的冗余系数kA,则表B的每个划分的存储节点是表B相应划分的存储节点中取前kB个节点;

如果表B的冗余系数kB大于表A的冗余系数kA,则表B的每个划分的存储节点除了包含表A的相应划分的存储节点之外再进行扩展,扩展的(kB-kA)个节点是紧接在原来的节点链之后的节点。

优选地,在将表的元组进行独立划分时,利用基于散列的划分或基于范围的划分,基于散列的划分在元组划分键AP上应用合适的散列函数,得到的散列值再对划分数n取模,即得到元组的划分ID;针对不同的数据类型,应用不同的散列函数;

基于范围的划分预先将属性列AP的候选值区间划分成多个连续的范围,每个范围对应一个划分,将元组属性列AP的值所在范围作为元组所述的划分。

优选地,所述查询执行进一步包括:

1)用户通过客户端提交查询,数据管理引擎接收用户查询;

2)对查询语句进行词法和语法分析,生成语法树,然后将语法树转化为标准的关系代数树,并进行语义检查;

将关系代数树转化为逻辑查询计划,并应用启发式规则对其进行初步优化;根据代价模型选择最优的查询路径,生成实际查询计划;将实际查询计划转化为一个任务调度图,所述任务调度图中的每个任务都是一个子查询,对应一个分布式计算任务,每个任务必须待其依赖的任务执行完成后才能开始执行;

3)调度和监控任务的执行,根据任务之间的执行依赖关系将任务有序提交给分布式计算服务器,并报告各个任务的执行状态,将单个任务执行后生成的中间结果或者最终结果存储到数据库的表中或者写入分布式文件系统中,通过数据物化的方式在不同任务之间实现输入输出数据的传递;

4)将最后生成的结果返回给用户中。

根据本发明的另一方面,提供了一种大数据分布式存储系统,包括主节点,分布式计算节点和数据节点。

所述主节点,用于运行数据管理引擎,该数据管理引擎配置以接收用户查询,对查询进行编译、转换和优化、生成查询执行计划并执行查询,同时进行 元数据管理和节点监控;

所述分布式计算节点,用于运行服务器进程,执行分布式计算任务;

所述数据节点,用于部署分布式计算的工作进程以及单节点数据库,数据表存储在所述数据库中,其中,由用户查询转换成的子查询在数据库中执行,或者在分布式计算框架中执行优选地,所述数据管理引擎进一步包括:元数据管理模块,用于存储数据库的元数据信息,所述元数据包括数据表的模式、表数据的划分与存储方法、数据节点信息;查询编译模块,用于对用户提交的查询进行编译,生成逻辑查询计划;查询优化模块,用于使用基于规则和基于代价的方法对逻辑查询计划进行优化,得到实际查询计划,然后将其转换成由分布式计算任务组成的任务调度图,提交给查询执行模块执行;

查询执行模块,用于调度分布式计算任务,按照各个任务的依赖关系,同步的执行调度,并监控任务的执行状态,其中每个任务只有在它所依赖的所有任务都执行成功后才能被启动;

节点监控与负载平衡模块,用于定时轮询各个数据节点的状态,发现节点失效后更新相应元数据,当冗余值低于预定义阈值后,对数据增加新的冗余,定期检查数据分布状态,当发现节点负载不平衡时对数据进行重新分布。

本发明相比现有技术,具有以下优点:

提出了结合数据库和分布式计算框架的混合数据仓库架构。改进了大数据的分布式存储方法,增加了将查询下推到数据库中执行的机会,避免跨节点连接带来的数据传输代价。基于队列的任务调度算法提高了查询并行度;同时支持简约查询的轻量级响应模式;具有很好的加载性能、查询性能和容错能力。

具体实施方式

一种大数据分布式存储方法,用于在云存储系统中实现大数据的存储 和查询,所述云存储系统包括主节点,分布式计算节点和数据节点,包括:将数据管理引擎运行在主节点上,接收用户查询,对查询进行编译、转换和优化、生成查询执行计划并执行查询,同时进行元数据管理和节点监控;在分布式计算节点上运行服务器进程,执行分布式计算任务;将分布式计算的工作进程以及单节点数据库部署在数据节点,将数据表存储在数据节点的数据库中,将由用户查询转换成的子查询在数据库中执行,或者在分布式计算框架中执行。所述数据表使用二维关系表结构,数据表的存储采用独立划分存储和组合划分存储,其中:在对表进行独立划分时,指定划分数n、划分所依据的划分键属性列AP以及冗余系数k。对于需要划分的表的每一条元组,根据划分键AP的值计算出该元组所属的划分ID,然后将该元组存储到该划分对应的一个或者多个节点的数据库中;如果事实表A的划分键AP上是表A的外码,指向维表B的主码BP即表A的划分键AP也是表A与表B连接时使用的连接键,则将跨节点的连接操作转化为本地的连接操作并下推到数据库中执行,此时将两个表的数据组合划分;在对表进行组合划分时,使用基于散列的划分或者基于范围的划分,将数据划分为p个独立的划分,每个划分的数据存储在k个不同节点上;若表B依赖于表A进行组合划分,则表B的划分数等于表A的划分数,且:如果表B的冗余系数kB等于表A的冗余系数kA,则表B的每个划分的存储节点就是表A相应划分的存储节点;

如果表B的冗余系数kB小于表A的冗余系数kA,则表B的每个划分的存储节点是表B相应划分的存储节点中取前kB个节点;

如果表B的冗余系数kB大于表A的冗余系数kA,则表B的每个划分的存储节点除了包含表A的相应划分的存储节点之外再进行扩展,扩展的(kB-kA)个节点是紧接在原来的节点链之后的节点。

优选地,在将表的元组进行独立划分时,利用基于散列的划分或基于范围的划分,基于散列的划分在元组划分键AP上应用合适的散列函数,得到的散列值再对划分数n取模,即得到元组的划分ID;针对不同的数据类型,应用不同的散列函数;

基于范围的划分预先将属性列AP的候选值区间划分成多个连续的范围,每个范围对应一个划分,将元组属性列AP的值所在范围作为元组所述的划分。

优选地,所述查询执行进一步包括:

2)用户通过客户端提交查询,数据管理引擎接收用户查询;

2)对查询语句进行词法和语法分析,生成语法树,然后将语法树转化为标准的关系代数树,并进行语义检查;

将关系代数树转化为逻辑查询计划,并应用启发式规则对其进行初步优化;根据代价模型选择最优的查询路径,生成实际查询计划;将实际查询计划转化为一个任务调度图,所述任务调度图中的每个任务都是一个子查询,对应一个分布式计算任务,每个任务必须待其依赖的任务执行完成后才能开始执行;

5)调度和监控任务的执行,根据任务之间的执行依赖关系将任务有序提交给分布式计算服务器,并报告各个任务的执行状态,将单个任务执行后生成的中间结果或者最终结果存储到数据库的表中或者写入分布式文件系统中,通过数据物化的方式在不同任务之间实现输入输出数据的传递;

6)将最后生成的结果返回给用户中。

根据本发明的另一方面,提供了一种大数据分布式存储系统,包括主节点,分布式计算节点和数据节点。

所述主节点,用于运行数据管理引擎,该数据管理引擎配置以接收用户查询,对查询进行编译、转换和优化、生成查询执行计划并执行查询,同时进行 元数据管理和节点监控;

所述分布式计算节点,用于运行服务器进程,执行分布式计算任务;

所述数据节点,用于部署分布式计算的工作进程以及单节点数据库,数据表存储在所述数据库中,其中,由用户查询转换成的子查询在数据库中执行,或者在分布式计算框架中执行优选地,所述数据管理引擎进一步包括:元数据管理模块,用于存储数据库的元数据信息,所述元数据包括数据表的模式、表数据的划分与存储方法、数据节点信息;查询编译模块,用于对用户提交的查询进行编译,生成逻辑查询计划;查询优化模块,用于使用基于规则和基于代价的方法对逻辑查询计划进行优化,得到实际查询计划,然后将其转换成由分布式计算任务组成的任务调度图,提交给查询执行模块执行;

查询执行模块,用于调度分布式计算任务,按照各个任务的依赖关系,同步的执行调度,并监控任务的执行状态,其中每个任务只有在它所依赖的所有任务都执行成功后才能被启动;

节点监控与负载平衡模块,用于定时轮询各个数据节点的状态,发现节点失效后更新相应元数据,当冗余值低于预定义阈值后,对数据增加新的冗余,定期检查数据分布状态,当发现节点负载不平衡时对数据进行重新分布。

本发明相比现有技术,具有以下优点:

提出了结合数据库和分布式计算框架的混合数据仓库架构。改进了大数据的分布式存储方法,增加了将查询下推到数据库中执行的机会,避免跨节点连接带来的数据传输代价。基于队列的任务调度算法提高了查询并行度;同时支持简约查询的轻量级响应模式;具有很好的加载性能、查询性能和容错能力。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1