一站式大数据解决方案分析与设计实践 | BI无缝整合Apache Kylin

本文主要是介绍一站式大数据解决方案分析与设计实践 | BI无缝整合Apache Kylin,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方蓝色字体,选择“设为星标

回复”资源“获取更多资源

本文已收录于Github仓库:《大数据成神之路》 

地址:https://github.com/wangzhiwubigdata/God-Of-BigData

研发背景

今天随着移动互联网、物联网、大数据、AI等技术的快速发展,数据已成为所有这些技术背后最重要,也是最具价值的“资产”,同时数据也是每一个商业决策的基石,越来越多的企业选择数字化转型,但数据驱动增长然充满挑战,企业数据孤岛严重、数据一致性难以保证、数据资产沉淀数据分散难以共用、数据分析项目上线经历数月,报表查询响应慢难以应对瞬息万变的市场环境,成本问题在数据量呈指数增长的前提下难以控制,因此在大数据的背景下,如何从海量的超大规模数据中快速获取有价值的信息,已经成为新时代的挑战。

Hadoop诞生以来,大数据的存储和批处理问题均得到了妥善解决,而如何高速地分析数据也就成为了下一个挑战。于是各式各样的“SQL on Hadoop”技术应运而生,其中以Hive为代表,Impala、Presto、Phoenix、Drill、SparkSQL、FlinkSQL等紧随其后。它们的主要技术是“大规模并行处理”(Massive Parallel Processing,MPP)和“列式存储”(Columnar Storage)。大规模并行处理可以调动多台机器一起进行并行计算,用线性增加的资源来换取计算时间的线性下降。列式存储则将记录按列存放,这样做不仅可以在访问时只读取需要的列,还可以利用存储设备擅长连续读取的特点,大大提高读取的速率。这两项关键技术使得Hadoop上的SQL查询速度从小时提高到了分钟级。

然而分钟级别的查询响应仍然离交互式分析的现实需求还很远,市面上主流的开源OLAP引擎目前还没有一个系统能够满足各种场景的查询需求。其本质原因是,没有一个系统能同时在数据量、性能、和灵活性三个方面做到完美,每个系统在设计时都需要在这三者间做出取舍。

仔细思考大数据OLAP,可以注意到两个事实。

大数据查询要的一般是统计结果,是多条记录经过聚合函数计算后的统计值。原始的记录则不是必需的,或者访问频率和概率都极低。

聚合是按维度进行的,由于业务范围和分析需求是有限的,有意义的维度聚合组合也是相对有限的,一般不会随着数据的膨胀而增长。

基于以上两点,我们可以得到一个新的思路——“预计算”。应尽量多地预先计算聚合结果,在查询时刻应尽量使用预算的结果得出查询结果,从而避免直接扫描可能无限增长的原始记录,预计算系统是在入库时对数据进行预聚合,进一步牺牲灵活性换取性能,以实现对超大数据集的秒级响应。

Apache Kylin是一个开源的、分布式的分析型数据仓库,提供Hadoop/Spark/Flink 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,通过预计算它能在亚秒内查询巨大的表,其中的关键就是要打破查询时间随着数据量成线性增长的这个规律。

BI(Business Intelligence),即商务智能,指用现代数据仓库技术、在线分析技术、数据挖掘和数据展现技术进行数据分析以实现商业价值,随着业务数据的规模增长,传统数据仓库不堪重负,数据的存储和批量处理成了瓶颈,查询分析速度无法满足日益增长的数据需求,传统关系型多维分析ROLAP引擎遇到极大挑,越来越多的企业引入大数据平台架构。

BI大数据分析平台致力于帮助用户快速在业务场景中应用大数据,助力业务发展和产业升级,让数据更高效地驱动生产力。因此必须集成整合Kylin实现赋能基于大数据Hadoop 生态 MOLAP(Kylin)及 HOLAP (多引擎)的查询分析,实现支持识别、管理和优化最有价值数据、提升整合底层复杂数据源的能力,通过数据服务将复杂的数据映射为业务语言,统一业务口径。采用预计算技术可打破查询时间随数据量线性增长的现状,提供稳定高效的查询性能。

研发目标

BI平台无缝集成Apache Kylin,托管Kylin用户、权限管理统一的安全认证,统一界面样式、操作流程,并对一些功能进行扩展改造以适配BI系统,整合SparkSQL、FlinkSQL、Presto等多种引擎结合起来实现智能路由,充分发挥每种引擎的长处优势,赋能用户极速数据分析体验,形成统一、一站式的大数据OLAP解决方案。

数据立方体构建引擎(Cube Build Engine):当前底层数据计算引擎支持、MapReduce、Spark、Flink等。

Rest Server:当前kylin采用的REST API、JDBC、ODBC接口提供web服务。

查询引擎(Query Engine):Rest Server接收查询请求后,解析sql语句,生成执行计划,然后转发查询请求到Hbase中,最后将结果返回给 Rest Server。

存储引擎:Kylin默认使用分布式、面向列的开源数据库Hbase作为存储库引擎。


设计架构

附注

  1. Mondrian为一个OLAP引擎,而且是一个ROLAP引擎,实现了以下规范:

  2. MDX(多维查询语言,相当于数据库的SQL)

  3. XMLA(通过SOAP使用OLAP)

  4. olap4j(Java API规范,相当于JDBC关系数据库)

附注

  1. 数据应用,包括智能报告、支持生成SQL或多维分析查询MDX语句组件、托拉拽自助式分析可视化组件等

  2. Mondrian Schema,数据多维分析模型

  3. Mondrian引擎,根据Schema生成标准SQL

  4. 目标数据源,包括关系型数据源、非关系型数据源、企业数据仓库

功能架构设计

附注:

  1. 存储引擎,Kylin默认使用分布式、面向列的开源数据库Hbase作为存储库引擎,基于Apache Kylin插件架构实现数据库存储接入。

  2. Presto,分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。


用户/权限

Kylin的Web模块使用Spring框架构建,在安全实现上选择了Spring Security。Spring Security是Spring项目组中用来提供安全认证服务的框架,它广泛支持各种身份验证模式,这些验证模型大多由第三方提供, Spring Security也提供了自己的一套验证功能。Kylin提供了三种用户验证方式“testing”、“ldap”和“saml”,依次为:自定义验证、LDAP验证和单点登录验证。

BI平台已实现一套成熟且完善的用户权限控制体系,为了便于系统的安全管理需要将Kylin用户权限管理和BI平台用户管理打通,可以利用现成的机制对Kylin的访问、资源的访问控制、修改做保护性的限制,使得大数据下的交互式报表分析成为可能。

数据模型

BI数据主题基于数据源元数据信息创建数据模型,支持简单可拖拉拽、灵活快速的方式实现可视化数据建模,需打通BI数据建模与Kylin数据建模功能,将BI数据模型适配至Kylin数据模型,支持事实表、维度、度量定义。

每次Cube构建都会从数据源中批量读取数据,而对于大多数业务场景来说,数据源中的数据处于不断增长的状态,为了支持Cube中的数据能够不断地得到更新,且无需重复地为已经处理过的历史数据构建Cube,Cube支持增量构建,每个Cube都关联着一个数据模型Model,增量构建Cube需要指定分割时间列。

对于维度表可选择配置是否将其以快照(Snapshot)形式存储到内存中以供查询。当维表小于300M时推荐启用,可以简化Cube计算提高效率。

CUBE配置

Cube功能改造:

  1. 页面,布局、样式统一、中文显示

  2. 用户权限,统一安全认证

  3. Cube管理查询

  4. 构建引擎,计算引擎默认选择Flink作为构建引擎


Cube运行监控

Apache Kylin通过日志和报警对任务进行监控、了解整体的运行情况,Kylin支持显示每个构建任务的进度条和构建状态,并可以展开明细,列出任务的每一步详细信息,数据模型下总Cube数,及空间占用。

  1. 状态

    禁用(Disabled) 只有定义,没有构建数据

    错误(ERROR) 报错并停止后续执行

    准备(Ready) 构建完成可以提供查询服务。

  2. 执行控制

    恢复(Resume) 在上次错误位置恢复执行

    放弃(Discard) 如要修改Cube或重新开始构建,可以放弃此次构建。

    构建(Build) 全量构建,增量构建采用

    刷新(Refresh) 对相应分区(Segment)历史数据进行重建

    合并(Merge) 合分区(Segment),提高查询性能


数据查询

Cube构建好以后,状态变为“READY”,就可以进行查询,查询语言为标准SQL SELECT语句。

只有当查询的模式跟Cube定义相匹配的时候,Kylin才能够使用Cube的数据来完成查询,“Group by”的列和“Where”条件里的列,必须是维度中定义的列,而SQL中的度量应跟Cube中定的义的度量一致。

Kylin提供了灵活的前端连接方式,包括Rest API、JDBC和ODBC。用户可以根据需要查询访问。

存储引擎

基于Apache Kylin较强可伸缩性的插件架构实现数据库存储接入。

Kylin旨在减少Hadoop在10亿及百亿规模以上数据级别的情况下的查询延迟,目前底层数据存储基于HBase,具有较强的可伸缩性。插件架构旨在使 Kylin 在计算框架,数据源和cube 存储方面具有可扩展性。从 v1 开始,Kylin 与作为计算框架的 Hadoop MapReduce,作为数据源的 Hive,作为存储的 HBase紧密结合。

后起之秀Pulsar VS. 传统强者Kafka?谁更强

Kylin 大数据下的OLAP解决方案和行业典型应用

Apache Kylin在美团数十亿数据OLAP场景下的实践

这篇关于一站式大数据解决方案分析与设计实践 | BI无缝整合Apache Kylin的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142937

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi