一种基于预运算的分布式OLAP分析方法及系统与流程

文档序号:12305441阅读:214来源:国知局
本发明涉及大数据分析的
技术领域
:,尤其是指一种基于预运算的分布式olap分析方法及系统。
背景技术
::随着信息化技术的不断发展和完善,计算机科学技术被广泛应用于各行各业,与此同时也积累了海量的数据。如何从这些海量数据中提取有效信息充分挖掘其中蕴含的价值,成为许多管理决策者日益关心的重要问题。对于政府机构而言,大数据分析技术可以提高政府信息管理水平,通过对各级政府部分积攒的海量数据进行深入分析,从而为政府政策方针的制定提供参考依据,提高政府的管理效率和宏观决策水平。对于企业组织而言,可以通过大数据分析技术进行精准营销和提高服务质量促进企业服务转型,成为企业赢得竞争的关键。目前,大数据分析技术被广泛应用于商业智能、政府决策、公共服务等领域,从而提高各领域的运行效率和整个社会经济的集约化程度。大数据分析一般要经过数据采集、数据预处理、数据存储与管理、在线分析处理、分析结果可视化等步骤。其中,在线分析处理(olap)是一种将要分析的数据转化为用户易于理解的维度,提供从各种可能地视角观察信息的软件技术,以便于管理人员和分析人员可以快速、一致、交互地访问他们所关心的数据。在线分析处理(olap)作为大数据分析过程中的核心环节,通过构建数据立方体为用户提供多维动态分析,包括各个维度的计算和查询应用。用户可以结合自己的查询分析需求通过切片、切块、旋转、上钻、下钻等多维操作对数据仓库中的海量数据进行快速灵活的分析处理,并以直观的、方便决策人员理解形式将查询结果展示出来,从多个层次、多个角度、多个侧面对数据进行剖析,以便决策人员做出决定。传统的在线分析处理方法是基于集中式结构化数据存储方式如关系型数据库管理系统采用单节点运行计算的方式,将多维数据分为存储数据和维关键字的事实表和存放维信息的维表两部分,通过多表连接、分组聚集计算等操作实现多维分析。由于传统的数据库处理量级尚小,单台服务器的性能很容易满足需求,也不需要消耗额外的存储空间。但在大数据时代,数据规模急剧增大,事实表动辄千万到亿量级同时还有千万量级的维表,由于采用单节点的计算方式计算能力和资源都相对有限,单台服务器的性能会成为瓶颈甚至导致服务器崩溃。此外,如果每次查询都需要从原始数据中进行大量综合计算,会导致查询延迟过长,随着数据的不断积累,查询响应时间也会不断增加以至于超过用户所能忍受的等待时间。由此可见,传统的在线分析处理分析方法无法很好地适用于大数据分析场景的要求。因此,为了实现对海量数据的在线分析处理分析,需要一种性能稳定、高效的分布式olap方法及系统。与传统在线分析处理方法不同,基于预运算的分布式olap分析方法及系统是在hadoop的基础上采用集群并行计算的方式进行多维数据分析,从而极大提高在线分析处理能力,解决传统分析方法无法对海量数据进行高效分析处理的问题。此外,根据数据立方体的定义通过预先计算的方式对数据模型进行预构建来削减hadoop环境中处理超过百亿行数据规模时的查询延迟时间,从而解决查询时间会随数据规模的不断增长而增加的问题。同时,为了更好地对预构建过程进行控制,还需要对构建任务进行监控和管理以便及时根据任务运行状态进行调整构建过程。针对大数据应用分析场景的特点,充分利用大数据分布式计算技术和分布式存储技术,在分布式数据仓库的基础上,研究一种真正可靠、性能稳定、查询高效的基于预运算的分布式olap分析方法及系统,从而实现海量数据的高效可靠的在线分析处理是本发明的重点。技术实现要素:本发明的目的在于克服传统在线分析处理分析技术的不足,提供了一种基于预运算的分布式olap分析方法及系统,充分利用hadoop集群mapreduce框架的并行处理性能,通过预运算的方式将多维立方体的表连接、聚合运算等计算过程在用户查询之前提前进行计算并将计算结果缓存到分布式键值数据库存储系统中,从而提高多维查询的效率,提高olap分析系统的性能。为实现上述目的,本发明所提供的技术方案,如下:一种基于预运算的分布式olap分析方法,首先,在服务器集群上搭建hadoop平台,在hdfs基础上构建分布式数据仓库;然后基于分布式数据仓库选择事实表和关联一组维表构建数据模型,根据数据模型定义数据立方体;再对给定的数据立方体启动数据立方体预运算任务,将作业提交到hadoop集群中运行进行数据立方体预构建,并在构建过程中对作业运行情况进行实时监控,及时掌握作业运行状态,将计算好的中间结果保存到分布式键值存储系统中供后续分析查询;而后将用户多维操作转换为mdx语句并提交,根据mdx语句进行缓存检查,如果查询结果命中则直接返回结果集,否则,执行mdx查询语句,将mdx查询转换为sql进行查询;接着将sql生成的执行计划转换为对数据立方体的key-value查询操作;最后,分布式键值存储系统根据查询操作返回查询结果集,并将结果集以数据表或者图表的形式返回给用户。所述数据立方体预构建流程按如下步骤执行:1)根据cube的定义将数据仓库中源数据表中所有相关的表连接后提取相关数据,从而生成原始数据并插入到一个临时表中;2)生成原始数据表后,这些数据文件存储在hdfs中,但文件大小不一甚至有些文件是空的,为了避免后续的mapreduce任务受数据文件大小不同和分布不均的影响导致任务执行缓慢的情况,需要对表数据进行重新分配来均衡数据文件的分布;3)根据上一步生成的表计算表中度量的distinct值从而生成事实表并写入文件;4)依据上一步生成的distinctcolumn文件和维度表计算各个维度的distinct值以构建字典表,查询字典表可以获得维成员值;5)通过临时表计算所有维度可能的组合生成basecuboid文件;6)计算各层cuboid文件,从第n层开始计算cuboid文件,每一步都以前一步的结果作为输入,然后从中去除某个维度后进行聚合,生成一个子cuboid,直到第0层cuboid文件计算完成;7)将顺序文件格式的cuboid文件转换为hfile文件,避免cuboid文件频繁地直接插入而影响hbase的性能,也减少了大量的磁盘io操作;8)将hfile文件加载到htable中从而将结果存储到hbase中,同时将原始文件删除。一种基于预运算的分布式olap分析系统,包括:cube构建模块,该cube构建模块包括源数据加载单元、数据模型定义单元、数据立方体预构建单元;所述源数据加载单元用于配置数据源连接信息从分布式数据仓库中加载原始数据表信息到分析系统中;所述数据模型定义单元用于定义事实表和一组维表,构建面向主题的星状模型或雪花型模型结构,根据模型结构定义相应的数据立方体,包括cube名称、维度信息、度量信息等,并将数据立方体相关元数据保存到系统中。所述cube预构建单元用于根据数据立方体的定义从数据仓库中读取原始数据通过mapreduce计算生成htable并将其加载到hbase中以供多维查询模块使用;多维查询模块,该多维查询模块包括mdx转换单元、nosql缓存单元和olap查询单元;所述mdx转换单元用于将多维操作语言mdx转换为sql;所述nosql缓存单元用于管理用户已经查询过的结果集;所述olap查询单元用于将sql进行解析转换成对预先构建好的数据立方体的key-value查询操作以获取结果并返回给用户;分析结果可视化模块,该分析结果可视化模块包括多维查询单元和结果显示单元;所述多维查询单元负责将用户操作如切片、切块、钻取、旋转等表示为对应的mdx语句,并将其发送到olap服务器;所述结果显示单元利用html、js等前端技术负责将查询结果集以数据表或者丰富多样的图表形式进行前端展示。本发明与现有技术相比,具有如下优点与有益效果:1、基于分布式数据仓库的olap分析,不仅可以满足海量数据的存储要求,同时可充分发挥服务器集群的并行处理性能,并提供一定的可扩展性。利用hadoop强大的分布式计算能力,查询计算任务能够借助集群成百上千个计算节点的总体资源,从而保证系统能够以并发方式对这些计算任务进行处理,并通过合并生成最终结果。2、采用预运算的方式进行cube构建,可以有效解决传统的在线分析处理每次查询都需要从原始数据中进行大量计算导致查询缓慢的问题,基于并行计算的方式对立方体进行预构建从而提高cube构建效率。olap分析系统的cube构建模块采用分布式列式数据存储方式,可以有效节省海量数据的存储空间,同时提高数据立方体的查询性能。3、借助分布式nosql数据库高性能、易扩展的特点,采用基于纯内存的nosql数据库进行缓存优化,将已经查询的数据结果集保存到内存中,可以有效避免多个决策者在进行决策分析时会多次重复olap分析操作进行重复计算,从而可以减轻系统负担提高系统性能和查询效率,保证海量数据的高效查询分析。附图说明图1为基于预运算的分布式olap分析方法总体流程图。图2为基于预运算的分布式olap分析系统层次结构图。图3为元数据自动化配置流程图。图4为olap查询缓存流程图。图5为数据模型定义流程图。图6为预运算流程图。图7为查询测试时间对比图。具体实施方式下面结合实施案例对本发明作进一步的说明。参见图1所示,本实施例所提供的基于预运算的分布式olap分析方法,具体是:首先,在服务器集群上搭建hadoop平台,在hdfs基础上构建分布式数据仓库;然后基于分布式数据仓库选择事实表和关联一组维表构建数据模型,根据数据模型定义数据立方体;再对给定的数据立方体启动数据立方体预运算任务,将作业提交到hadoop集群中运行进行数据立方体预构建,并在构建过程中对作业运行情况进行实时监控,及时掌握作业运行状态,将计算好的中间结果保存到分布式键值存储系统中供后续分析查询;而后将用户多维操作转换为mdx语句并提交,根据mdx语句进行缓存检查,如果查询结果命中则直接返回结果集,否则,执行mdx查询语句,将mdx查询转换为sql进行查询;接着将sql生成的执行计划转换为对数据立方体的key-value查询操作;最后,分布式键值存储系统根据查询操作返回查询结果集,并将结果集以数据表或者图表的形式返回给用户。所述数据立方体预构建流程按如下步骤执行:1)根据cube的定义将数据仓库中源数据表中所有相关的表连接后提取相关数据,从而生成原始数据并插入到一个临时表中;2)生成原始数据表后,这些数据文件存储在hdfs中,但文件大小不一甚至有些文件是空的,为了避免后续的mapreduce任务受数据文件大小不同和分布不均的影响导致任务执行缓慢的情况,需要对表数据进行重新分配来均衡数据文件的分布;3)根据上一步生成的表计算表中度量的distinct值从而生成事实表并写入文件;4)依据上一步生成的distinctcolumn文件和维度表计算各个维度的distinct值以构建字典表,查询字典表可以获得维成员值;5)通过临时表计算所有维度可能的组合生成basecuboid文件;6)计算各层cuboid文件,从第n层开始计算cuboid文件,每一步都以前一步的结果作为输入,然后从中去除某个维度后进行聚合,生成一个子cuboid,直到第0层cuboid文件计算完成;7)将顺序文件格式的cuboid文件转换为hfile文件,避免cuboid文件频繁地直接插入而影响hbase的性能,也减少了大量的磁盘io操作;8)将hfile文件加载到htable中从而将结果存储到hbase中,同时将原始文件删除。基于上述的分布式olap分析方法进行结构设计,本实施例提供的分布式olap分析系统,包括cube构建模块、多维查询模块、分析结果可视化模块。cube构建模块包括源数据加载单元、数据模型定义单元、数据立方体预构建单元;所述源数据加载单元用于配置数据源连接信息从分布式数据仓库中加载原始数据表信息到分析系统中;所述数据模型定义单元用于定义事实表和一组维表,构建面向主题的星状模型或雪花型模型结构,根据模型结构定义相应的数据立方体,包括cube名称、维度信息、度量信息等,并将数据立方体相关元数据保存到系统中。所述cube预构建单元用于根据数据立方体的定义从数据仓库中读取原始数据通过mapreduce计算生成htable并将其加载到hbase中以供多维查询模块使用;多维查询模块包括mdx转换单元、nosql缓存单元和olap查询单元;所述mdx转换单元用于将多维操作语言mdx转换为sql;所述nosql缓存单元用于管理用户已经查询过的结果集;所述olap查询单元用于将sql进行解析转换成对预先构建好的数据立方体的key-value查询操作以获取结果并返回给用户;分析结果可视化模块包括多维查询单元和结果显示单元;所述多维查询单元负责将用户操作如切片、切块、钻取、旋转等表示为对应的mdx语句,并将其发送到olap服务器;所述结果显示单元利用html、js等前端技术负责将查询结果集以数据表或者丰富多样的图表形式进行前端展示。为了测试本实施例上述基于预运算的分布式olap分析方法及系统的应用效果,我们将这一技术应用到某社保大数据分析平台当中。整个分析系统层次结构如图2所示,从上至下划分为四层:1)表现层表现层是直接与用户进行交互的层次,通过查询接口获得多维分析结果并利用html、js等前端技术将olap分析结果采用丰富多样的图表形式如报表、饼图、柱状图、折线图、堆叠图等显示在web浏览器上。2)应用层应用层用于接收上层的用户请求并做出响应,同时向下层提交sql查询获取查询结果。其中web服务器负责处理用户界面的交互,从服务层同步元数据生成cubeschema文件,元数据自动化配置流程如图3所示,并根据cubeschema将用户多维操作如切片、切块、钻取、旋转等表示为相应的mdx语句,并将其发送到olap服务器。olap服务器负责接收mdx语句,并检查查询是否已缓存,若缓存不命中则将mdx语句转换为对应的sql并发送到服务层进行查询,查询缓存流程如图4所示。3)服务层服务层是整个系统的核心,负责数据立方体的构建和执行多维查询。首先根据分析目标进行数据模型定义并将cubemetadata信息存储到系统中,详细数据模型定义流程如图5所示。然后根据数据立方体的定义,从分布数据仓库获取原始数据进行数据立方体预构建,并将cube的计算结果存储到到hbase中。具体数据立方体预运算流程如图6所示。最后,将sql生成的执行计划转换为对hbase的key-value查询操作,从构建好的cube获取查询结果并返回给上一层。4)存储层存储层作为持久层,在hdfs基础上构建数据仓库,由多个存储节点组成,负责存储管理要分析的原始数据,为上层提供数据存储服务。对于系统的性能考量,主要从执行查询分析的效率上体现。本系统将从olap查询性能测试、olap查询缓存性能测试两方面对系统的实际应用情况进行说明和验证。olap查询性能测试主要是基于不同olap方法对构建的数据立方体进行olap操作测试系统的响应速度。根据系统中构建的数据立方体,对数据立方体进行包括切块、切片、上卷、下钻和旋转五种olap查询操作,其响应时间如图7所示。由图可知,在没有设置olap查询缓存的情况下,基于实时计算的传统分析方法耗时均多于本系统的查询时间。此外,由于系统是采用预运算的方式在olap查询中的各个操作耗时相对稳定,所有操作都能在毫秒级内完成,其快速且稳定的响应在于查询操作是直接获取数据,不用进行表连接、聚合等其它操作。olap查询缓存主要是为了减少用户重复查询时造成系统的重复运算,提高olap的响应速度。因此,缓存的性能测试内容主要是在没配置缓存和配置了缓存两种场景下,分别进行olap查询,比较查询缓存对系统响应速度的影响。测试的数据集大小分别为600条、2万条、20万条以及200万条,实验结果如下表所示。编号记录数不使用缓存(s)使用缓存(s)16000.760.052200000.910.0722000001.450.06320000003.450.05可以看到,分布式缓存对于系统针对相同查询在响应速度上有很大提高,考虑到多个决策者在进行决策分析时会多次重复olap分析,查询缓存的配置对于提高系统性能,减轻系统负担具有重要作用,进一步提升平台的分析性能。以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1