大数据联机分析处理方法及装置与流程

文档序号:11155435阅读:648来源:国知局
大数据联机分析处理方法及装置与制造工艺

本发明涉及大数据处理技术领域,特别是涉及一种大数据联机分析处理方法及装置。



背景技术:

互联网行业一直是大数据的生产者和使用者,尤其是近年互联网+概念的提出,极大的加快了互联网行业的发展,机遇与挑战往往是并存的,互联网的快速发展,给我们带来了宝贵的数据,如果对这些数据进行分析,获取重要的知识,帮助决策者进行决策是各大互联网公司关注的主要问题。OLAP无疑是解决该类问题最好的方式,传统互联网公司针对OLAP,多是依赖MYSQL和HBASE实现。

基于MYSQL方式实现,MYSQL是最好的开源关系型数据库之一,该架构下的OLAP,只需通过编写SQL和存储过程,便可以实现绝大多数的查询分析需求,然而数据量大的时候,单台MYSQL服务器往往无法满足,需要对数据库进行分库分表,将数据按照一定的散列规则,分别存储到多个库表中,查询时再进行组合汇总。

基于HBASE方式实现,HBASE是HADOOP生态圈的重要组成部分,是目前最活跃的NOSQL型数据库,自身具有列式存储,分布式,高可靠性,高性能等特点,所以HBASE越来越受到大家的关注,也被应用在各种场景下,OLAP便是HBASE的一个重要应用领域。基于HBASE的OLAP解决方案,一般是按照维度,将分析可能用到的维度组合进行遍历,然后把这些组合结果存放在HBASE中,查询时只需要根据查询条件构建key,便可以快速获取到结果。

基于MYSQL的OLAP解决方案,为了计算的高效,需要建立索引,这些索引一般比原始数据占用的磁盘空间还要大,当数据量大时,存储会成为严重的问题,对于长期存放历史数据进行大规模数据分析的需求,该方式很难应对。面对大数据计算,MYSQL集群的规模需要很庞大,集群的设计和部署、维护都需要很多的人力物力,对于任何互联网公司这些问题都不会轻易解决。基于HBASE的OLAP,需要将所有维度进行组合存储,在维度增长的时候,结果的增长量是指数级的,对这些结果进行入库操作也需要很多的计算资源,同样入库以后需要占用大量的存储资源,然而绝大多数维度组合在后期的统计分析中不会被用到,造成资源的浪费。



技术实现要素:

本发明的目的是针对现有技术中存在的技术缺陷,而提供一种大数据联机分析处理方法及装置。

为实现本发明的目的所采用的技术方案是:

一种大数据联机分析处理方法,包括入库步骤和查询步骤,

所述的入库步骤包括,

将经ETL处理的数据读入内存并根据预先设定的时间粒度,按照维度加时间粒度做键值的方式进行累加计算,达到时间粒度上限时将内存中的数据块保存到本地磁盘;

首先横向将所述的数据块按照时间戳及切分规则,将数据块切分成一个个的小文件;其次纵向根据维度列构建维度词典,并按照b i tmap进行压缩使每列指标进行单独存储生成压缩数据;

按照LRU算法,根据数据入库和使用情况将压缩数据分为冷热数据并分别存储;

所述的查询步骤包括,

查询发起后根据散列规则将查询任务下发到各个计算节点,计算节点准备数据并分别进行计算,各个计算节点将自身计算的结果数据发送给查询代理机,查询代理机对这些结果数据进行最后的汇总并返回。

经ETL处理的数据调度分配至计算节点进行聚合计算。

还包括将查询结果进行内存缓存,当相同查询再次发起可以实现毫秒返回。

热数据为最近入库数据或最近使用的数据,冷数据为长期不用的数据,将热数据放入各个计算节点本地磁盘进行存储,冷数据存储在HDFS中。

计算节点准备数据并分别进行计算包括计算节点根据自身持有的数据和查询需要的数据,判断是否需要从另行存储的冷数据获取数据。

一种大数据联机分析处理装置,包括,

入库预计算模块,用以将经ETL处理的数据读入内存并根据预先设定的时间粒度,按照维度加时间粒度做键值的方式进行累加计算,达到时间粒度上限时将内存中的数据块保存到本地磁盘;

压缩存储模块,用以首先横向将所述的数据块按照时间戳及切分规则,将数据块切分成一个个的小文件;其次纵向根据维度列构建维度词典并按照bitmap进行压缩,每列指标进行单独存储生成压缩数据;

冷热分储模块,用以按照LRU算法,根据数据入库和使用情况将压缩数据分为冷热数据并分别存储。

查询模块,用以查询发起时,根据散列规则将查询任务下发到各个计算节点;计算节点准备数据并分别进行计算;然后各个计算节点将自身计算的结果数据发送给查询代理机,查询代理机对这些结果数据进行最后的汇总并返回。

还包括调度模块,用以将经ETL处理的数据分配至计算节点进行聚合计算,同时用以将查询任务拆分成多个子任务并分别派发至各个计算节点。

还包括缓存存储模块,用以将查询结果进行内存缓存,当相同查询再次发起可以实现毫秒返回。

所述的冷热分储模块控制方法为:热数据为最近入库数据或最近使用的数据,冷数据为长期不用的数据,将热数据放入各个计算节点本地磁盘进行存储,冷数据存储在HDFS中。

与现有技术相比,本发明的有益效果是:

本发明采用预计算结合压缩的方式解决大数据给OLAP带来的存储压力;通过冷热数据分离的方式,长期有效的存储历史数据;另外采用分布式计算,将计算压力分离,快速响应查询需求。

附图说明

图1所示为本发明的大数据联机分析处理方法及装置的流程示意图。

具体实施方式

以下结合附图和具体实施例对本发明作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

术语解释:

OLAP:联机分析处理(Online Analytical Processing),是使分析人员、管理人员或执行人员能够从多种角度对从原始数据中转化出来的、能够真正为用户所理解的、并真实反映企业维特性的信息进行快速、一致、交互地存取,从而获得对数据的更深入了解的一类软件技术。

维度:dimension,维度是一组属性,表示与多维数据集中度量值相关的领域,并且用于分析多维数据集中的度量值。

HADOOP:Apache开源顶级项目,分布式计算框架,主要包括分布式存储和分布式计算。HDFS:是HADOOP软件框架的核心部分,适合运行在通用硬件上的分布式文件系统,具有高容错性。

如图1所示,本发明的大数据联机分析处理方法,包括入库步骤和查询步骤,

所述的入库步骤如图1实线标示的子步骤1-4所示,其包括,

步骤101,将经ETL处理的数据读入内存并根据预先设定的时间粒度,按照维度加时间粒度做键值(key)的方式进行累加计算,达到时间粒度上限时将内存中的数据块保存到本地磁盘;

该子步骤中,经过ETL处理的数据在进入OLAP系统时,已经被转化为维度、度量值和时间戳构成的结构化数据,将这些数据读入内存,并根据预先设定的时间粒度,按照维度加时间粒度做键值(key)的方式进行累加计算,达到时间粒度上限时将内存中的计算结果保存到本地磁盘,累加计算的过程往往跟业务密切相关,计算过程一般比较简单,例如累加求和,具体计算过程可以根据业务需求设定,并无固定算法。系统将业务进行了封装,对外用户只需要配置哪些列需要进行预计算,和进行哪种预计算即可。将数据按照时间粒度进行聚合,有效减少数据块的大小,

步骤102,首先横向将所述的数据块按照时间戳,设定切分规则,可以设定按分钟、小时、天等,将数据块切分成一个个的小文件;其次纵向根据维度列构建维度词典,维度列转化为词典编号,并按照bitmap进行压缩,每列指标进行单独存储生成压缩数据;

数据压缩时采用横纵双向切分的策略,因为统计分析类需求往往与时间序列紧密联系,先按照时间对数据进行切分,既可以缩小数据规模,又方便承接查询请求,然后bitmap结合列式存储,两者相结合,可以轻松应对海量数据,并且磁盘占用量很小。

步骤103,按照LRU算法,根据数据入库和使用情况将压缩数据分为冷热数据并分别存储;

LRU由负责调度的管理节点发起,管理节点记录了数据块的具体分布,并标记了数据块的创建和访问时间,根据入库、访问时间和频度等使用情况,将压缩数据分为冷热数据,热数据为最近入库数据或最近使用的数据,冷数据为长期不用的数据。将热数据放入各个计算节点本地磁盘进行存储,冷数据存储在HDFS中,这样既可以快速响应绝大多数的查询请求,又可以储存长时间的历史数据。

所述的查询步骤如图1所示的虚线标示的子步骤1-8所示,其包括,

查询发起时,将查询任务拆分为多个子任务,分别派发给各个计算节点,采用分布式计算,计算速度大大提升,计算节点准备数据并分别进行计算;基于上述冷热数据的分别存储,在计算节点准备数据时计算节点根据自身持有的数据和查询需要的数据,判断是否需要从另行存储的冷数据获取数据,当需要读取时则从冷数据存储,如hdfs中读取,各个计算节点将自身计算的结果数据发送给查询代理机,查询代理机对这些结果数据进行最后的汇总并返回,如果节点执行失败,该节点的任务会重新派发给别的机器,保证任务的健壮性。

同时,还包括将将查询结果进行内存缓存,当相同查询再次发起可以实现毫秒返回。将查询结果进行内存缓存,能有效针对网络频发,如热点事件的查询,从缓存中快速命中,极速返回分析结果,提高使用感受。

本发明利用OLAP时间粒度较大的特点,通过对数据进行预计算,来减小大数据量对后期查询造成的压力,用户查询请求只需基于预计算的结果进行汇总就可以实现。另外本发明采用冷热数据交互的方式,解决大数据带来的资源紧张的问题,近期热点数据放入内存中快速查询,历史数据经过压缩放入HDFS,长期海量存储;其次本发明还借鉴HADOOP分布式计算的特点,将海量数据进行计算拆分,多台机器协调工作,再将计算结果进行汇总,得到最终结果,这样能够平滑的进行扩容,随着数据量的增大,只需增加机器便可以解决。

本发明还同时公开了一种大数据联机分析处理装置,包括,

入库预计算模块,用以将经ETL处理的数据读入内存并根据预先设定的时间粒度,按照维度加时间粒度做键值的方式进行累加计算,达到时间粒度上限时将内存中的数据块保存到本地磁盘;本发明采用的预计算放在内存中进行,根据使用者设定的时间粒度进行提前聚合,实现缩小数据量的目的。

压缩存储模块,用以首先横向将所述的数据块按照时间戳及切分规则,将数据块切分成一个个的小文件;其次纵向根据维度列构建维度词典并按照bitmap进行压缩,每列指标进行单独存储生成压缩数据;本发明压缩存储模块采用了横纵双向切分,双向压缩的方式,基于这种设计方式,可以轻松应对海量数据,并且磁盘占用量很小。本发明通过预计算和压缩,在不影响查询需求的前提下,尽可能小的减少数据的规模,节省磁盘资源,相对MYSQL方案,本发明的磁盘空间要节省80%。

冷热分储模块,用以按照LRU算法,根据数据入库和使用情况将压缩数据分为冷热数据并分别存储。其控制方法为:热数据为最近入库数据或最近使用的数据,冷数据为长期不用的数据,将热数据放入各个计算节点本地磁盘进行存储,冷数据存储在HDFS中。本发明冷热分存模块的设计使得保留海量数据进行OLAP变成现实,在现代大数据分析时代具有重要的意义。

查询模块,用以查询发起时,根据散列规则将查询任务下发到各个计算节点;计算节点准备数据并分别进行计算;然后各个计算节点将自身计算的结果数据发送给查询代理机,查询代理机对这些结果数据进行最后的汇总并返回。缓存存储模块,用以将查询结果进行内存缓存,当相同查询再次发起可以实现毫秒返回。本发明分布式计算查询和缓存模块的设计,使得查询请求速度得以提升,90%的查询请求可以实现秒级响应,相对传统OLAP而言,这个速度的提升非常明显。

还包括调度模块,用以将经ETL处理的数据分配至计算节点进行聚合计算,同时用以将查询任务拆分成多个子任务并分别派发至各个计算节点。LRU由负责调度的管理节点发起,管理节点记录了数据块的具体分布,并标记了数据块的创建和访问时间。调度是基于ZOOKEEPER来实现的,类似于mas ter管理节点的角色,负责记录数据块的位置,负责入库数据的拆分,查询请求的路由等。

以上所述仅是本发明的优选实施方式,应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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