APP下载

大数据预聚合OLAP技术及应用场景探究

2017-10-23连城

无线互联科技 2017年19期
关键词:应用场景大数据

连城

摘 要:随着业务的不断发展,人们已不满足于大数据技术提供的海量存储与离线分析能力,希望能支持联机分析处理(OLAP)场景。然而在海量数据条件下,对OLAP纬度、指标数量、查询的并发度及响应时间都有较高的要求。传统的RMDBS或SQL on Hadoop能力有限,不能有效支撑。以Druid和Kylin为代表的预聚合技术的出现,在较大程度上满足了大数据OLAP场景的需求。文章在简述OLAP技术发展的基础上,分析这类预聚合技术的系统特点及应用场景。

关键词:大数据;OLAP;预聚合;应用场景

近年来,开源大数据技术逐渐占领了数据分析的市场。Hadoop生态圈的分布式文件系统(Hadoop Distributed File System,HDFS)和HBase作为主流的海量数据存储、Hive作为主流SQL数据分析引擎,逐步蚕食传统分析型关系数据库的市场。为解决MapReduce低效问题,出现了以内存为中心的计算引擎配合Hadoop的方式,诸如SparkSQL,Impala,Presto等SQL on Hadoop。它们的出现使得数据分析摆脱了对传统关系型数据库的依赖,一次分析数据量也增加到TB或PB级,支持任意纬度和指标。但是响应时间上就从秒到分钟不等,量大会到小时。为了满足大数据联机分析处理(On-Line Analytical Processing,OLAP)场景的需求,出现了以Druid和Kylin为代表的预聚合技术。通过对其系统特点的分析,借鉴解决大量聚合后结果存放,查询的并发度高、响应时间短,预聚合时效性高等一系列大数据OLAP问题的思路。通过对其应用场景的探讨,可为将来引入该类技术提供参考。

1 OLAP技术发展简史

OLAP是共享多维信息的、针对特定问题的联机数据访问和分析的快速软件技术。按照其实现方式不同,可以分为ROLAP(Relational)、MOLAP(Multidimensional)和HOLAP(Hybrid)3种类型。其中,ROLAP采用关系表存储维信息和事实数据;MOLAP则采用多维数据结构存储维信息和事实数据;而HOLAP称其为混合OLAP,该方法结合了ROLAP和MOLAP技术。无论是何种OLAP,都需要存储和计算平台的支持[1]。

1.1 传统RMDBS技术

诸如Oracle,DB2,MySQL,Postgresql等传统RMDBS(关系型数据库系统)技术,都是使用关系表存储维信息和事实数据,属于ROLAP类型。传统关系型数据库一般同时具备存储和计算能力,相对于大数据计算与存储分离,是一种紧凑的架构。数据量级方面一般小于百(千)万行级;纬度和指标数量一般小于10个;查询响应时间一般是毫秒到秒,量大会到分钟。当然上述条件会因为数据库配置及自身特性有所不同,比如DB2这种分布式能力较强的分析类关系数据库,其OLAP分析条件会更好。

1.2 并行计算SQL on Hadoop技术

大数据处理方式简单来说就是:计算+存储。诸如Hive,SparkSQL,Impala,Presto等都是基于Hadoop存储(准确来说应是HDFS)之上的计算引擎。从基于磁盘的MapReduce到基于内存的Spark,以及类似MPP架构的Impala和Presto。每次新型计算引擎的出现,在保证高扩展性、并行计算能力为前提,不断缩短查询响应时间、提高并发度。数据量级方面一般介于百(千)万行级和亿行级之间;纬度和指标数量一般无限制;查询响应时间一般是秒到分钟,量大会到小时。当然上述条件会因为Hadoop集群规模配置及引擎特性有所不同。SQL on Hadoop本质上还是使用关系表存储维信息和事实数据,属于ROLAP类型。

1.3 预聚合OLAP on Hadoop技术

SQL on Hadoop以ROLAP的方式支持联机分析处理,在缩短查询响应时间、提高并发度方面已近极限。为了在大数据环境下,支持更快查询响应和并发度,方法就是基于多维数据构建Cube模型,通过大量的预聚集计算,实现生成支持多维分析的Cube,并在此基础上支持以下钻、上卷、切片、切块、旋转等操作的MOLAP。其优点就是通过数据的深加工(预聚集计算、索引、压缩、缓存等),换取高的OLAP性能;缺点是数据预处理环节多,处理周期长,数据维度不宜过高,数据冗余多[2]。以Druid和Kylin为代表的预聚合技术,均属于MOLAP类型,也被称作OLAP on Hadoop。数据量级方面一般介于亿行级和百(千)亿行级之间;纬度数量建议小等于15个;指标数量一般无限制;查询响应时间一般是毫秒到秒。

2 系统特点分析

目前开源MOLAP多维数据分析工具,包括Kylin,Druid,Pinot等。其中Kylin和Druid是使用比较广泛的OLAP on Hadoop。

2.1 实时多维分析OLAP引擎—Kylin

Kylin全称叫作Apache Kylin,是Apache开源软件基金会里的顶级项目,用了Hadoop生态圈里面多个组件。通过Hive批量、Kafka实时导入数据,预计算支持MapReduce,Spark,Streaming方式。當整个计算结束之后,所有的分析应用、查询应用、挖掘应用会像数据库一样,通过标准的SQL访问。Kylin系统会非常精准地知道查询结果在哪里,马上可以把这个结果反馈。这点是通过其构建的Cube立方体,将某个条件(作为Key)的结果(作为Value)放在HBase中。Kylin的查询引擎会将SQL条件翻译为对应Cube的顶点(HBase的Key)并取得结果返回。由于Kylin使用HBase存储预聚合结果,在查询时间和并发度上都有很好的表现。

Kylin主要特点如下:标准的SQL接口;支持超大数据集;亚秒级响应;可伸缩性和高吞吐率;BI及可视化工具集成[3]。

Kylin必须预先定义模型用于描述Cube,由于是预计算模型内所有纬度的组合,作为key并存储到HBase这类快速存储。如果模型緯度太多则存储膨胀度相当恐怖。

2.2 实时探索查询OLAP引擎—Druid

Druid是一个开源、分布式的列存储,适用于实时数据分析的存储系统,能够快速聚合、灵活过滤、毫秒级查询和低延迟数据导入。最初由美国广告技术公司MetaMarkets开源,后作者独立Imply.io公司商业运作,其设计的适用场景是对PB级数据的快速聚合查询[4]。为了做到毫秒级的查询响应,Druid的核心思想是对数据的索引和预聚合,并载入内存快速查询。为了支持实时分析,在预聚合模型方面仅支持时序模型,数据是不可变的。Druid集群采用无共享的架构,同时依赖Zookeeper,MetadataStore(一个关系型数据库),Deep Storage(HDFS等文件系统)3个外部服务。

Druid具有如下技术特点:数据吞吐量大;支持流式数据摄入和实时;查询灵活且快。然而,Druid对SQL的支持不友好,而且不支持Join,仅提供了一个Lookup功能,满足维表的星型关联。

3 应用场景

Druid和Kylin都是使用预聚合技术,以空间换时间。不同的是Druid预计算最大维度组合,然后通过对维度做索引。当查询请求来的时候,再后发地根据刚才做的纬度索引,定位到最细粒度的数据,然后把这些数据捞出来。优点是索引带来额外的空间可控(估计要50%以上,但比Kylin要小)且算法统一,不用预建模型。缺点就是捞出来的数据默认是近似值,目前只能在有限范围内(可配置)精确查询,代价就是耗资源。Kylin是预计算模型内所有纬度的组合,业务必须能被预先定义为Cube模型,且模型纬度不能太多。但优点是支持排重,精确度有保证。

简单来说,Kylin更适合有15个左右固定的分析维度,特别是有Join的复杂场景,比如:销售、市场、管理等商务报表,预算决算,经济报表等;Druid适合时序类实时分析场景,比如:广告点击、运维监控、安全事件等数据分析。

4 结语

如果数据量级巨大又对查询响应时间有秒级要求,就要结合场景考虑使用Druid或Kylin这种MOLAP类型的大数据预聚合技术。通过在数据接入的时候,根据指定预聚合的指标进行聚合运算,并使用快速存储保存聚合结果,以满足大数据OLAP查询需求。数据在聚合的过程中会丢失指标对应的列值信息,可结合ROLAP类型的并行计算SQL on Hadoop技术解决。可以预见大数据HOLAP类型会将明细数据以ROLAP的形式存放,更加方便灵活,而高度聚合的数据以MOLAP的形式展现,更适合于高效的分析处理。相信大数据预聚合OLAP技术作为大数据解决方案中重要的组成部分,将发挥更大的作用。

[参考文献]

[1]宋杰,郭朝鹏,王智,等.大数据分析的分布式MOLAP 技术[J].软件学报,2014(4):731-752.

[2]杜小勇,陈跃国,覃雄派.大数据与OLAP系统[J].大数据,2015(1):48-60.

[3]Apache Kylin核心团队.Apache Kylin权威指南[M].北京:机械工业出版社,2017.

[4]欧阳辰,刘麒贇,张海雷,等.Druid实时大数据分析原理与实践[M].北京:电子工业出版社,2017.

猜你喜欢

应用场景大数据
云计算在运营商业务系统中的应用研究
浅谈北方移动微管微缆技术应用场景
室内外布线用新型光缆技术规范应用研究
大数据环境下基于移动客户端的传统媒体转型思路