大数据多维分析平台的实践

一、  大数据多维分析平台搭建的初心

随着公司业务量的增长,基于传统关系型数据库搭建的各种报表查询分析系统,性能下降明显。同时由于大数据平台的的日趋完善,实时的核心业务数据逐步进入大数据平台。数据进入了大数据平台,相伴而来的是各种业务需求,这里主要聚焦在如何高效稳定的基于大数据平台的数据进行查询。通过分析,我们面临的挑战如下:

  • 亿级别表下任意维度和时间跨度的高效的统计查询
  • 业务分析的维度越来越多,是否可以提供一个灵活的多维度组合查询的工具,而不是针对不同的维度组合开发不同的报表

基于以上目标,开始搭建大数据的多维分析平台。

二、  多维分析平台技术选型

搭建多维分析平台,首先面临的是技术选型,基于我们对开源框架的使用经验和实际情况,我们主要看业界主流的公司是如何使用应对的,在技术选型上会进行一定的比较,但不会投入比较大的资源进行验证,主张快速的迭代,效果的评估。多维分析平台技术选型主要面临是OLAP引擎和前端UI的选型。

我们先来看一下OLAP的基本概念和分类。

OLAP 翻译成中文叫联机分析处理,OLTP 叫联机事务处理。OLTP 它的核心是事务,实际上就是我们常见的数据库。我们业务数据库就是面向于事务。它的并发量会比较高,但是操作的数据量会比较小。它是实时更新的。数据库的设计会按照 3NF 范式,更高的话可能会按照 BC 范式之类的来做。而 OLAP 的核心是分析,面向应用是分析决策,需要分析的数据级会非常大,可能 TB,甚至 PB 都会有。它的数据更新会稍微慢一些,它的设计一般是反范式的,因为面向分析。常见的是雪花模型和星型模型。

OLAP的引擎目前主要分为3类

第一种叫 ROLAP,叫关系型 OLAP,它的特点就是它是基于关系性模型,计算的时候,根据原始数据去做聚合运算。常见的实现,小数据量可以利用 MySQL、SqlServer 这种传统数据库,而大数据量可以利用 Spark SQL、Tidb、ES 这些项目。

第二种类型叫 MOLAP,叫多维 OLAP,它的特点就是它会基于一个预定义的模型,我需要知道,要根据什么维度,要去算哪些指标,我提前就把这些结果弄好,存储在引擎上。细节数据和聚合后的数据保存在cube中,以空间换时间,查询效率高。

实际上我们的很多业务也是基于此思想去做的,比如我们会在ES里面按照电站、客户等维度进行聚合,满足日常的T+1查询需求,只不过这个地方每个聚合维度需要在ES里面做一个表,并增加上复杂的ETL处理.符合这个理念在业界用的比较多的为Kylin. 并且基于Kylin 有完整的一套开源产品KMS。涵盖了多维分析的前端UI及多维分析数据库。

第三种叫 HOLAP(Hybrid OLAP),叫混合 OLAP,特点是数据保留在关系型数据库的事实表中,但是聚合后的数据保存在cube中,聚合时需要比ROLAP高,但低于MOLAP。

综合分析,技术选型上主要考虑第ROLAP和MOLAP。关于OLAP的分类已经经过了很多年的发展,市场上相关的产品也有很多,但是大数据下基于开源组件应该如何搞?

在大数据时代,有了分布式计算和分布式存储,对于亿级别表的任意时间跨度多维度组合的查询,是不是可以直接查询,不用再预聚合。按照这个思路,查找了一些方案,没有很明显的技术倾向,我们想尝试了在Spark sql、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(Multidimensional Expressions )翻译成目标数据库/数据引擎的执行语言(比如SQL)

Saiku: Saiku提供了一个多维分析的用户操作界面,可以通过简单拖拉拽的方式迅速生成报表。Saiku的主要工作是根据事先配置好的schema,将用户的操作转化成MDX语句提供给Mondrian引擎执行

其中Mondrian和Saiku已经是非常成熟的框架,这里我们简单看下Kylin的架构.

  • Kylin

Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。

Apache kylin 能提供低延迟(sub-second latency)的秘诀就是预计算,即针对一个星型拓扑结构的数据立方体,预计算多个维度组合的度量,然后将结果保存在 hbase 中,对外暴露 JDBC、ODBC、Rest API 的查询接口,即可实现实时查询。主要的使用包含3个步骤

l   通过Kylin提供的UI界面定义多维分析模型和Cube

l   对定义好的cube进行预计算,并将计算的结果存储到hbase中

l   查询时通过kylin引擎将查询的sql引擎翻译成hbase的scan等进行数据的查询

更多关于kylin的案例、原理、调优 大家可以参考kylin的官方网站和社区,并可以通过社区邮件进行问题交流.

四、  多维分析平台的架构及应用情况

  • 业务规划

多维分析报表的创建,除了工具本身之外,对系统数据的处理和设计也是非常之重要,基于目前的使用,主要考虑以下几个问题

²  多维报表的创建规划过程需要有一套数据分层划分模型,形成方法论、体系,以便指导业务人员进行报表的定义

²  新的业务需求提出时,是基于现有报表增加维度还是增加一个新的报表

²  多个报表由于业务需求,有重复的维度,重复的维度如何保证数据的一致性

基于以上我们将数据和维度进行了层次划分,业务处理过程采用逐层汇总的方式,进行数据汇总,最后通过saiku进行查询展现.数据分层结构如下:

日志数据:主要包含充电过程中的分钟报文数据、智能运维的分钟报文数据,数据主要存在HBase、ES、TIDB

明细数据:主要包含各种不同的业务订单数据。数据主要存储在sqlserver、ES。

聚合数据:聚合数据为按照不同的业务维度进行聚合的数据.比如 :按照电站、结算账户等归集的充电数据。数据主要存储在ES、Kylin.

公共维度:主要为系统共用的基础数据,比如电站、集控、终端数据。数据公用。

  • 部署架构

基于kylin 的设计架构,我们充分利用现有的hbase集群和计算集群,搭建了基于KMS的多维分析平台,这里重点介绍一下我们的架构部署情况.先看一下部署架构.

目前进入kylin的数据主要来自于sqlserver和kafka,通过kettle、flume等工具将数据抽取到离线计算集群hive数据库。

数据抽取到hive数据库之后,通过统一的调度工具调用Kylin的cube的build API,按照业务需求对之前定义好的cube进行预计算,计算好的结果存储到hbase集群

考虑到kylinbuild时占用资源较多,集群部署时,将kylin的build节点和查询节点进行了分离。目前build节点为一台,查询节点为2台。Hbase集群目前和线上的业务公用.

前端展示saiku是个成熟的多维分析展现工具,对接的数据源有很多种,社区开源版本主要提供了kylin、mysql的支持。在适应性上可以直接和kylin和tidb进行联通使用。由于kylin 查询节点部署了2台,为了充分使用saiku的缓存,在saiku端开发了基于用户的负载均衡。同时考虑到我们目前使用的集群,通过自定义开发实现了与ES集群的连通性.

  • 应用情况

目前通过kylin定义的cube有20几个,最大的cube存储已经超过2T.基于saiku定义的报表目前主要用于公司的运营、运维、充电安全相关的查询。其中最大的查询维度已经接近100个.系统应用截图如下

  • 解决的问题

²  为了保证saiku的HA同时充分利用saiku的缓存,开发了基于用户的负载均衡框架

²  为了方便通过手机进行多维分析报表的简单修改,对saiku框架进行了修改,适配了手机

²  对saiku的元数据增加了缓存,提高了查询速度

²  修改了saiku对大小写的配置,适配kylin数据库

²  参考kylin官方的案例和性能调优针对构建和查询过程进行优化

五、  总结及问题

  • 目前存在的问题

²  多维分析集群查询对hbase的查询内存消耗较大,查询内存会引起gc,从而影响hbase的其他读写服务

²  数据结构发生变化,历史数据需要重新刷,运维成本比较高

²  历史数据发生变化,需要经常进行历史数据的刷新

²  非聚合组的维度进行查询,部分查询较慢

²  Saiku前端的灵活性和数据库能力的矛盾

  • 下一步的方向

²  提升运维效率,在某些表上进行es的应用,提升报表的实时性,建立起不同等级的数据表不同的数据库的区分原则

²  针对数据的日常刷新,开发简单的运维工具

原文地址:https://www.cnblogs.com/pbc1984/p/11074499.html

时间: 2024-10-25 02:38:51

大数据多维分析平台的实践的相关文章

LogSec日志大数据审计平台,企业信息安全管理人员不再“躺枪”

作为一名企业信息安全管理人员,你有没有被各种安全设备.服务器.网络设备的安全日志搞得焦头烂额?无论是要从各种日志中进行问题分析和定位,还是从日志中提取有用的信息,是不是都像大海捞针一样忙得筋疲力尽收获却总是寥寥? 而且,而且,你们单位里只有你一个安全管理员有木有? 单位这么多安全日志.设备日志,每天就好几万条怎么分析? 面对监管单位的安全检查,重点要求设备安全日志检查,怎么办? 那么在日常工作中,信息安全管理员究竟会面临哪些安全日志审计的问题呢? 日志分散在各地 随着信息化技术的逐渐深入,企业往

大数据计算平台Spark内核全面解读

1.Spark介绍 Spark是起源于美国加州大学伯克利分校AMPLab的大数据计算平台,在2010年开源,目前是Apache软件基金会的顶级项目.随着Spark在大数据计算领域的暂露头角,越来越多的企业开始关注和使用.2014年11月,Spark在Daytona Gray Sort 100TB Benchmark竞赛中打破了由Hadoop MapReduce保持的排序记录.Spark利用1/10的节点数,把100TB数据的排序时间从72分钟提高到了23分钟. Spark在架构上包括内核部分和4

大数据竞赛平台——Kaggle 入门

大数据竞赛平台--Kaggle 入门篇 这篇文章适合那些刚接触Kaggle.想尽快熟悉Kaggle并且独立完成一个竞赛项目的网友,对于已经在Kaggle上参赛过的网友来说,大可不必耗费时间阅读本文.本文分为两部分介绍Kaggle,第一部分简单介绍Kaggle,第二部分将展示解决一个竞赛项目的全过程.如有错误,请指正! 1.Kaggle简介 Kaggle是一个数据分析的竞赛平台,网址:https://www.kaggle.com/ 企业或者研究者可以将数据.问题描述.期望的指标发布到Kaggle上

国内物联网平台初探(七):Ablecloud物联网自助开发和大数据云平台

国内物联网平台初探(七)——Ablecloud物联网自助开发和大数据云平台 马智 平台定位 面向IoT硬件厂商,提供设备联网与管理.远程查看控制.定制化云端功能开发.海量硬件数据存储与分析等基础设施,加速硬件实现联网智能化. 架构 服务 云端服务一体化开发引擎 业内独创一体化开发引擎架构,自动解决底层连接.存储.分布式集群部署.弹性扩容.安全等难题,降低IoT云端功能开发门槛,普通工程师即可快速完成云端服务开发部署,加速IoT功能创新迭代. IoT功能组件及方案超市 提供丰富的IoT功能组件及方

Kaggle大数据竞赛平台入门

Kaggle大数据竞赛平台入门 大数据竞赛平台,国内主要是天池大数据竞赛和DataCastle,国外主要就是Kaggle.Kaggle是一个数据挖掘的竞赛平台,网站为:https://www.kaggle.com/.很多的机构,企业将问题,描述,期望发布在Kaggle上,以竞赛的方式向广大的数据科学家征集解决方案,体现了集体智慧这一思想.每个人在网站上注册后,都可以下载感兴趣项目的数据集,分析数据,构造模型,解决问题提交结果.按照结果的好坏会有一个排名,成绩优异者还可能获得奖金/面试机会等. 图

逸管家大数据孵化平台,缔造超强经济联合体

原标题:逸管家大数据孵化平台,缔造超强经济联合体 逸管家互联网大数据孵化平台,不愧为行业协会和企业孵化器的"升级版",它超脱以往所有孵化器的作用:利用自身的互联网大数据技术优势,通过数据的交换形成密集的信息流,通过让中小企业.贸易服务商.零售实体.终端消费者紧密联合,如量子般自然形成无限的销售渠道和销售额,如流水般注入×××大海且生生不息,形成一股取之不尽.用之不竭的新力量,进一步强化逸管家平台的孵化价值,真实的为中小企业服务,帮助企业主和老板们解决知名度低.销售困难.资金短缺等核心问

大数据调度平台 azkaban windows IDEA/eclipse debug 环境搭建

近些日子需要研究大数据调度平台azkaban源码, 发现只有 linux运行的脚本,也没有windows下面的脚本,下面是怎么搭建IEDA /eclipse debug运行环境步骤.其实也挺简单的,我整理了下,方便初学者快速上手调试 ,希望可以帮助到大家. 1. 下载azkaban 源码 ,并按文档说明 ./gradlew build 2.怎么debug azkaban-exec-server 在IDEA或eclipse 右键 azkaban.execapp.AzkabanExecutorSer

通过 GOOGLE 大数据计算平台演进理解 APACHE FLINK 前世今生

一.背景 2019年1月,伴随 APACHE FLINK 母公司 Data Artisans 被 收购 ,FLINK 毫无争议成为继 SPARK 之后的新一代大数据计算平台,本文希望通过 GOOGLE 计算平台演进来更好的理解 FLINK. 二.GOOGLE 大数据计算平台演进 GOOGLE 作为搜索引擎的顶级公司,需要处理海量数据,其大数据计算平台的演进是行业的风向标:本文通过 GOOGLE 在该领域发表的论文进行剖析,希望从中提取一些演进的主线. 2.1 分布式的三篇经典 2003年,[Th

2019年优选大数据计算平台搭建方案之BR-odp数据安全、管理模块,数道云大数据

[前言]大数据计算平台,使用了Hadoop.Spark.Storm.Flink等这些分布式的实时或者离线计算框架,建立计算集群,并在上面运行各种计算任务. 21世纪的现在,大数据这个名词对我们来说并不陌生,大数据受到了不同行业,不同领域的各界人士的关注,就在今年已经过去的两会中,大数据的发展及使用也成为两会的热门话题. 大数据行业火热的发展,大数据技术将海量数据的价值化来赋予传统行业不一样的发展前景,大数据不仅助力企业的发展,同时也在政府等关于民意收集等等多个领域得到广泛应用,因此,大数据技术在