大数据分析的分布式 MOLAP 技术
- 格式:docx
- 大小:901.55 KB
- 文档页数:7
大数据分析的分布式技术随着大数据时代的到来,传统的数据处理技术已经无法满足大数据量、高速度和多样性等特点的数据处理需求。
为了处理这些规模庞大的数据集,分布式技术成为了大数据分析的重要手段之一、在本文中,将详细介绍大数据分析的分布式技术。
一、分布式系统基础分布式系统是指由多台计算机构成的网络,通过将任务分配到不同的计算机节点上进行协同工作,从而解决单台计算机的性能瓶颈问题。
分布式系统的基本原理是将一个任务拆分成多个子任务,并分配到多个计算机节点上并行执行。
分布式系统具有以下特点:1.高可扩展性:通过增加计算机节点的方式,可以方便地扩展分布式系统的计算能力。
2.高并发性:分布式系统中的多个节点可以同时处理不同的任务,提高了系统的并行处理能力。
3.高可靠性:分布式系统中的每个计算机节点都可以独立运行,当其中的一个节点发生故障时,不会影响整个系统的正常运行。
1.分布式存储技术分布式存储技术是指将大数据集分散存储在多个计算机节点上,通过数据分片和数据副本备份等方式,提高数据的存储能力和可靠性。
常用的分布式存储系统包括HDFS(Hadoop分布式文件系统)、Ceph、GlusterFS 等。
这些系统具有以下特点:(1)高可扩展性:可以方便地增加计算机节点,扩展存储容量。
(2)高可靠性:通过数据副本备份机制,当一个节点出现故障时,可以从其它节点恢复数据。
(3)高并发性:多个计算机节点可以同时访问同一份数据,提高数据读写性能。
2.分布式处理技术分布式处理技术是指将大数据集的处理任务分配到多个计算机节点上并行执行,从而提高数据处理的速度和效率。
常用的分布式处理框架包括Hadoop、Spark等。
这些框架具有以下特点:(1)任务调度和资源管理:分布式处理框架可以根据任务的优先级和节点的负载情况,动态地将任务分配给空闲的计算机节点,并对资源进行合理管理。
(2)数据分片和数据倾斜处理:分布式处理框架可以将数据切分成多个分片,分配到不同的计算机节点上并行处理。
基于大数据分析的分布式MOLAP技术研究作者:姜技来源:《无线互联科技》2020年第08期摘 ; 要:在计算机系统运行以及研究环节中,会存在大量的规模效应,此类状况难以避免,要想有效解决此类问题,就需要利用分布式的处理方式,开展对文件系统的分析。
文章对分布式多维联机分析过程(MOLAP)的数据模型进行了分析,从维编码的算法、映射归约(MapReduce)算法的实现、分析维的遍历算法等方面作深入探讨。
关键词:分布式处理;多维联机分析过程;维编码算法多维联机分析过程(Multidimension Online Analytical Processing,MOLAP)技术通常是指以MapReduce程序为基础,一般用于加强对计算机系统的处置和管理。
在信息数据的多个层次和维度运行中,一般会借助遍历算法以及维编码的直接操作等流程,实现高质量运转。
在目前的发展环节,为提高总体的信息技术处置状况质量,需要加强对MOLAP技术的使用。
1 ; ;数据模型MOLAP具体的运行内容分为维和实际状况两个方面。
在运行环节,核心部分是探寻在维和事实中所存在的映射联系性。
通常情况下,在管理过程中,使用较为传统的ROLAP技术能将数据库和星形模型相连,在发散自身维度信息的过程中,还会实现事实信息的有效存储。
采用外键存在联系之内的映射关系反应会增加整体运行效率和成果。
但是在实际操作和运行的阶段中,工作人员还需要联合实际性的操作状况,促使操作流程和相对应的运行效率不断提升。
首先,在一种多维度的数据运转模型处理过程中,将大量的数据开展分类处理时,维就会将多种偶数据放置在一个含有多种层叠联系的数据构造中,并提供大量和数据之间的运行和筛选方式,核算具体的组织方法。
在针对此环节的分析和研究过程中,通常需要事先将维具体内涵开展简化处理工作,实现对多维度数据模型的研究和简化,具体的简化处理工作会受到以下环节制约。
例如,设定A为维,则相对应的A含有维层次,但是具体维层次的具体数量会为1,A 本质上是一种由多个N维级所构成的一种集合体方式,设定(i∈[1,n])是一种随意的维级别,存在一种维度的属性,含带具体的数值。
大数据分析的分布式MOLAP技术作者:韩鹏鹏来源:《中国新通信》 2018年第19期【摘要】采用大数据分析方法对分布式MOLAP 技术进行解读,能够实现对数据存储问题的有效解决,降低大数据规模效应对数据存储产生的不利影响。
本文在对分布式MOLAP 技术进行综合阐述的基础上,分析了维编码算法的应用,论述了Map Reduce 算法的实现过程,介绍了数据存储方法,以期为相关人士提供借鉴和参考。
【关键词】分布式MOLAP 技术数据存储维编码算法前言:随着社会经济的迅速发展,大数据时代已经全面来临,大数据技术的广泛应用,不仅提升了信息数据的获取和共享速率,还为计算机科学的发展赢得了发展契机。
但受数据量过大的影响,对计算机的数据处理能力也提出了更高挑战。
因此,探析分布式MOLAP 技术对数据的处理价值,具有十分重要的现实意义。
一、分布式MOLAP 技术简述建立在大数据分析基础之上的分布式MOLAP 技术主要通过对Map Reduce 算法的充分利用,建立相关的程序模型,实现对各类数据信息的联机处理。
在数据处理过程中,分布式MOLAP 技术能够基于数据的维度进行建模,充分发挥维编码算法的价值实现对数据的分析和处理,具有卓越的数据处理性能,能够实现对数据度量的有效映射。
二、数据模型分布式MOLAP 技术通过建立多维模型,能够实现对维和事实之间映射关系的探析。
在以往的数据处理过程中,MOLAP 技术通过构建星型模型和关系数据库,将维数据信息和事实数据信息进行分别存储,在外键的作用下实现对二者之间映射关系的充分反映,但由于在处理数据过程中需要进行外键操作,导致了工作效率出现明显降低。
维编码在处理数据的过程中,主要涉及以下几方面内容:1)维:在建立多维模型的过程中,应首先明确数据信息的分类,确保所有数据的无重叠性,并基于数据信息的不同特点,选择不同的数据筛选方法。
本研究在建模过程中,实现了对维内涵的简化,规定简化后的数据模型应具备以下条件:将维假设为a,a 具备维层次,且值为1,若a 是由n 个不同层次的维构成的集合,则可以表示为a ∈(1,n),若a 由不同级别的维属性和值构成,那么同一级别的维所具备的子节点数应具备一致性。
使用Hadoop进行分布式数据仓库与OLAP分析的技术实现随着大数据时代的到来,企业面临着海量数据的存储和分析挑战。
为了解决这一问题,Hadoop作为一种开源的分布式数据处理框架应运而生。
本文将介绍使用Hadoop进行分布式数据仓库与OLAP(联机分析处理)分析的技术实现。
一、Hadoop简介Hadoop是由Apache基金会开发的一种可靠、可扩展的分布式计算框架。
它由两个核心组件组成:Hadoop Distributed File System(HDFS)和MapReduce。
HDFS用于存储大量数据,并将其分布在集群中的多个节点上。
MapReduce则负责将数据分布式处理。
二、分布式数据仓库的概念分布式数据仓库是一种将企业数据集中存储在多个节点上的系统。
它将数据从不同的数据源中提取、转换和加载到一个集中的存储位置,以便进行分析和报表生成。
分布式数据仓库的设计目标是提供高性能、可扩展性和容错性。
三、Hadoop作为分布式数据仓库的实现Hadoop的分布式文件系统HDFS提供了高可靠性的数据存储,可以容纳海量数据。
通过将数据分散在多个节点上,HDFS实现了数据的冗余备份,保证了数据的可靠性和容错性。
同时,Hadoop的MapReduce框架可以并行处理大规模的数据集,提供了高性能的数据处理能力。
在使用Hadoop作为分布式数据仓库时,首先需要将数据从不同的数据源中提取出来,并进行清洗和转换。
然后,将数据加载到HDFS中,以便后续的分析和处理。
Hadoop提供了丰富的工具和API来支持数据的提取、转换和加载过程,如Sqoop用于数据导入和导出,Hive用于数据查询和分析。
四、OLAP分析的概念OLAP是一种用于多维数据分析的技术。
它通过对数据进行切片、切块和钻取等操作,提供了灵活的数据分析和报表生成功能。
OLAP分析通常包括数据的聚合、计算和可视化等过程,以便用户能够更好地理解数据的关系和趋势。
五、Hadoop作为OLAP分析的实现Hadoop提供了一些工具和技术来支持OLAP分析。
数据夜话之⼤数据OLAP数据库概览当下⼤数据技术发展如⽕如荼,各种数据库处理技术层出不穷,可是各种数据库的⼤致分类清楚吗?能够结合项⽬数据的业务特点进⾏选型吗?今天先从OLAP 型数据库说起,介绍相关的数据库。
OLTP和OLAP分不清?我们通常将数据库分为OLTP和OLAP两⼤类,先了解⼀下它们的区别:1. OLTP (online transaction processing 联机事务处理),典型代表如 mysql,擅长事务处理,能够在数据操作时保持强⼀致性和原⼦性,⽀持数据的数据频繁插⼊或修改,数据模型⼀般为实体-关系模型(E-R),主要为了查询或者改变数据记录。
对于银⾏证券公司的账务系统来说为了保证准确性当然⾸选OLTP型数据库。
但是数据量过⼤的话,OLTP就有些⼒不从⼼了。
2. OLAP (online analytical processing 联机分析处理),例如 greenplum,擅长对⼤量数据进⾏多维复杂分析,追求极致性能,⽽不特别关注数据插⼊修改等事务性处理的⼀类数据库系统,数据模型⼀般为星型或雪花型,主要为了分析规律预测趋势。
可以理解为 OLAP ⾯对的是复杂的多表聚合型查询。
OLAP技术栈为应该这挑战⼤数据给传统数据技术带来的巨⼤挑战,主要发展出三⼤类OLAP型技术:MPP架构型OLAP (Massive Parallel Processing)批处理架构型OLAP预计算型OLAP上⾯三种OLAP型技术按照建模类型来划分的话,也可以分为:MOLAP,M即表⽰多维(Multidimensional),⼀般指预计算型OLAP。
它会对原始数据进⾏预计算得到⽤户可能需要的所有结果,然后将结果存储到优化过的多维数组存储中,能够快速响应请求。
如果业务发⽣需求变更,需要进⾏预定模型之外新的查询操作,现有的MOLAP实例就⽆能为⼒了,只能重新进⾏建模和预计算。
所以,MOLAP适合业务需求⽐较固定,数据量较⼤的场景。
基于大数据分析的分布式MOLAP技术研究分布式MOLAP技术即分布式多维在线分析处理技术,在大型数据集合上进行快速高效的多维分析和数据处理的技术。
该技术的核心思想是将大型数据集合划分成多个小的数据集合,并将计算任务分担给每个小的数据集合进行并行处理,然后将结果进行合并。
分布式MOLAP技术与传统的单机MOLAP技术不同,传统的单机MOLAP技术是将所有的数据存储在一个机器上,然后通过对该机器进行查询操作进行数据分析和处理。
而分布式MOLAP技术则是通过将数据分散存储在多个机器上,然后对分散的数据进行并行处理来提高数据处理的效率和速度。
基于大数据分析的分布式MOLAP技术主要分为三个部分:数据分割、分布式处理和结果合并。
1.数据分割:在大型数据集合上进行分析和处理的过程中,如果将所有的数据都存储在一个机器上进行处理,必然会导致计算效率低下。
因此在我们使用分布式MOLAP技术的时候,首先需要将大型数据集合划分成多个小的数据集合,并将这些数据集合分散存储在多个计算节点上。
接着,我们需要对数据集合进行划分和分配,使得数据重复的和计算负载相近的数据集合分配到同一个计算节点上。
2.分布式处理:数据分散存储在多个计算节点上之后,我们需要对这些数据进行并行处理。
每个计算节点负责处理分配给它的数据集合,使用多线程并行进行计算。
并行计算可以大大提高计算速度和效率。
3.结果合并:在分布式计算完成之后,我们需要将所有计算节点的计算结果进行合并。
将结果合并的过程可以使用MapReduce算法,将所有计算节点的结果通过网络传输到主节点进行汇总,最终得到分布式计算的结果。
三、分布式MOLAP技术的应用和优势基于大数据分析的分布式MOLAP技术在商业和科学数据分析和处理领域都有广泛的应用。
1.商业领域,分布式MOLAP技术可以帮助企业实现高效的商业数据分析和处理。
企业可以通过分析海量的商业数据,了解消费者的需求和行为,根据分析结果进行商业决策和市场调整。
攻克数据之谜极速OLAP技术解析数据在当今社会中扮演着至关重要的角色,它是企业决策的基石,也是科学研究的支撑。
然而,随着数据规模的不断增大和数据种类的不断增多,传统的数据处理方式已经难以满足日益增长的需求。
在这样的背景下,OLAP(On-Line Analytical Processing)技术应运而生,成为攻克数据之谜的利器。
OLAP技术是一种用于多维数据分析的技术,它能够提供快速、强大的数据查询和分析功能。
相比传统的关系型数据库,OLAP技术具有以下几个显著的优势。
首先,OLAP技术能够高效地处理大规模数据。
传统的关系型数据库在处理大规模数据时常常面临性能瓶颈,而OLAP技术通过采用预计算、数据压缩和并行计算等技术,能够在短时间内处理数十亿行数据。
这使得企业能够更快速地做出决策,并能够及时发现隐藏在海量数据中的有价值信息。
其次,OLAP技术支持多维分析。
传统的关系型数据库仅能处理二维数据,而OLAP技术则能够支持更高维度的数据分析,如三维、四维甚至更高维度的数据分析。
这种多维分析的能力使得用户能够更加深入地了解数据之间的关系,发现数据中的潜在规律,从而进行更精确的决策。
另外,OLAP技术具有良好的用户交互性。
传统的关系型数据库查询语言复杂,操作繁琐,对于非技术人员来说很难使用。
而OLAP技术则提供了易于使用的可视化工具,使得用户能够通过简单的拖拽和点击就能完成复杂的数据查询和分析操作。
这种良好的用户交互性使得各个层级的用户都能够轻松上手,从而更好地利用数据进行分析。
此外,OLAP技术还具有灵活的数据汇总和聚合功能。
传统的关系型数据库在进行数据汇总和聚合时需要频繁地进行大量的计算操作,导致查询速度缓慢。
而OLAP技术则通过预先计算和存储数据的聚合结果,能够快速地响应用户的查询请求。
这种灵活的数据汇总和聚合功能使得企业能够以更高效的方式进行数据分析和决策。
最后,OLAP技术具有较好的扩展性和灵活性。
在线分析处理(Online Analytical Processing,OLAP)技术是大数据技术中快速解决多维分析问题的方法之一。
由于OLAP需要快速读取大量数据,因此它对数据的读取吞吐量和计算效率有很高的要求。
目前,基于大数据的OLAP技术一般从面向读的存储优化、预计算、支持灵活分析等方面不断提高,近几年出现了很多令人激动的产品。
01OLAP技术介绍OLAP技术让用户能够从多个角度交互地分析多维数据,从中发现规律,用来做决策支持。
在分析过程中,用户需要获取和处理历史数据(一段时期内),有时也需要获取和处理实时数据,此时查询吞吐量和相应时间是关键性能指标。
1、OLAP分析操作OLAP分析一般需要设计数据立方体,立方体由分析的维度(dimension)、层级(level)和指标(metric)来定义,支持上卷(roll-up)、钻取(drill-down)、切片(slicing)和切块(dicing)等分析操作。
▪上卷:将数据按一个或多个维度向更高层级聚合,例如基于县级销售额统计市级销售额。
▪钻取:上卷的反向操作。
▪切片和切块:从OLAP多维数据集中按选择维度的特定数值选取出一组特定的数据,例如一季度的所有数据。
▪切块:从OLAP多维数据集中按选择维度的特定数值区间选取出一组特定的数据,例如2月到5月的所有数据。
2、与OLTP的区别与OLAP相对的是OLTP。
OLTP的全称是联机事务处理(Online Transaction Processing),是传统关系型数据库的主要应用。
OLTP的特点是实现插入、更新、删除等事务的在线处理,但系统需要保证事务的完整性,满足ACID原则。
在OLTP中,事务的吞吐量是关键性能指标,以每秒事务数来衡量效率。
由于严格的约束限制,支持OLTP的数据系统通常无法满足OLAP大规模数据读取与处理的需求,二者对数据读取的吞吐量要求相差不止一个量级,因此OLAP系统的技术选型一般与OLTP不同,数据的组织方式也不同。
OLAP技术在数据分析中的应用摘要:首先介绍了olap的概念、功能特征,然后通过实例对多维数据库的概念、层次关系和多维数据分析的主要操作进行了详细描述。
最后,以oracle公司的hyperion产品作为多维数据库分析的平台,通过对一大型能源集团公司的财务预算系统中的预算数据进行分析,介绍了olap技术方法的实际应用,总结了olap技术在数据分析工作中的优势。
关键词:联机分析处理;多维数据库;数据分析;甲骨文产品;财务预算系统中图分类号:tp392 文献标识码:a 文章编号:1007-9599 (2013) 02-0000-03olap(on-line analytical processing,即联机分析处理)是一种多维数据库技术。
这种技术的设计目的是针对特定问题的实时数据访问和分析,并且提供直观易懂的查询结果。
还有一种处理技术oltp(on-line transaction processing,即联机事务处理),与olap不同,oltp是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理。
1 olap技术介绍1.1 olap技术的发展背景60年代,关系数据库之父e.f.codd提出了关系模型,促进了联机事务处理(oltp)的发展(数据以表格的形式而非文件方式存储)。
1993年,e.f.codd提出了olap概念,认为oltp已不能满足终端用户对数据库查询分析的需要,sql对大型数据库进行的简单查询也不能满足终端用户分析的要求。
用户的决策分析需要对关系数据库进行大量计算才能得到结果,而查询的结果并不能满足决策者提出的需求。
因此,e.f.codd提出了多维数据库和多维分析的概念,即olap。
olap技术正是为了满足决策管理的需求而产生的。
1.2 olap特征olap的技术核心是”维”(dimension)这个概念。
“维”是指一种视角,是一个判断、说明、评价和确定一个事物的多方位、多角度、多层次的条件和概念。
大数据分析知识:分布式大数据处理的技术和实现方案随着Internet和云计算的兴起,大数据已经成为各个行业的热门话题,通过大数据分析可以发掘客观的信息,并给企业带来巨大的商业价值。
由于数据量的增大和数据之间的关系变得更加复杂,传统的数据处理方式已经无法满足实际需求,因此分布式大数据处理成为了当前行业主流的技术方案之一。
一、分布式大数据处理技术分布式大数据处理是将一段数据分割成小块,由多台计算机分别处理,最后再将处理结果合并起来的一种处理方式。
这种方式具备以下几个优点:1.效率:由于分布式处理可以在多台计算机上同时执行,因此可以大大缩短处理时间,提升数据分析效率。
2.可扩展性:随着数据量的增长,分布式处理可以简单地增加处理节点,而无需改变现有的架构,从而轻松实现可扩展性。
3.可靠性:由于分布式处理可以通过副本和容错机制保证数据的可靠性,即使某个节点出现问题,也可以保证数据不会丢失。
目前常用的分布式大数据处理技术主要包括Hadoop、Spark和Flink等。
1. HadoopHadoop是一个由Apache组织开发的分布式大数据处理框架,可以支持海量数据的处理和存储,具有快速、可靠和高效的处理能力。
Hadoop主要包括HDFS和MapReduce两个主要组成部分。
其中,HDFS用于数据存储,将数据分成块后存储在多个节点上,通过数据副本和故障转移来保证数据的可靠性。
而MapReduce则用于数据处理,将数据放到各个节点上进行计算,将每个节点上的数据处理结果合并起来得到最终结果。
2. SparkSpark是一个由Apache开源组织开发的基于内存的分布式大数据处理框架,它可以使得分布式大数据处理更加高效,有着比Hadoop更优秀的处理速度和性能。
Spark支持多种数据处理模式,包括批处理、交互式处理、流处理等。
Spark的核心框架由Spark Core、Spark SQL、Spark Streaming 和MLlib等几个主要模块组成。
Cognos MOLAP技术参考1.概述Cognos的Transformer提供MOLAP的数据存储方式,支持所有主流关系型数据库及平面文件、接口数据等。
其技术精髓依据“牺牲空间,换取时间”的经典理论,使数据访问的性能得到了最大化的提升。
因此,MOLAP是目前主流的OLAP技术。
有独立的OLAP引擎,能提供比ROLAP更为优秀的性能,和更好的用户体验。
(查询分析的响应时间一般为秒级)相对于MOLAP,ROLAP需要基于传统的关系型数据,所以运行速度受限于数据库的性能,当用户数多或查询复杂的时候性能难以保证(查询分析的响应时间一般为分钟级)。
ROLAP为了提高查询分析的响应速度往往需要在数据库中构造很多中间表,这些表在系统运行一段时间后管理和维护会成为比较大的问题(因为这些表对DBA是透明的,DBA不能明确知道这些表是否还会使用,也不知道这些表对当前ROLAP是否还有效)。
并且,伴随这业务数据的不断积累和业务需求的逐渐变化,ROLAP的数据存储会呈指数状急剧膨胀,经常造成后期维护成本(存储介质)的大量开销。
2.特性●友好性直接使用鼠标拖拽,进行模型设计,不需要编写程序,通过工具的自动优化和自动程序生成功能,大大简化了开发过程,可以快速建立模型,快速响应用户需求。
●虚拟Cube技术智能的虚拟Cube技术,可将存储数据的立方体文件进行物理拆分,并且支持对分区进行增量更新,从而实现对超大数据量的支持和维护,不同的虚拟Cube可以采用不同的模型,适应业务的发展●空间占用区别于其他MOLAP产品的膨胀型存数方式,Cognos MOLAP采用压缩型数据存储,具备高压缩比,通常情况下压缩比大约为数据库占用空间的十分之一。
●访问效率Cognos提供的智能缓存可以支持从小数据量到大数据量应用环境中的秒级访问。
●实现成本由于全图形化设计,不需编码,因此能够适应快速部署,快速实现的要求,实施周期和维护成本低。
考察角度MOLAP ROLAP友好性界面简洁,从简单到复杂模型都是直接使用鼠标拖拽,进行模型设计,不需要编写程序。
大数据分析技术在采集运维业务中的应用研究摘要:目前,我国对用电信息系统的建设和发展已经逐渐完善,累积接入的采集终端约有1500万台,智能电表的接入约5亿。
为了确保在用电信息采集系统中各项业务顺利展开,就需要加强对采集系统的运行维护工作,这也是采集系统未来主要研究和注意的问题。
从当前情况来看,在采集运维业务中还存在着诸多问题,如运维效率较低,缺乏故障优先处理级,故障种类多样、复杂,难以对故障进行准确的定位等,因此本文就首先对用电信息采集系统的运维业务中所存在的问题加以分析,并进一步提出在采集运维业务中大数据分析技术的应用。
关键词:大数据分析;技术;采集运维;业务;应用;分析引言:用电信息采集系统建设已经接近尾声,目前累计接入智能电能表4.2亿只、采集终端1 263.84万台,覆盖用户3.86亿户,因此,如何保证采集系统中各项业务的顺利开展,将是今后要解决的主要问题。
采集运维业务中主要存在如下问题。
缺乏故障处理优先级,运维效率低下。
各省电力公司平均每天产生10 000条异常工单,远远超过目前配备运维人员的工作能力。
大部分公司没有制定合理的消缺机制,无法依据故障的紧急程度和重要等级开展运维业务。
故障种类复杂多样,故障分析定位困难。
用电信息采集系统涉及的运维对象有:智能电能表、采集终端、采集主站、本地通信信道和远程通信信道。
目前统计的异常现象共七大类59种,故障原因98种。
故障分析定位非常困难,普通的运维人员通常不具备定位故障原因并确定消缺方案的技术能力。
1.用电信息采集系统运维业务存在的问题1.1用电采集系统运维效率低随着社会经济发展水平的提升,在人们日常生活和工业生产中对电力需求量在逐渐增加,电力行业也得到了快速发展,但根据调查统计发现,电力公司每日产生的异常工单总计约有1万条,工作强度远远超出运维工作人员的工作能力,且大部分企业都没有建立消缺机制,在故障处理和运维业务开展中难以根据业务的紧急程度开展相应等级的工作,从而导致采集系统的运维效率低下。
大数据分析的分布式技术22大数据分析的分布式技术22分布式技术是将计算和存储任务分解并分配到多台计算机上进行并行处理的一种技术。
它具有高可靠性、高性能和可扩展性的特点,可以有效地应对大数据分析任务中的计算和存储需求。
下面介绍几种常见的大数据分析的分布式技术:1.分布式文件系统:分布式文件系统是一种分布式存储技术,它将大文件分成多个块,并将这些块分别存储在不同的计算机上,可以提供高速、高容量的数据存储。
分布式文件系统可以通过数据复制和冗余来提高数据的安全性和可靠性。
2. 分布式计算框架:分布式计算框架是一种将计算任务分解成多个子任务,并将这些子任务分配给多个计算节点并行处理的技术。
常见的分布式计算框架有Hadoop和Spark。
Hadoop通过MapReduce编程模型实现分布式计算,而Spark则提供了更高级的抽象和更快的运行速度。
3.分布式数据库:分布式数据库是一种将数据分布存储在多个计算机上,并支持并行查询和事务的数据库系统。
分布式数据库可以提供高性能的数据读写能力,并具有高可靠性和可扩展性。
4.分布式数据处理:分布式数据处理是一种将数据划分成多个分区,并将这些分区分配给多个计算节点并行处理的技术。
分布式数据处理可以通过并行计算来加快数据处理速度,并可以进行一些高级的数据操作,如排序、聚合和连接等。
总结起来,大数据分析的分布式技术主要包括分布式文件系统、分布式计算框架、分布式数据库和分布式数据处理等。
这些技术可以提供高性能、可靠性和可扩展性的数据处理能力,能够满足大数据分析任务中对计算和存储的需求。
随着大数据分析的不断发展,分布式技术也将继续创新和完善,为大数据分析带来更多的可能性。
大数据分析的分布式MOLAP技术要点
刘磊
【期刊名称】《电脑知识与技术》
【年(卷),期】2018(014)001
【摘要】实际工作中需要使用大数据技术,但是由于其带有规模效应,不利于数据分析、数据管理、数据存储等工作.为了确保工作质量,相关技术人员通过研究和试验,发现使用分布式文件系统优势明显,应用MapReduce编程模型可以解决上述问题.具体而言,使用MOLAP技术之后,利用多维模型进行维度的映射,同时使用线性化算法将测量到的维度等数据存储到分布式文件中.该文对在大数据背景下分布式MOLAP技术要点进行分析,希望给有关人士一些借鉴.
【总页数】2页(P9-10)
【作者】刘磊
【作者单位】四川商务职业学院信息技术系,四川成都611131
【正文语种】中文
【中图分类】TP3
【相关文献】
1.大数据分析的分布式MOLAP技术 [J], 姜博;
2.大数据分析的分布式MOLAP技术 [J], 姜博
3.大数据分析的分布式MOLAP技术 [J], 熊宁
4.基于大数据分析的分布式MOLAP技术研究 [J], 姜技
5.大数据分析视域下分布式MOLAP技术运用 [J], 李正伟
因版权原因,仅展示原文概要,查看原文内容请购买。
基于大数据分析的分布式MOLAP技术研究随着信息技术的发展和应用范围的扩大,大数据已经成为当今最热门的话题之一。
大数据的处理涉及到一系列的技术手段,在这些技术手段中,分布式MOLAP是一种非常有希望的处理大数据的技术。
分布式MOLAP是一种多维数据分析技术,它可以从多个维度对数据进行分析和挖掘。
与传统的OLAP技术相比,分布式MOLAP采用了分布式部署方式,能够更好地处理大规模的数据,并且提供了更高的性能和可扩展性。
此外,分布式MOLAP还可以自动地根据数据的特征进行数据分组,并提供更高效的数据压缩方式,从而大大降低了数据存储和传输的成本。
在实际应用中,分布式MOLAP的技术架构通常包括数据分片、数据仓库、查询处理、数据传输和数据可视化等组成部分。
其中,数据分片是指将数据按照特定的规则进行分割,使得每个节点上的数据量尽量均衡;数据仓库是将多维数据通过一定的规则进行聚合,从而为用户提供更加灵活的查询手段;查询处理是指根据用户的查询请求,对分布式数据进行处理和查询,并返回查询结果;数据传输是指将查询结果从服务器传输到客户端的过程;数据可视化是将查询结果以图表等形式直观地展示给用户。
分布式MOLAP技术的优势在于能够处理大规模的数据,并且具有高性能和可扩展性。
在实际应用中,分布式MOLAP技术可以应用于各个领域,例如金融、医疗、电子商务等。
在金融领域,分布式MOLAP技术可以帮助银行和证券公司对海量的金融数据进行分析和预测,从而更好地进行投资和管理;在医疗领域,分布式MOLAP技术可以帮助医院对病人的病历数据进行分析和挖掘,从而更好地进行疾病诊断和治疗;在电子商务领域,分布式MOLAP技术可以帮助电商公司对用户行为数据进行分析和挖掘,从而更好地了解用户需求和进行精准推荐。
软件学报ISSN 1000-9825, CODEN RUXUEW E-mail: jos@Journal of Software,2014,25(4):731−752 [doi: 10.13328/ki.jos.004569] +86-10-62562563 ©中国科学院软件研究所版权所有. Tel/Fax:∗大数据分析的分布式MOLAP技术宋杰1, 郭朝鹏1, 王智1, 张一川1, 于戈2, Jean-Marc PIERSON31(东北大学软件学院,辽宁沈阳 110819)2(东北大学信息科学与工程学院,辽宁沈阳 110819)3(Laboratoire IRIT, Université Paul Sabatier, Toulouse F-31062, France)通讯作者: 宋杰, E-mail: songjie@, /songjie/摘要: 大数据的规模效应给数据存储、管理以及数据分析带来了极大的挑战,学界和业界广泛采用分布式文件系统和MapReduce编程模型来应对这一挑战.提出了大数据环境中一种基于Hadoop分布式文件系统(HDFS)和MapReduce编程模型的分布式MOLAP技术,称为DOLAP(distributed OLAP).DOLAP采用一种特殊的多维模型完成维和度量的映射;采用维编码和遍历算法实现维层次上的上卷下钻操作;采用数据分块和线性化算法将维和度量保存在分布式文件系统中;采用数据块选择算法优化OLAP的性能;采用MapReduce编程模型实现OLAP操作.描述了DOLAP在科学数据分析的应用案例,并与主流的非关系数据库系统进行性能对比.实验结果表明,尽管数据装载性能略显不足,但DOLAP的性能要优于基于HBase,Hive,HadoopDB,OLAP4Cloud等主流非关系数据库系统实现的OLAP性能.关键词: 大数据;多维数据模型;OLAP;MapReduce中图法分类号: TP311文献标识码: A中文引用格式: 宋杰,郭朝鹏,王智,张一川,于戈,Pierson JM.大数据分析的分布式MOLAP技术.软件学报,2014,25(4):731−752./1000-9825/4569.htm英文引用格式: Song J, Guo CP, Wang Z, Zhang YC, Yu G, Pierson JM. Distributed MOLAP technique for big data analysis.Ruan Jian Xue Bao/Journal of Software, 2014,25(4):731−752 (in Chinese)./1000-9825/4569.htmDistributed MOLAP Technique for Big Data AnalysisSONG Jie1, GUO Chao-Peng1, WANG Zhi1, ZHANG Yi-Chuan1, YU Ge2, Jean-Marc PIERSON31(Software College, Northeastern University, Shenyang 110819, China)2(School of Information and Engineering, Northeastern University, Shenyang 110819, China)3(Laboratoire IRIT, Université Paul Sabatier, Toulouse F-31062, France)Corresponding author: SONG Jie, E-mail: songjie@, /songjie/Abstract: To address the new challenges that big data has brought on data storage, management and analysis, distributed file systemsand MapReduce programming model have been widely adopted in both industry and academia. This paper proposes a distributed MOLAPtechnique, named DOLAP (distributed OLAP), based on Hadoop distributed file system (HDFS) and MapReduce program model. DOLAPadopts the specified multidimensional model to map the dimensions and the measures. It comprises the dimension coding and traversealgorithm to achieve the roll up operation on dimension hierarchy, the partition and linearization algorithm to store dimensions andmeasures, the chunk selection strategy to optimize OLAP performance, and MapReduce to execute OLAP. In addition, the paper describesthe application case of the scientific data analysis and compares DOLAP performance with other dominate non-relational data∗基金项目: 国家自然科学基金(61202088); 中央高校基本科研业务费专项资金(N120817001); 中国博士后科学基金面上项目(2013M540232); 教育部博士点基金(20120042110028); 教育部-英特尔信息技术专项科研基金(MOE-INTEL-2012-06)收稿时间:2013-10-15; 修改时间: 2013-12-18; 定稿时间: 2014-01-27732 Journal of Software软件学报 V ol.25, No.4, April 2014management systems. Experimental results show that huge dominance in OLAP performance of the DOLAP technique over an acceptable performance lose in data loading.Key words: big data; multi-dimensional data model; OLAP; MapReduce近年来,随着大数据时代的到来以及互联网、传感器和科学数据分析等领域的快速发展,数据量近乎每年在成倍地增长[1].无论是在科学领域(生物学、地理学、天文学、气象学等),还是在工程领域(网络数据分析、市场数据分析等),都面临着数据雪崩的问题[2],大数据的规模效应给数据存储、管理以及数据分析带来了极大的挑战[3,4].OLAP(on-line analytical processing)联机分析处理是共享多维信息的、针对特定问题的联机数据访问和分析的快速软件技术[5],OLAP按照其实现方式不同,可以分为3种类型,分别是ROLAP,MOLAP和HOLAP[6].其中,ROLAP采用关系表存储维信息和事实数据;MOLAP则采用多维数据结构存储维信息和事实数据;而HOLAP称其为混合OLAP,该方法结合了ROLAP和MOLAP技术[7].无论是何种OLAP,都需要存储和计算平台的支持,尤其是在大数据环境下.为了解决大数据所带来的诸多挑战,学界和业界涌现出许多新技术,如分布式文件系统[8]、NoSQL数据库系统[9]、MapReduce编程模型[10]以及相关的优化方法,这些技术都被广泛地运用到大数据分析中.MapReduce 编程模型是广为人知的可扩展、灵活且高效的分布式编程框架.Hadoop是MapReduce的开源实现,可对海量数据进行可靠、高效、可扩展的并行处理.基于Hadoop[11]的实现,涌现出大量的分布式数据管理系统,并广泛地运用在大数据管理和分析领域,如Hive[12],HBase[13],HadoopDB[14]等.一方面,尽管这些数据管理系统均可支持OALP,但其性能往往不尽如人意.例如,基于HBase的OLAP引擎OLAP4cloud[15]框架属于一种基于云计算技术的OLAP实现,它采用列存储数据存储结构以及索引等技术优化OLAP的性能.但是,OLAP4cloud并不提供维信息的管理,也无法直接支持上卷下钻操作,因此,OLAP4cloud仅限于支持对度量数据的查询和简单的聚集操作.另一方面,这些数据库系统均未针对OLAP进行特殊的优化,我们之前的研究[16]表明,连接操作在ROLAP中是非常频繁且相当耗时的操作,当数据量或维数量增加时,连接操作会成为OLAP的瓶颈.MOLAP可以避免数据集的连接操作,因此在性能方面有着天生的优势,但MOLAP需要集中式存储多维数据模型,且耗费大量空间,如何基于分布式文件系统和MapReduce模型实现MOLAP模型则是一个难题.据我们所知,在大数据分析领域,尚未有关于分布式MOLAP技术的权威报道,也鲜有成熟的基于MapReduce的MOLAP系统,该问题亟待解决.本文研究大数据环境下基于MapReduce的分布式MOLAP技术,称为DOLAP(distributed OLAP).DOLAP 采用一种特殊的多维模型完成维和度量的映射;采用维编码和遍历算法实现维层次上的上卷下钻操作;采用数据分块和线性化算法将维和度量保存在分布式文件系统中;采用数据块选择算法优化OLAP的性能;采用MapReduce编程模型实现OLAP操作.在DOLAP技术的基础上,我们基于Hadoop实现了一个OLAP系统HaoLap (hadoop OLAP),设计了一系列测试用例,将HaoLap与Hive,HadoopDB,HBase和oalp4cloud等进行性能测试和比较.实验结果表明,HaoLap的数据装载性能不具优势,但其OLAP性能优势明显,且性能与原始数据集规模以及查询复杂程度无关,尤其适合高维数据立方的OLAP操作.HaoLap仅依赖分布式文件系统存储数据,不引入额外的存储代价,数据立方通过计算获得,对于立方的每个维,仅存储维级别名称和每个维级别中维值的个数,不同于传统MOLAP系统耗费大量空间存储数据立方.由于篇幅原因,本文略去了HaoLap系统的实现细节.本文第1节介绍相关工作.第2节介绍维编码及事实存储,其中包括简化的多维数据模型的定义、维编码和维遍历算法、数据立方分块、存储以及寻址算法等,并给出数据立方建模和存储的应用案例OceanCube.第3节重点介绍基于MapReduce的OLAP算法.第4节首先采用真实的科学数据集OceanCube,通过3组实验分别测试和比较DOLAP在数值型数据上的数据装载、切块操作、上卷操作和存储代价,随后采用SSB基准测试比较DOLAP在枚举型数据上的OLAP性能,并总结实验结论.第5节总结全文并提出进一步工作.1 相关工作目前已有很多关于大数据或云计算环境下的OLAP优化方法研究,本节主要从以下两个方面介绍相关工宋杰等:大数据分析的分布式MOLAP技术733作:大数据环境中的OLAP优化技术和分布式的OLAP系统.大数据环境中,常用的OLAP优化方法有以下两种:利用预计算和浓缩数据立方的结果优化OLAP性能[17]和通过优化存储结构和算法来优化OLAP性能,其中,后者与本文最为相关.文献[18]提出了OLAP查询中的SPAJG-OLAP子集,在存储、查询、数据分布、网络传输和分布式缓存等方面研究海量数据大规模并行处理框架的优化策略和实现技术,实验证明,效果良好.该研究基于并行数据库技术优化ROLAP性能,通过对OLAP查询以及存储的优化达到加速OLAP的目的.文献[19]指出:在Web应用中,需要同时提供对海量数据的事务操作和决策分析,并介绍一种能够同时有效支持OLTP和OLAP 的数据存储系统.通过建立索引、数据分块、预计算等方式,有效地提高了OLAP的性能.本文同样是通过优化查询以及数据存储来提高OLAP的执行效率,但不同的是,本文研究的优化方案基于MapReduce.同时,针对MapReduce连接操作的低效性,本文研究提出了DOLAP技术,大大提高了OLAP的执行效率.文献[20]指出,传统的OLAP分析无法很好地适用于大数据分析.该文根据短消息数据的特点,设计了一种基于Hadoop的有效存储格式,并使用MapReduce实现了OLAP操作,更好地适应了SMS(short message service)业务中对短消息进行数据分析的需求.该文利用了特殊的数据结构来优化OLAP操作的性能,但该研究的适用面较窄.文献[21]基于MapReduce,通过数据的筛选策略减少了数据在网络中不必要的传输,从而优化了复杂云环境中的OLAP性能.该研究重点关注云环境的复杂性以及网络延迟等因素对OLAP性能的影响,是大数据环境下ROLAP的一种优化策略,其优化方法与本文研究存在本质区别.就分布式的OLAP系统而言,一些基于Hadoop的数据库系统,例如Hive,HadoopDB,HBase,MongoDB, OLAP4cloud等都支持OLAP分析.Hive是一个基于Hadoop的数据仓库系统,为数据分析人员提供了类SQL接口,支持大数据分析.HadoopDB将MapReduce和关系数据库技术结合起来,以管理和分析大数据;HBase则是面向列存储的开源数据库系统.这些数据库将海量数据存储在分布式文件系统中,通过MapReduce完成上卷下钻等操作,属于分布式的ROLAP技术,其中,维表和事实表的连接运算是一个性能瓶颈.OLAP4cloud是基于HBase 的OLAP引擎,它将维表直接压缩到事实表中,并提供一种特殊的索引来加快寻址,采用数据立方预计算方法,属于一种近似MOLAP实现.与分布式的MOLAP技术最为相关的是文献[22],该文尝试使用多维数组存储海量数据,并将建立的存储模型运用到了基于Hadoop的数据分析工具Pig[23]中,且通过实验证明了该存储模型在占用大量存储的同时提高了OLAP分析性能.为减少存储开销,本文使用多维数组存储维信息而非事实数据;除此之外,本文还提出了维相关的遍历算法以及数据筛选算法.综上所述,尽管学界注意到大数据对OLAP分析提出的挑战,且已有部分研究分别从模型、存储、算法和预计算角度对传统OLAP进行了优化,但尚未有权威的大数据环境下分布式的MOLAP技术的研究报告.与此同时,Hadoop也逐渐成为开源领域大数据分析的主流技术,但是基于Hadoop的分布式的MOLAP系统研究仍然尚未成熟.2 维编码及事实存储2.1 数据模型OLAP采用的多维数据模型包括维和事实两部分,其关键操作是找到维和事实的映射关系.ROLAP采用关系数据库以及星形模式或雪花模式,将维信息和事实数据分别存储于关系数据库表中,并使用外键完成维信息和事实数据的映射.但是ROLAP涉及到大量的连接操作,性能较低.MOLAP采用多维数组存储维和事实,通过对维进行编码和对事实数据直接寻址的方式获得其映射关系,从而避免了连接操作的开销.但MOLAP需要以一种集中的方式维护维和事实的映射,由于一个维可以包含多个层次,每个层次可以包含若干个级别,维和事实又是一对多的关系,所以维模型具有复杂性.为了避免额外的存储和维护代价,DOLAP首先对维进行了简化,以适应分布式环境,同时降低OLAP算法的复杂程度.本节重新定义维和事实数据,同时也定义了其他相关术语.定义1(维(dimension)). 在多维数据模型中,维将所有的数据项分类至一个无重叠的数据结构中,并且提供数据项的筛选、组织和标识方法.本文研究对维的定义进行了简化,简化后的维基于多维模型的维定义,并遵循以下3个约束:设d为维,则,1) d 有且仅有1个维层次; 2) d 是m 个维级别所组成的集合,记为{l 1,l 2,...,l m }.设l i (i ∈[1,m ])为任意一个维级别,则l i 仅包含1个维属性,且包含n i 个维值; 3) 将d 视作由各级别的维属性取值所组成的树形结构(维值树),则同一级别的兄弟节点包含有相同数目的子节点. 基于上述假设,维d 由以下两部分组成: 1) 维模式(dimension schema)包含:① m 个维级别的有限集L (d ),且这些维级别仅包含一个概念层次(concept hierarchy);② 在集合L (d )上存在一个全序关系 d ,上卷(roll-up)操作是指沿着概念层次向上攀升.如果有关系l j d l i (i ,j ∈[1,m ],i j )成立,那么认为l j 可以上卷到l i ; 2) 维实例(dimension instance)包含:① 函数m d 可以获得维级别的维属性取值集合,对于l i 而言,仅包含 1个维属性,该维属性包含n i 个取值,|m d (l i )|=n i ;② 上卷函数()(),j i l l d d j d i m l m l ρ→=→对每个关系l j d l i : v j ∈m d (l j ), v i ∈m d (l i )满足(),j i l l j i d v v ρ→=且 v i ∈m d (l i ), v j ∈m d (l j )满足();j i l l j i d v v ρ→=③ ,i i x y v v ∈ (),d i m l 111111|{|()}||{|()}|.i i i i l l l l i i i i i i x d x x y d y y v v v v v v ρρ++→→++++=== 为简便起见,如果不加说明,本文中“维”均指符合定义1的维. 定义2(度量(measure )). 度量u 是一个独立变量,它们参照每个维的某一维值,并作为OLAP 的分析对象.度量的粒度是度量参照的维值所在的维级别,最细粒度的度量参照每一维d 中的最低维级别的某一维值.设u 参照维集合D ={d 1,d 2,…,d n }, d ∈D ,即集合D 可以确定度量u ,记作D →u ,则满足:D →u ⇔ !v ∈m d (d m l )∧v →u (d 有 m 个维级别),其中,v →u 是指维值v 可以确定度量u . 定义3(单元格(cell )). 在逻辑视图中,单元格是由若干不同的度量组成的原子单元,这些度量都参照相同的维值.对于维集合D 而言,单元格可以表示为度量的集合,记作{u |D →u }. 定义4(数据立方(cube )). 根据定义1~定义3,数据立方是OLAP 中的多维数据结构,简称立方.数据立方的维符合定义1,且由若干单元格组成.定义5(块(chunk )). 块是数据立方的逻辑划分,一个数据立方可以根据维的取值分成多个块. 图1是由3个维(x ,y ,z )所组成的立方,图中较小的方格代表单元格,较大的方格代表块.在实际操作中,块中有可能包含一些空的单元格,即,该单元格中没有任何度量.在实际应用中,为了减少立方占用物理空间的大小,若单元格内没有任何度量,则在该块文件中不保存该单元格的记录.Fig.1 Example of data cube 图1 数据立方示例2.2 维算法 在OLAP 操作中,对维的操作是非常频繁的.维的编码和遍历算法是MOLAP 的关键技术,本节将对DOLAP 技术中维的编码和遍历算法进行阐述.2.2.1 维编码算法 维编码方法主要包括二进制编码和十进制编码.二进制编码也称作位图编码,通过编码的拼接可以包含维的级别信息,通过编码的移位实现维的遍历,但是二进制编码会造成很大程度上的稀疏[24];十进制编码是对每个维级别的维值依次使用十进制数编码,但是无法直接获得编码和维值的映射.在大数据环境中,为了避免稀疏, DOLAP 采用十进制的编码方法,同时提出了维的遍历算法来计算编码和维值间的映射关系.设l 是维d 中的某个维级别,对 x ∈[1,|m d (l )|],v x ∈m d (l ),v x 的编码为code (v x ),则code (v x )=x −1.该编码方法如算法1所示. 算法1. 维编码算法. Input : Dimension d : A target dimension; Function : DimensionCoding . 1. FOR i =1 TO |L (d )|; 2. FOR j =0 TO |m d (l i )|−1;3. Dimension value of i j v ∈m d (l i )4. .;i j v code j =5. END FOR6. END FOR 在实际应用环境,绝大部分维是数值型的,例如高度、经度、价格、流水号等.数值型的维可以按照其值域进行划分,不同的划分步长可以确定不同的维级别,因此,数值型的维可以很容易地满足定义1的约束条件.但是还存在一部分非数值型的枚举型的维,例如日期、城市、部门等.为使枚举型维符合定义1,可以使用一些空值填补维值树,使同一级别的兄弟节点包含有相同数目的子节点.图2展示了日期维的编码结果.在“月”级别上,每个月的天数是不同的,为了满足定义1,设每个月有31天,所以在图2中的2月插入了“29日”、“30日”和“31日”这3个空值. Fig.2 Example of date dimension coding 图2 日期维编码示例 对于实际应用中更为复杂的维,采取化简、划分维层次的方法使其形成维值树,使用空值填补维值树的方法使其满足定义1的约束条件.例如,针对TCP-H [25]数据集中的维模式,处理方法如下:① 通过取舍和合并的方法,化简TCP-H 的雪花模式为星型模式,其结果为SSB [26]数据集中的维模式;② 针对SUPPLIER 维表,使用区域属性(Nation ,Region ,City )作为划分维层次的依据,得到维层次Nation -Region -City ;③ 在维Nation -Region -City 的维值树中添加空值,使其满足定义1的约束.2.2.2 维遍历算法DOLAP 的维可以看作是一棵特殊的单根树,记作T d ,其中,ALL 是T d 的根节点,记为第0级别.每个维级别中的维值可以看作维值树中的节点,同时,每一个兄弟节点都有相同数目的子节点,如图2所示.OLAP 操作中涉及到大量对维值树T d 的遍历操作.例如,沿着T d 攀升(即上卷)或沿着T d 下降(即下钻).设有关系 i ∈[1,m −1],l i +1 d l i , v i ∈m d (l i ),v i +1∈m d (l i +1),那么v i 和v i +1之间的上卷关系11()i i l l i i d v v ρ+→+=是OLAP 中的关键操作.编码机制将能够表 征这种上卷关系,我们可以通过编码运算实现T d 中的上卷操作.本节首先引入维级别规模的概念,并通过对节点 v i 和v i +1的编码的运算获得关系11()i i l l i i d v v ρ+→+=.至于从v i 到v i +1的下钻操作,可以等同地视作从v i +1至v i 的上卷 操作,此处不再赘述. 定义6(维级别规模(dimension level size )). 设d 是一个维,由m 个维级别组成,第i 个维级别记作l i (i ∈[1, m −1]),维级别规模记作|l i |,则|l i +1|=|{v i+1| v i ∈m d (l i ),11()i i l l i i d v v ρ+→+=}|,其中,{v i +1| v i ∈m d (l i ),11()i i l l i i d v v ρ+→+=}是指维级别中符合条件的维属性取值的集合,|{v i +1| v i ∈m d (l i ),11()i i l l i i d v v ρ+→+=}|是指该集合的大小. 根据定义6,维级别规模是指在维值树中上层维级别中任意节点子节点的个数. 设〈v 1,v 2,…,v i ,v i +1,…,v m 〉是T d 中自上而下的一条分析路径,v i 在其兄弟节点间的位置记为order (v i )(兄弟节点拥有共同的父节点,且其位置计数从0开始,从左至右),则编码与位置的关系可表述为公式(1).对于图2中的路径〈19901,22,23〉:code (23)=32,order (23)=1;code (22)=1,order (22)=1;code (19901)=0,order (19901)=0.code (v i )=(…((0+order (v 1)×|l 2|+order (v 2))×|l 3|+order (v 3))…)×|l i |+order (v i ) (1) 同理,当给出code (v i )时,order (v 1)到order (v i )的值可通过公式(2)计算得到:1111121111()()%||,||()%||,||...()%||i i i i i i i i i i i i i i temp code v temp order v temp l temp l temp order v temp l temp l order v temp l −−−−−−−=⎢⎥==⎢⎥⎣⎦⎢⎥==⎢⎣⎦= (2) 联合公式(1)和公式(2),对于给定的code (v i ),可以计算出其对应的所有父节点的编码,即code (v i −1)到code (v 1)的值,从而可以进行上卷操作.例如图2中,在“天”维级别中,已知code (23)=32,其路径为〈19901,22,23〉,根据公式(2),已知code (23)=32,|l 3|=31,|l 2|=12,|l 1|=50,则order (22)=1,order (19901)=0;再根据公式(1),可以计算得到code (22)=1, code (19901)=0. 2.3 数据立方分块 将数据立方划分为块的目的是在OLAP 过程中对数据进行筛选,从而优化OLAP 的性能.同时,块也可以作为数据立方的存储单元.本节首先定义维、数据立方以及块的规模和容量,而后讨论数据立方的分块策略. 定义7(维规模(dimension size )). 维规模是指最底层维级别的维值个数.设d 是一个维,包含m 个维级别,记 作l 1,l 2,...,l m .记|d |为维d 的规模,则1|||()|||m d m i i d m l l ===∏. 定义8(立方规模(cube size )和立方容量(cube capacity )). 立方规模是由组成立方的维的规模构成的元组,立方容量则是立方内包含的单元格的个数.设立方由n 维组成,其中第i 个维记作d i (i ∈[1,n ]).立方规模为|cube |= 〈|d 1|,|d 2|,…,|d n |〉,立方容量为1||||n n i i cube d ==∏.定义9(块规模(chunk size )和块容量(chunk capacity )). 块规模是一个由该块包含的每个维最底层维级别上维值的个数构成的元组,块容量是块包含的单元格的个数.设块由n 维组成,其中第i 个维记作d i (i ∈[1,n ]),且d i 被划分为p i 份.记块的规模为|chunk |,则|chunk |=〈λ1,λ2,…,λn 〉,其中,||i i i d p λ⎡⎤=⎢⎥⎢⎥,块容量为1||.n n i i chunk λ==∏ DOLAP 的性能与|chunk |n 的取值密切相关,|chunk |n 取值越小,并行性越好,实际参与运算的单元格数量越少,但此时调度代价变高.如何折中地确定|chunk |n 的取值,将变得十分关键.借鉴文献[27],本文提出了一种通过查询条件及其出现的概率来确定块容量的方法,但我们难以穷举所有查询条件及其出现概率,所以该方法采用随机抽样,抽取一些查询条件及其出现概率.除此之外,|chunk |n 的取值还应该考虑算法的运行环境.DOLAP 利用MapReduce 来实现,所以|chunk |n 的取值还需考虑MapReduce 的一些特性,例如文件寻址时间、数据处理时间等.表1列出了相关符号的定义,其中,λi 为变量,T 和N a 是计算结果,其他为已知常量. Table 1 Definition of notations 表1 相关符号定义 符号 含义描述 T 一个OLAP 操作消耗的平均时间n 多维数组维的个数 λi 维d i 上块规模 N a 平均一个查询命中的块个数 v Map 任务的处理速度(个/秒) t 0 文件寻址时间 t 1 Map 任务消耗的额外时间 q 所有可能的查询条件个数 a ij 查询条件j 在维d i 上的取值个数ξj 查询条件j 出现的概率 平均一个查询命中的块个数N a 可以通过每个查询条件出现的概率得到,如公式(3)所示:11q n ij a j j i i a N ξλ==⎛⎞⎡⎤=⎜⎟⎢⎥⎜⎟⎢⎥⎝⎠∑∏ (3) 考虑MapReduce 相关的一些影响因素之后,可以得到一个OLAP 操作消耗的平均时间,如公式(4)所示: 10111n i q n ij i j j i i a T t t v λξλ===⎛⎞⎜⎟⎡⎤⎛⎞⎡⎤⎜⎟=++⎢⎥⎜⎟⎢⎥⎜⎟⎜⎟⎢⎥⎢⎥⎝⎠⎣⎦⎜⎟⎝⎠∏∑∏ (4) 通过公式(4),可以计算出T 取最小值时的λi ,也就得到了块规模.每个维上的块规模均可通过上述方法计算得到,从而可以得到块容量的最佳值.由公式(4)可以看出,‘ ’操作会导致块容量之和大于立方容量,所以块中会存在空的单元格. 2.4 数据存储 传统MOLAP 数据立方的存储代价很大,尤其是在高维数据立方或每个维包含大量维值的情况下.事实上,传统MOLAP 依赖访问内存中的多维数组来加快OLAP 操作,这种方式在大数据环境中显然难以实现.DOLAP 的“多维数组”是通过计算得到,无需存储,因此数据立方的存储代价非常小.DOLAP 对维进行简化,可以保证在同一级别上维的编码是连续的十进制数,同时,每一个兄弟节点都有相同个数的子节点,所以维信息仅需存储每个维级别规模,极大地降低了维的存储代价.设维d 由m 个维级别组成,记作{l i |i ∈[1,m ]},则d 的物理存储可以表示为该维级别和维级别规模的序偶所组成的集合{〈l i ,|l i |〉|i ∈[1,m ]},其中,l i 表示该维级别的名称.DOLAP 实现系统可以使用XML 文件存储维信息,并保存于集群主节点. 逻辑上,“立方和其单元格”或是“立方和其块”的数据结构均可以类比为“多维数组和其元素”的数据结构.物理上,块是立方的存储单元,将块内的单元格线性化(linearization)后,块可以作为独立的文件进行存储.为了便于寻址,块和单元格都需要支持线性化和反线性化(reverse-linearization)运算,且该运算与多维数组的线性化和反线性化运算是一致的.设存在一个n 维数组,其维规模记作〈A 1,A 2,…,A n 〉,多维数组中的元素X 在多维空间中的738 Journal of Software 软件学报 V ol.25, No.4, April 2014 坐标记作(X 1,X 2,…,X n ),其线性化后的坐标记作index (X ),则其线性化方法如公式(5)所示,反线性化方法如公式(6)所示: index (X )=(…((X n ×A n −1+X n −1)×A n −2+…+X 3)×A 2+X 2)×A 1+X 1 (5)1111121222232%,%,...%n n n temp index temp X temp A temp A temp X temp A temp A X temp A =⎢⎥==⎢⎥⎣⎦⎢⎥==⎢⎥⎣⎦= (6) 对于单元格而言,构成该立方的维记作d 1,d 2,...,d n .设x 是立方中的一个单元格,x 在维d i 上对应的维值为v i , code (v i )=x i ,则x 的坐标为(x 1,x 2,…,x n ),公式(5)将(X 1,X 2,…,X n )替换为(x 1,x 2,…,x n ),〈A 1,A 2,…,A n 〉替换为〈|d 1|, |d 2|,…,|d n |〉,公式(6)亦然,可得单元格的线性化和反线性化算法.在存储实现中,单元格存储为Hadoop HDFS [28]中MapFile [29]文件的一条记录,该记录包括该单元格线性化后的坐标及其包含的度量. 对于块而言,设y 是一个块,它是立方的一个划分,|y |=〈λ1,λ2,…,λn 〉,y 的坐标为(y 1,y 2,…,y n ),y 内任意一个单元 格的坐标为(x 1,x 2,…,x n ),则i i i x y λ⎢⎥=⎢⎣⎦,公式(5)中,将(X 1,X 2,…,X n )替换为(y 1,y 2,…,y n ),〈A 1,A 2,…,A n 〉替换为〈λ1,λ2,…, λn 〉,公式(6)亦然,可得单元格的线性化和反线性化算法.在存储实现中,一个块存储为Hadoop HDFS 中一个MapFile 文件,线性化后的块坐标作为块文件的文件名,以便进行块文件的寻址;块文件内每一条记录存储了该块内的一个单元格,块文件则存储于分布式文件系统Hadoop HDFS 中.在块文件中按Key -Values 对的形式存储所有的单元格数据,其中,Values 对应事实数据,Key 则是单元格(cell)坐标按公式(5)线性化后的索引值.该索引值是一个十进制正整数,在大数据环境中,数据立方规模会非常大,以Java 语言为例,索引值会超出长整型(long)的最大取值范围264,因此,我们采用字符串表示的数字数据.此外,若采用Key -Values 方式存储,Key 的存储开销可能会比对应的Values 存储开销大很多,这样就浪费了大量存储.因此对于一个块文件,仅记录一个最小的单元格索引值,而Key 存储的则是相对于该值的偏移量. 2.5 应用案例 本节描述一个DOLAP 的真实应用案例OceanCube.案例的数据模式来源于海洋科学中通过CTD [30]收集的海水温度数据,数据集来源于真实的国家海洋数据[30],该数据集中的数据项均为连续型数值数据.OceanCube 数据集描述如下:3个维分别为时间维、区域维和深度维,对应Time ,Area 和Depth .Time 共有5个级别:Year,Season, Month,Day,Slot.其中,Slot 是指一天的3个时间段,其维值分别是“上午”、“下午”和“晚上”.Area 共有7个维级别:1°,1/2°,1/4°,1/8°,1/16°,1/32°和1/64°.其中,1°是指由1°经度和1°纬度所组成的方形区域,地球表面可以划分为360×180个1°方区.Depth 共有3个维级别:100m,50m,10m,其中,100m 指的是“海洋的深度以100m 的间隔进行划分”,若海水有1 000m 深,则可以划分为10层,对应10个维值.见表2. Table 2 表2 各个维规模 数据立方规模和容量 最优的块规模及块容量 (1) |Time |=11160 (2) |Area |=320 (3) |Depth |=100 (1) |OceanCube |=〈11160,320,100〉(2) |OceanCube |n =357120000 (1) |OceanChunk |=〈72,64,50〉 (2) |OceanChunk |n =230400 我们设每个月有31天,初始化数据立方为OceanCube,其中包括10年、5°、1 000m 深度的海洋温度数据,维信息如下所示: (1) Time ={〈Year,10〉,〈Season,4〉,〈Month,3〉,〈Day,31〉,〈Slot,3〉};。
软件学报ISSN 1000-9825, CODEN RUXUEW E-mail: jos@Journal of Software,2014,25(4):731−752 [doi: 10.13328/ki.jos.004569] +86-10-62562563 ©中国科学院软件研究所版权所有. Tel/Fax:∗大数据分析的分布式MOLAP技术宋杰1, 郭朝鹏1, 王智1, 张一川1, 于戈2, Jean-Marc PIERSON31(东北大学软件学院,辽宁沈阳 110819)2(东北大学信息科学与工程学院,辽宁沈阳 110819)3(Laboratoire IRIT, Université Paul Sabatier, Toulouse F-31062, France)通讯作者: 宋杰, E-mail: songjie@, /songjie/摘要: 大数据的规模效应给数据存储、管理以及数据分析带来了极大的挑战,学界和业界广泛采用分布式文件系统和MapReduce编程模型来应对这一挑战.提出了大数据环境中一种基于Hadoop分布式文件系统(HDFS)和MapReduce编程模型的分布式MOLAP技术,称为DOLAP(distributed OLAP).DOLAP采用一种特殊的多维模型完成维和度量的映射;采用维编码和遍历算法实现维层次上的上卷下钻操作;采用数据分块和线性化算法将维和度量保存在分布式文件系统中;采用数据块选择算法优化OLAP的性能;采用MapReduce编程模型实现OLAP操作.描述了DOLAP在科学数据分析的应用案例,并与主流的非关系数据库系统进行性能对比.实验结果表明,尽管数据装载性能略显不足,但DOLAP的性能要优于基于HBase,Hive,HadoopDB,OLAP4Cloud等主流非关系数据库系统实现的OLAP性能.关键词: 大数据;多维数据模型;OLAP;MapReduce中图法分类号: TP311文献标识码: A中文引用格式: 宋杰,郭朝鹏,王智,张一川,于戈,Pierson JM.大数据分析的分布式MOLAP技术.软件学报,2014,25(4):731−752./1000-9825/4569.htm英文引用格式: Song J, Guo CP, Wang Z, Zhang YC, Yu G, Pierson JM. Distributed MOLAP technique for big data analysis.Ruan Jian Xue Bao/Journal of Software, 2014,25(4):731−752 (in Chinese)./1000-9825/4569.htmDistributed MOLAP Technique for Big Data AnalysisSONG Jie1, GUO Chao-Peng1, WANG Zhi1, ZHANG Yi-Chuan1, YU Ge2, Jean-Marc PIERSON31(Software College, Northeastern University, Shenyang 110819, China)2(School of Information and Engineering, Northeastern University, Shenyang 110819, China)3(Laboratoire IRIT, Université Paul Sabatier, Toulouse F-31062, France)Corresponding author: SONG Jie, E-mail: songjie@, /songjie/Abstract: To address the new challenges that big data has brought on data storage, management and analysis, distributed file systemsand MapReduce programming model have been widely adopted in both industry and academia. This paper proposes a distributed MOLAPtechnique, named DOLAP (distributed OLAP), based on Hadoop distributed file system (HDFS) and MapReduce program model. DOLAPadopts the specified multidimensional model to map the dimensions and the measures. It comprises the dimension coding and traversealgorithm to achieve the roll up operation on dimension hierarchy, the partition and linearization algorithm to store dimensions andmeasures, the chunk selection strategy to optimize OLAP performance, and MapReduce to execute OLAP. In addition, the paper describesthe application case of the scientific data analysis and compares DOLAP performance with other dominate non-relational data∗基金项目: 国家自然科学基金(61202088); 中央高校基本科研业务费专项资金(N120817001); 中国博士后科学基金面上项目(2013M540232); 教育部博士点基金(20120042110028); 教育部-英特尔信息技术专项科研基金(MOE-INTEL-2012-06)收稿时间:2013-10-15; 修改时间: 2013-12-18; 定稿时间: 2014-01-27732 Journal of Software软件学报 V ol.25, No.4, April 2014management systems. Experimental results show that huge dominance in OLAP performance of the DOLAP technique over an acceptable performance lose in data loading.Key words: big data; multi-dimensional data model; OLAP; MapReduce近年来,随着大数据时代的到来以及互联网、传感器和科学数据分析等领域的快速发展,数据量近乎每年在成倍地增长[1].无论是在科学领域(生物学、地理学、天文学、气象学等),还是在工程领域(网络数据分析、市场数据分析等),都面临着数据雪崩的问题[2],大数据的规模效应给数据存储、管理以及数据分析带来了极大的挑战[3,4].OLAP(on-line analytical processing)联机分析处理是共享多维信息的、针对特定问题的联机数据访问和分析的快速软件技术[5],OLAP按照其实现方式不同,可以分为3种类型,分别是ROLAP,MOLAP和HOLAP[6].其中,ROLAP采用关系表存储维信息和事实数据;MOLAP则采用多维数据结构存储维信息和事实数据;而HOLAP称其为混合OLAP,该方法结合了ROLAP和MOLAP技术[7].无论是何种OLAP,都需要存储和计算平台的支持,尤其是在大数据环境下.为了解决大数据所带来的诸多挑战,学界和业界涌现出许多新技术,如分布式文件系统[8]、NoSQL数据库系统[9]、MapReduce编程模型[10]以及相关的优化方法,这些技术都被广泛地运用到大数据分析中.MapReduce 编程模型是广为人知的可扩展、灵活且高效的分布式编程框架.Hadoop是MapReduce的开源实现,可对海量数据进行可靠、高效、可扩展的并行处理.基于Hadoop[11]的实现,涌现出大量的分布式数据管理系统,并广泛地运用在大数据管理和分析领域,如Hive[12],HBase[13],HadoopDB[14]等.一方面,尽管这些数据管理系统均可支持OALP,但其性能往往不尽如人意.例如,基于HBase的OLAP引擎OLAP4cloud[15]框架属于一种基于云计算技术的OLAP实现,它采用列存储数据存储结构以及索引等技术优化OLAP的性能.但是,OLAP4cloud并不提供维信息的管理,也无法直接支持上卷下钻操作,因此,OLAP4cloud仅限于支持对度量数据的查询和简单的聚集操作.另一方面,这些数据库系统均未针对OLAP进行特殊的优化,我们之前的研究[16]表明,连接操作在ROLAP中是非常频繁且相当耗时的操作,当数据量或维数量增加时,连接操作会成为OLAP的瓶颈.MOLAP可以避免数据集的连接操作,因此在性能方面有着天生的优势,但MOLAP需要集中式存储多维数据模型,且耗费大量空间,如何基于分布式文件系统和MapReduce模型实现MOLAP模型则是一个难题.据我们所知,在大数据分析领域,尚未有关于分布式MOLAP技术的权威报道,也鲜有成熟的基于MapReduce的MOLAP系统,该问题亟待解决.本文研究大数据环境下基于MapReduce的分布式MOLAP技术,称为DOLAP(distributed OLAP).DOLAP 采用一种特殊的多维模型完成维和度量的映射;采用维编码和遍历算法实现维层次上的上卷下钻操作;采用数据分块和线性化算法将维和度量保存在分布式文件系统中;采用数据块选择算法优化OLAP的性能;采用MapReduce编程模型实现OLAP操作.在DOLAP技术的基础上,我们基于Hadoop实现了一个OLAP系统HaoLap (hadoop OLAP),设计了一系列测试用例,将HaoLap与Hive,HadoopDB,HBase和oalp4cloud等进行性能测试和比较.实验结果表明,HaoLap的数据装载性能不具优势,但其OLAP性能优势明显,且性能与原始数据集规模以及查询复杂程度无关,尤其适合高维数据立方的OLAP操作.HaoLap仅依赖分布式文件系统存储数据,不引入额外的存储代价,数据立方通过计算获得,对于立方的每个维,仅存储维级别名称和每个维级别中维值的个数,不同于传统MOLAP系统耗费大量空间存储数据立方.由于篇幅原因,本文略去了HaoLap系统的实现细节.本文第1节介绍相关工作.第2节介绍维编码及事实存储,其中包括简化的多维数据模型的定义、维编码和维遍历算法、数据立方分块、存储以及寻址算法等,并给出数据立方建模和存储的应用案例OceanCube.第3节重点介绍基于MapReduce的OLAP算法.第4节首先采用真实的科学数据集OceanCube,通过3组实验分别测试和比较DOLAP在数值型数据上的数据装载、切块操作、上卷操作和存储代价,随后采用SSB基准测试比较DOLAP在枚举型数据上的OLAP性能,并总结实验结论.第5节总结全文并提出进一步工作.1 相关工作目前已有很多关于大数据或云计算环境下的OLAP优化方法研究,本节主要从以下两个方面介绍相关工宋杰等:大数据分析的分布式MOLAP技术733作:大数据环境中的OLAP优化技术和分布式的OLAP系统.大数据环境中,常用的OLAP优化方法有以下两种:利用预计算和浓缩数据立方的结果优化OLAP性能[17]和通过优化存储结构和算法来优化OLAP性能,其中,后者与本文最为相关.文献[18]提出了OLAP查询中的SPAJG-OLAP子集,在存储、查询、数据分布、网络传输和分布式缓存等方面研究海量数据大规模并行处理框架的优化策略和实现技术,实验证明,效果良好.该研究基于并行数据库技术优化ROLAP性能,通过对OLAP查询以及存储的优化达到加速OLAP的目的.文献[19]指出:在Web应用中,需要同时提供对海量数据的事务操作和决策分析,并介绍一种能够同时有效支持OLTP和OLAP 的数据存储系统.通过建立索引、数据分块、预计算等方式,有效地提高了OLAP的性能.本文同样是通过优化查询以及数据存储来提高OLAP的执行效率,但不同的是,本文研究的优化方案基于MapReduce.同时,针对MapReduce连接操作的低效性,本文研究提出了DOLAP技术,大大提高了OLAP的执行效率.文献[20]指出,传统的OLAP分析无法很好地适用于大数据分析.该文根据短消息数据的特点,设计了一种基于Hadoop的有效存储格式,并使用MapReduce实现了OLAP操作,更好地适应了SMS(short message service)业务中对短消息进行数据分析的需求.该文利用了特殊的数据结构来优化OLAP操作的性能,但该研究的适用面较窄.文献[21]基于MapReduce,通过数据的筛选策略减少了数据在网络中不必要的传输,从而优化了复杂云环境中的OLAP性能.该研究重点关注云环境的复杂性以及网络延迟等因素对OLAP性能的影响,是大数据环境下ROLAP的一种优化策略,其优化方法与本文研究存在本质区别.就分布式的OLAP系统而言,一些基于Hadoop的数据库系统,例如Hive,HadoopDB,HBase,MongoDB, OLAP4cloud等都支持OLAP分析.Hive是一个基于Hadoop的数据仓库系统,为数据分析人员提供了类SQL接口,支持大数据分析.HadoopDB将MapReduce和关系数据库技术结合起来,以管理和分析大数据;HBase则是面向列存储的开源数据库系统.这些数据库将海量数据存储在分布式文件系统中,通过MapReduce完成上卷下钻等操作,属于分布式的ROLAP技术,其中,维表和事实表的连接运算是一个性能瓶颈.OLAP4cloud是基于HBase 的OLAP引擎,它将维表直接压缩到事实表中,并提供一种特殊的索引来加快寻址,采用数据立方预计算方法,属于一种近似MOLAP实现.与分布式的MOLAP技术最为相关的是文献[22],该文尝试使用多维数组存储海量数据,并将建立的存储模型运用到了基于Hadoop的数据分析工具Pig[23]中,且通过实验证明了该存储模型在占用大量存储的同时提高了OLAP分析性能.为减少存储开销,本文使用多维数组存储维信息而非事实数据;除此之外,本文还提出了维相关的遍历算法以及数据筛选算法.综上所述,尽管学界注意到大数据对OLAP分析提出的挑战,且已有部分研究分别从模型、存储、算法和预计算角度对传统OLAP进行了优化,但尚未有权威的大数据环境下分布式的MOLAP技术的研究报告.与此同时,Hadoop也逐渐成为开源领域大数据分析的主流技术,但是基于Hadoop的分布式的MOLAP系统研究仍然尚未成熟.2 维编码及事实存储2.1 数据模型OLAP采用的多维数据模型包括维和事实两部分,其关键操作是找到维和事实的映射关系.ROLAP采用关系数据库以及星形模式或雪花模式,将维信息和事实数据分别存储于关系数据库表中,并使用外键完成维信息和事实数据的映射.但是ROLAP涉及到大量的连接操作,性能较低.MOLAP采用多维数组存储维和事实,通过对维进行编码和对事实数据直接寻址的方式获得其映射关系,从而避免了连接操作的开销.但MOLAP需要以一种集中的方式维护维和事实的映射,由于一个维可以包含多个层次,每个层次可以包含若干个级别,维和事实又是一对多的关系,所以维模型具有复杂性.为了避免额外的存储和维护代价,DOLAP首先对维进行了简化,以适应分布式环境,同时降低OLAP算法的复杂程度.本节重新定义维和事实数据,同时也定义了其他相关术语.定义1(维(dimension)). 在多维数据模型中,维将所有的数据项分类至一个无重叠的数据结构中,并且提供数据项的筛选、组织和标识方法.本文研究对维的定义进行了简化,简化后的维基于多维模型的维定义,并遵循以下3个约束:设d为维,则,734Journal of Software 软件学报 V ol.25, No.4, April 2014 1)d 有且仅有1个维层次; 2)d 是m 个维级别所组成的集合,记为{l 1,l 2,...,l m }.设l i (i ∈[1,m ])为任意一个维级别,则l i 仅包含1个维属性,且包含n i 个维值; 3) 将d 视作由各级别的维属性取值所组成的树形结构(维值树),则同一级别的兄弟节点包含有相同数目的子节点.基于上述假设,维d 由以下两部分组成:1) 维模式(dimension schema)包含:① m 个维级别的有限集L (d ),且这些维级别仅包含一个概念层次(concept hierarchy);② 在集合L (d )上存在一个全序关系 d ,上卷(roll-up)操作是指沿着概念层次向上攀升.如果有关系l j d l i (i ,j ∈[1,m ],i j )成立,那么认为l j 可以上卷到l i ;2) 维实例(dimension instance)包含:① 函数m d 可以获得维级别的维属性取值集合,对于l i 而言,仅包含1个维属性,该维属性包含n i 个取值,|m d (l i )|=n i ;② 上卷函数()(),ji l l d d j d i m l m l ρ→=→对每个关系l j d l i : v j ∈m d (l j ), v i ∈m d (l i )满足(),j il l j i d v v ρ→=且 v i ∈m d (l i ), v j ∈m d (l j )满足();ji l l j i d v v ρ→=③ ,i i x y v v ∈ (),d i m l 111111|{|()}||{|()}|.i i i i l l l l i i i iiix d x x y d y y v v v v v v ρρ++→→++++=== 为简便起见,如果不加说明,本文中“维”均指符合定义1的维.定义2(度量(measure )). 度量u 是一个独立变量,它们参照每个维的某一维值,并作为OLAP 的分析对象.度量的粒度是度量参照的维值所在的维级别,最细粒度的度量参照每一维d 中的最低维级别的某一维值.设u参照维集合D ={d 1,d 2,…,d n }, d ∈D ,即集合D 可以确定度量u ,记作D →u ,则满足:D →u ⇔ !v ∈m d (d ml )∧v →u (d 有 m 个维级别),其中,v →u 是指维值v 可以确定度量u .定义3(单元格(cell )). 在逻辑视图中,单元格是由若干不同的度量组成的原子单元,这些度量都参照相同的维值.对于维集合D 而言,单元格可以表示为度量的集合,记作{u |D →u }.定义4(数据立方(cube )). 根据定义1~定义3,数据立方是OLAP 中的多维数据结构,简称立方.数据立方的维符合定义1,且由若干单元格组成.定义5(块(chunk )). 块是数据立方的逻辑划分,一个数据立方可以根据维的取值分成多个块.图1是由3个维(x ,y ,z )所组成的立方,图中较小的方格代表单元格,较大的方格代表块.在实际操作中,块中有可能包含一些空的单元格,即,该单元格中没有任何度量.在实际应用中,为了减少立方占用物理空间的大小,若单元格内没有任何度量,则在该块文件中不保存该单元格的记录.Fig.1 Example of data cube图1 数据立方示例宋杰 等:大数据分析的分布式MOLAP 技术7352.2 维算法 在OLAP 操作中,对维的操作是非常频繁的.维的编码和遍历算法是MOLAP 的关键技术,本节将对DOLAP 技术中维的编码和遍历算法进行阐述.2.2.1 维编码算法维编码方法主要包括二进制编码和十进制编码.二进制编码也称作位图编码,通过编码的拼接可以包含维的级别信息,通过编码的移位实现维的遍历,但是二进制编码会造成很大程度上的稀疏[24];十进制编码是对每个维级别的维值依次使用十进制数编码,但是无法直接获得编码和维值的映射.在大数据环境中,为了避免稀疏, DOLAP 采用十进制的编码方法,同时提出了维的遍历算法来计算编码和维值间的映射关系.设l 是维d 中的某个维级别,对 x ∈[1,|m d (l )|],v x ∈m d (l ),v x 的编码为code (v x ),则code (v x )=x −1.该编码方法如算法1所示.算法1. 维编码算法.Input : Dimension d : A target dimension;Function : DimensionCoding .1. FOR i =1 TO |L (d )|;2. FOR j =0 TO |m d (l i )|−1;3. Dimension value of ij v ∈m d (l i )4. .;ij v code j =5. END FOR6. END FOR在实际应用环境,绝大部分维是数值型的,例如高度、经度、价格、流水号等.数值型的维可以按照其值域进行划分,不同的划分步长可以确定不同的维级别,因此,数值型的维可以很容易地满足定义1的约束条件.但是还存在一部分非数值型的枚举型的维,例如日期、城市、部门等.为使枚举型维符合定义1,可以使用一些空值填补维值树,使同一级别的兄弟节点包含有相同数目的子节点.图2展示了日期维的编码结果.在“月”级别上,每个月的天数是不同的,为了满足定义1,设每个月有31天,所以在图2中的2月插入了“29日”、“30日”和“31日”这3个空值.Fig.2 Example of date dimension coding图2 日期维编码示例对于实际应用中更为复杂的维,采取化简、划分维层次的方法使其形成维值树,使用空值填补维值树的方法使其满足定义1的约束条件.例如,针对TCP-H [25]数据集中的维模式,处理方法如下:① 通过取舍和合并的方法,化简TCP-H 的雪花模式为星型模式,其结果为SSB [26]数据集中的维模式;② 针对SUPPLIER 维表,使用区域属性(Nation ,Region ,City )作为划分维层次的依据,得到维层次Nation -Region -City ;③ 在维Nation -Region -City 的维值树中添加空值,使其满足定义1的约束.736Journal of Software 软件学报 V ol.25, No.4, April 20142.2.2 维遍历算法 DOLAP 的维可以看作是一棵特殊的单根树,记作T d ,其中,ALL 是T d 的根节点,记为第0级别.每个维级别中的维值可以看作维值树中的节点,同时,每一个兄弟节点都有相同数目的子节点,如图2所示.OLAP 操作中涉及到大量对维值树T d 的遍历操作.例如,沿着T d 攀升(即上卷)或沿着T d 下降(即下钻).设有关系 i ∈[1,m −1],l i +1 d l i ,v i ∈m d (l i ),v i +1∈m d (l i +1),那么v i 和v i +1之间的上卷关系11()i i l l i i dv v ρ+→+=是OLAP 中的关键操作.编码机制将能够表 征这种上卷关系,我们可以通过编码运算实现T d 中的上卷操作.本节首先引入维级别规模的概念,并通过对节点v i 和v i +1的编码的运算获得关系11()i i l l i i d v v ρ+→+=.至于从v i 到v i +1的下钻操作,可以等同地视作从v i +1至v i 的上卷操作,此处不再赘述.定义6(维级别规模(dimension level size )). 设d 是一个维,由m 个维级别组成,第i 个维级别记作l i (i ∈[1,m −1]),维级别规模记作|l i |,则|l i +1|=|{v i+1| v i ∈m d (l i ),11()i i l l i i d v v ρ+→+=}|,其中,{v i +1| v i ∈m d (l i ),11()i i l l i i d v v ρ+→+=}是指维级别中符合条件的维属性取值的集合,|{v i +1| v i ∈m d (l i ),11()i i l l i i d v v ρ+→+=}|是指该集合的大小.根据定义6,维级别规模是指在维值树中上层维级别中任意节点子节点的个数.设〈v 1,v 2,…,v i ,v i +1,…,v m 〉是T d 中自上而下的一条分析路径,v i 在其兄弟节点间的位置记为order (v i )(兄弟节点拥有共同的父节点,且其位置计数从0开始,从左至右),则编码与位置的关系可表述为公式(1).对于图2中的路径〈19901,22,23〉:code (23)=32,order (23)=1;code (22)=1,order (22)=1;code (19901)=0,order (19901)=0.code (v i )=(…((0+order (v 1)×|l 2|+order (v 2))×|l 3|+order (v 3))…)×|l i |+order (v i ) (1)同理,当给出code (v i )时,order (v 1)到order (v i )的值可通过公式(2)计算得到: 1111121111()()%||,||()%||,||...()%||i i i i i i i i i i i i i i temp code v temp order v temp l temp l temp order v temp l temp l order v temp l −−−−−−−=⎢⎥==⎢⎥⎣⎦⎢⎥==⎢⎣⎦= (2) 联合公式(1)和公式(2),对于给定的code (v i ),可以计算出其对应的所有父节点的编码,即code (v i −1)到code (v 1)的值,从而可以进行上卷操作.例如图2中,在“天”维级别中,已知code (23)=32,其路径为〈19901,22,23〉,根据公式(2),已知code (23)=32,|l 3|=31,|l 2|=12,|l 1|=50,则order (22)=1,order (19901)=0;再根据公式(1),可以计算得到code (22)=1, code (19901)=0.2.3 数据立方分块将数据立方划分为块的目的是在OLAP 过程中对数据进行筛选,从而优化OLAP 的性能.同时,块也可以作为数据立方的存储单元.本节首先定义维、数据立方以及块的规模和容量,而后讨论数据立方的分块策略.定义7(维规模(dimension size )). 维规模是指最底层维级别的维值个数.设d 是一个维,包含m 个维级别,记 作l 1,l 2,...,l m .记|d |为维d 的规模,则1|||()|||md m i i d m l l ===∏.定义8(立方规模(cube size )和立方容量(cube capacity )). 立方规模是由组成立方的维的规模构成的元组,立方容量则是立方内包含的单元格的个数.设立方由n 维组成,其中第i 个维记作d i (i ∈[1,n ]).立方规模为|cube |=〈|d 1|,|d 2|,…,|d n |〉,立方容量为1||||nn i i cube d ==∏.定义9(块规模(chunk size )和块容量(chunk capacity )). 块规模是一个由该块包含的每个维最底层维级别上维值的个数构成的元组,块容量是块包含的单元格的个数.设块由n 维组成,其中第i 个维记作d i (i ∈[1,n ]),且宋杰 等:大数据分析的分布式MOLAP 技术737d i 被划分为p i 份.记块的规模为|chunk |,则|chunk |=〈λ1,λ2,…,λn 〉,其中,||i i i d p λ⎡⎤=⎢⎥⎢⎥,块容量为1||.n n i i chunk λ==∏DOLAP 的性能与|chunk |n 的取值密切相关,|chunk |n 取值越小,并行性越好,实际参与运算的单元格数量越少,但此时调度代价变高.如何折中地确定|chunk |n 的取值,将变得十分关键.借鉴文献[27],本文提出了一种通过查询条件及其出现的概率来确定块容量的方法,但我们难以穷举所有查询条件及其出现概率,所以该方法采用随机抽样,抽取一些查询条件及其出现概率.除此之外,|chunk |n 的取值还应该考虑算法的运行环境.DOLAP 利用MapReduce 来实现,所以|chunk |n 的取值还需考虑MapReduce 的一些特性,例如文件寻址时间、数据处理时间等.表1列出了相关符号的定义,其中,λi 为变量,T 和N a 是计算结果,其他为已知常量.Table 1 Definition of notations表1 相关符号定义符号含义描述 T一个OLAP 操作消耗的平均时间n多维数组维的个数 λi维d i 上块规模 N a平均一个查询命中的块个数 vMap 任务的处理速度(个/秒) t 0文件寻址时间 t 1Map 任务消耗的额外时间 q所有可能的查询条件个数 a ij查询条件j 在维d i 上的取值个数ξj 查询条件j 出现的概率平均一个查询命中的块个数N a 可以通过每个查询条件出现的概率得到,如公式(3)所示: 11q n ij a j j i i a N ξλ==⎛⎞⎡⎤=⎜⎟⎢⎥⎜⎟⎢⎥⎝⎠∑∏ (3) 考虑MapReduce 相关的一些影响因素之后,可以得到一个OLAP 操作消耗的平均时间,如公式(4)所示: 10111n i q n ij i j j i i a T t t v λξλ===⎛⎞⎜⎟⎡⎤⎛⎞⎡⎤⎜⎟=++⎢⎥⎜⎟⎢⎥⎜⎟⎜⎟⎢⎥⎢⎥⎝⎠⎣⎦⎜⎟⎝⎠∏∑∏ (4) 通过公式(4),可以计算出T 取最小值时的λi ,也就得到了块规模.每个维上的块规模均可通过上述方法计算得到,从而可以得到块容量的最佳值.由公式(4)可以看出,‘ ’操作会导致块容量之和大于立方容量,所以块中会存在空的单元格.2.4 数据存储传统MOLAP 数据立方的存储代价很大,尤其是在高维数据立方或每个维包含大量维值的情况下.事实上,传统MOLAP 依赖访问内存中的多维数组来加快OLAP 操作,这种方式在大数据环境中显然难以实现.DOLAP 的“多维数组”是通过计算得到,无需存储,因此数据立方的存储代价非常小.DOLAP 对维进行简化,可以保证在同一级别上维的编码是连续的十进制数,同时,每一个兄弟节点都有相同个数的子节点,所以维信息仅需存储每个维级别规模,极大地降低了维的存储代价.设维d 由m 个维级别组成,记作{l i |i ∈[1,m ]},则d 的物理存储可以表示为该维级别和维级别规模的序偶所组成的集合{〈l i ,|l i |〉|i ∈[1,m ]},其中,l i 表示该维级别的名称.DOLAP 实现系统可以使用XML 文件存储维信息,并保存于集群主节点.逻辑上,“立方和其单元格”或是“立方和其块”的数据结构均可以类比为“多维数组和其元素”的数据结构.物理上,块是立方的存储单元,将块内的单元格线性化(linearization)后,块可以作为独立的文件进行存储.为了便于寻址,块和单元格都需要支持线性化和反线性化(reverse-linearization)运算,且该运算与多维数组的线性化和反线性化运算是一致的.设存在一个n 维数组,其维规模记作〈A 1,A 2,…,A n 〉,多维数组中的元素X 在多维空间中的738 Journal of Software 软件学报 V ol.25, No.4, April 2014 坐标记作(X 1,X 2,…,X n ),其线性化后的坐标记作index (X ),则其线性化方法如公式(5)所示,反线性化方法如公式(6)所示:index (X )=(…((X n ×A n −1+X n −1)×A n −2+…+X 3)×A 2+X 2)×A 1+X 1 (5) 1111121222232%,%,...%n n ntemp indextemp X temp A temp A temp X temp A temp A X temp A =⎢⎥==⎢⎥⎣⎦⎢⎥==⎢⎥⎣⎦= (6) 对于单元格而言,构成该立方的维记作d 1,d 2,...,d n .设x 是立方中的一个单元格,x 在维d i 上对应的维值为v i , code (v i )=x i ,则x 的坐标为(x 1,x 2,…,x n ),公式(5)将(X 1,X 2,…,X n )替换为(x 1,x 2,…,x n ),〈A 1,A 2,…,A n 〉替换为〈|d 1|, |d 2|,…,|d n |〉,公式(6)亦然,可得单元格的线性化和反线性化算法.在存储实现中,单元格存储为Hadoop HDFS [28]中MapFile [29]文件的一条记录,该记录包括该单元格线性化后的坐标及其包含的度量.对于块而言,设y 是一个块,它是立方的一个划分,|y |=〈λ1,λ2,…,λn 〉,y 的坐标为(y 1,y 2,…,y n ),y 内任意一个单元格的坐标为(x 1,x 2,…,x n ),则i i i x y λ⎢⎥=⎢⎣⎦,公式(5)中,将(X 1,X 2,…,X n )替换为(y 1,y 2,…,y n ),〈A 1,A 2,…,A n 〉替换为〈λ1,λ2,…, λn 〉,公式(6)亦然,可得单元格的线性化和反线性化算法.在存储实现中,一个块存储为Hadoop HDFS 中一个MapFile 文件,线性化后的块坐标作为块文件的文件名,以便进行块文件的寻址;块文件内每一条记录存储了该块内的一个单元格,块文件则存储于分布式文件系统Hadoop HDFS 中.在块文件中按Key -Values 对的形式存储所有的单元格数据,其中,Values 对应事实数据,Key 则是单元格(cell)坐标按公式(5)线性化后的索引值.该索引值是一个十进制正整数,在大数据环境中,数据立方规模会非常大,以Java 语言为例,索引值会超出长整型(long)的最大取值范围264,因此,我们采用字符串表示的数字数据.此外,若采用Key -Values 方式存储,Key 的存储开销可能会比对应的Values 存储开销大很多,这样就浪费了大量存储.因此对于一个块文件,仅记录一个最小的单元格索引值,而Key 存储的则是相对于该值的偏移量.2.5 应用案例本节描述一个DOLAP 的真实应用案例OceanCube.案例的数据模式来源于海洋科学中通过CTD [30]收集的海水温度数据,数据集来源于真实的国家海洋数据[30],该数据集中的数据项均为连续型数值数据.OceanCube 数据集描述如下:3个维分别为时间维、区域维和深度维,对应Time ,Area 和Depth .Time 共有5个级别:Year,Season, Month,Day,Slot.其中,Slot 是指一天的3个时间段,其维值分别是“上午”、“下午”和“晚上”.Area 共有7个维级别:1°,1/2°,1/4°,1/8°,1/16°,1/32°和1/64°.其中,1°是指由1°经度和1°纬度所组成的方形区域,地球表面可以划分为360×180个1°方区.Depth 共有3个维级别:100m,50m,10m,其中,100m 指的是“海洋的深度以100m 的间隔进行划分”,若海水有1 000m 深,则可以划分为10层,对应10个维值.见表2.Table 2表2 各个维规模数据立方规模和容量 最优的块规模及块容量 (1) |Time |=11160(2) |Area |=320(3) |Depth |=100 (1) |OceanCube |=〈11160,320,100〉(2) |OceanCube |n =357120000 (1) |OceanChunk |=〈72,64,50〉 (2) |OceanChunk |n =230400我们设每个月有31天,初始化数据立方为OceanCube,其中包括10年、5°、1 000m 深度的海洋温度数据,维信息如下所示:(1) Time ={〈Year,10〉,〈Season,4〉,〈Month,3〉,〈Day,31〉,〈Slot,3〉};。
Paper NO1 (注:满分为五星)
笔记部分
(块(chunk)). 块是数据立方的逻辑划分,一个数据立方可以根据维的取值分成多个块.
下图是由 3 个维(x,y,z)所组成的立方,图中较小的方格代表单元格,较大的方格代表块.在实际操作中,块中有可能包含一些空的单元格,即,该单元格中没有任何度量.在实际应用中,为了减少立方占用物理空间的大小, 若单元格内没有任何度量,则在该块文件中不保存该单元格的记录。
维算法
维遍历算法
块选择算法
满足公式(7)的块会作为 OLAP 操作的输入,而非输入全部数据块,从而缩小了 OLAP 操作的查询空间;而且块选择算法无需额外的查询,仅通过编码计算,算法代价很小.图 3 显示了块选择算法的示例.
基于MapReduce的算法实现
以上卷操作为例,基于MapReduce 的OLAP 算法由4部分组成:InputFormatter,Mapper,Reducer 和 OutputFormatter,分别对应上卷操作中的查询、改变维级别、聚集和输出结果集的 4 个步骤.上卷操作执行流程如图 4 所示.
实验分析
HaoLap 设计之初是为了应用于国家海洋科学数据中连续的数值型维的区间查询和OLAP 操作,如第 2.5 节中的应用案例所述,但同样也适用于离散的枚举型维的 OLAP 操作.因此,针对数值型维,本节采用真实的科学数据集,比较 HaoLap 和其他主流云数据库系统的性能,将涉及 4 组实验,分别是数据装载、切块操作、上卷操作和存储代价.每个实验都将涉及多组实验用例,并通过 3 个不同规模的数据集对比 5 个系统的性能;针对枚举型维,将采用 SSB 基准测试用例,比较 HaoLap 和其他系统的性能;最后总结实验结论.为表述简单,我们采用 SQL 描述实验用例,针对不同数据库系统,采用不同的方式实现这些用例,具体实现方法从略.
实验案例
本节采用第 2.5 节描述的案例 OceanCube 作为实验数据.在实验中使用了 3 个数据集(S1,S2,S3),为了便于表述,使用Size(Si)(1≤i≤3)表示数据集的规模,Size(Si)的单位为数据条数.本文没有采用大数据研究中常用的 GB 为单位是因为:HaoLap,Hive,HadoopDB 和 HBase 的数据文件格式不同,导致文件大小差异较大.
各个数据集相关参数见表 3.
由图 7(d)可知,HBase 对于 OLAP 没有任何优化策略,其性能符合 ROLAP 的一般规律.但是,HBase 在相同用例下的切块操作执行时间对比其他系统要长很多.图 8(a)展示在用例 S1C1 中,HBase 的 Mapper 和 Reducer 数量分别是 Hive 的 2.8 倍和 13 倍;图 8(b)则说明,用例 S1C1 中,Mapper 和 Reducer 的执行时间 HBase 是Hive 的 20 倍和 2.3 倍.HBase 的任务执行性能比 Hive 要低很多.这种现象表明,HBase 并不适合执行多表的连接以及切块操作:
Paper NO1 (注:满分为五星)
笔记部分
虚拟网映射建模
针对在线虚拟网络映射场景,考虑了节点转
发包时的CPU资源消耗,并对转发包所消耗的CPU 资源建模量化。
在虚拟网络映射过程中,考虑将底层物理资源在减掉中间节点转发包所需消耗资源后,以节点负载和链路负载同时达到均衡为目标消除网络资源瓶颈,为后续虚拟网络请求提供一个更为均衡的底层物理网络,从而提高了虚拟网络构建成功率、网络资源利用率、基础设施提供商的收益
节点负载和链路负载建模
一个资源分布均衡的物理网络可以提高后续虚拟网络请求构建的成功率,使得物理网络资源保持较高的利用率。
因此,在虚拟网络映射过程中,一方面要保证底层物理网络链路上通信流量的分配均衡;另一方面要使得底层物理节点上的工作负载及转发负载分配均衡,从而提高后续虚拟网络构建成功率和资源利用率。
模拟实验结果与分析
图 1 ~ 图 5 分别展示了LB-PSO 与BACA 在请求接收成功率、物理网络整体负载均衡性、节点负载均衡性、链路负载均衡性、基础设施运营商的平均收益这5 个性能评价指标下的实验效果对比图。
从图 1 中我们可以看出,由于刚开始底层物理网络资源丰富,LB-PSO 和BACA 的请求接收成功
率都基本为1.0。
随着资源的逐步消耗,LB-PSO 由于在考虑中间节点的资源消耗后,以节点负载和链路负载同时均衡为目标,从而避免了底层网络资源瓶颈,为后续网络提供一个更为均衡的底层物理网络,从而提高了虚拟网络构建成功率。
而BACA 在减去中间节点资源消耗后,容易导致网络资源瓶颈的出现,所以后期的接收成功率逐渐降低。
但由于LB-PSO 和BACA 随着虚拟网络请求的动态到达和离开而达到一个稳态过程,所以两者的请求接收成功率都趋于平稳。