《大数据多维分析平台实践方案》
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大数据多维分析平台实践方案
一、大数据多维分析平台搭建的初心
随着公司业务量的增长,基于传统关系型数据库搭建的各种报表查询分析系统,性能下降明显。同时由于大数据平台的的日趋完善,实时的核心业务数据逐步进入大数据平台。
数据进入了大数据平台,相伴而来的是各种业务需求,这里主要聚焦在如何高效稳定的基于大数据平台的数据进行查询。
通过分析,我们面临的挑战如下:
•亿级别表下任意维度和时间跨度的高效的统计查询。
•业务分析的维度越来越多,是否可以提供一个灵活的多维度组合查询的工具,而不是针对不同的维度组合开发不同的报表。
基于以上目标,开始搭建大数据的多维分析平台。
二、多维分析平台技术选型
搭建多维分析平台,首先面临的是技术选型,基于我们对开源框架的使用经验和实际情况,我们主要看业界主流的公司是如何使用应对的,在技术选型上会进行一定的比较,但不会投入比较大的资源进行验证,主张快速的迭代,效果的评估。多维分析平台技术选型主要面临是OLAP引擎和前端UI的选型。
我们先来看一下OLAP的基本概念和分类。
OLAP翻译成中文叫联机分析处理,OLTP叫联机事务处理。OLTP 它的核心是事务,实际上就是我们常见的数据库。我们业务数据库就是面向于事务。它的并发量会比较高,但是操作的数据量会比较小。它是实时更新的。数据库的设计会按照3NF范式,更高的话可能会
按照BC范式之类的来做。而OLAP的核心是分析,面向应用是分析决策,需要分析的数据级会非常大,可能TB,甚至PB都会有。它的数据更新会稍微慢一些,它的设计一般是反范式的,因为面向分析。常见的是雪花模型和星型模型。
OLAP的引擎目前主要分为3类
第一种叫ROLAP,叫关系型OLAP,它的特点就是它是基于关系性模型,计算的时候,根据原始数据去做聚合运算。常见的实现,小数据量可以利用MySQL、SqlServer这种传统数据库,而大数据量可以利用SparkSQL、Tidb、ES这些项目。
第二种类型叫MOLAP,叫多维OLAP,它的特点就是它会基于一个预定义的模型,我需要知道,要根据什么维度,要去算哪些指标,我提前就把这些结果弄好,存储在引擎上。细节数据和聚合后的数据保存在cube中,以空间换时间,查询效率高。
实际上我们的很多业务也是基于此思想去做的,比如我们会在ES里面按照电站、客户等维度进行聚合,满足日常的T+1查询需求,只不过这个地方每个聚合维度需要在ES里面做一个表,并增加上复杂的ETL处理。符合这个理念在业界用的比较多的为Kylin。并且基于Kylin有完整的一套开源产品KMS。涵盖了多维分析的前端UI及多维分析数据库。
第三种叫HOLAP(HybridOLAP),叫混合OLAP,特点是数据保留在关系型数据库的事实表中,但是聚合后的数据保存在cube中,聚合时需要比ROLAP高,但低于MOLAP。
综合分析,技术选型上主要考虑第ROLAP和MOLAP。关于OLAP 的分类已经经过了很多年的发展,市场上相关的产品也有很多,但是大数据下基于开源组件应该如何搞?
在大数据时代,有了分布式计算和分布式存储,对于亿级别表的任意时间跨度多维度组合的查询,是不是可以直接查询,不用再预聚合。
按照这个思路,查找了一些方案,没有很明显的技术倾向,我们想尝试了在Sparksql、tidb、es上直接基于原始数据进行计算,效果不是很理想,这个按照理论,如果查询要想达到比较好的结果,可能集群规模需要加大不少。
同时我们对别了大数据的MOLAP的产品,发现了KMS框架,最大的特点是同时提供了前端展现、以及数据库。并且目前业界主流互联网公司也都在用。经过对比权衡,决定先期基于KMS框架搭建多维分析平台。
三、KMS框架介绍
•整体介绍
KMS=Kylin+Mondrian+Saiku是一个简单的三层架构,Git上已经有一个整合Kylin,Mondrian以及Saiku的项目。
Kylin:kylin是apache软件基金会的顶级项目,一个开源的分布式多维分析工具。通过预计算所有合理的维度组合下各个指标的值并把计算结果存储到HBASE中的方式,大大提高分布式多维分析的查询效率。Kylin接收sql查询语句作为输入,以查询结果作为输出。通过预计算的方式,将在hive中可能需要几分钟的查询响应时间下降到毫秒级
Mondrian:Mondrian是一个OLAP分析的引擎,主要工作是根据事先配置好的schema,将输入的多维分析语句MDX(MultidimensionalExpressions)翻译成目标数据库/数据引擎的执行语言(比如SQL)。
Saiku:Saiku提供了一个多维分析的用户操作界面,可以通过简单拖拉拽的方式迅速生成报表。Saiku的主要工作是根据事先配置好的schema,将用户的操作转化成MDX语句提供给Mondrian引擎执行。
其中Mondrian和Saiku已经是非常成熟的框架,这里我们简单看下Kylin的架构。
•Kylin
ApacheKylin™是一个开源的分布式分析引擎,提供Hadoop/Spark 之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBayInc。开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
Apachekylin能提供低延迟(sub-secondlatency)的秘诀就是预计算,即针对一个星型拓扑结构的数据立方体,预计算多个维度组合的度量,然后将结果保存在hbase中,对外暴露JDBC、ODBC、RestAPI 的查询接口,即可实现实时查询。
主要的使用包含3个步骤
l通过Kylin提供的UI界面定义多维分析模型和Cube。
l对定义好的cube进行预计算,并将计算的结果存储到hbase中。l查询时通过kylin引擎将查询的sql引擎翻译成hbase的scan等进行数据的查询。
更多关于kylin的案例、原理、调优大家可以参考kylin的官方网站和社区,并可以通过社区邮件进行问题交流。
四、多维分析平台的架构及应用情况
•业务规划
多维分析报表的创建,除了工具本身之外,对系统数据的处理和设计也是非常之重要,基于目前的使用,主要考虑以下几个问题
1.多维报表的创建规划过程需要有一套数据分层划分模型,形成方法