StarRocks实战——欢聚集团极速的数据分析能力

目录

一、大数据平台架构

二、OLAP选型及改进

三、StarRocks 经验沉淀

3.1 资源隔离,助力业务推广

3.1.1 面临的挑战

3.1.2 整体效果

3.2 稳定优先,监控先行,优化运维

3.3降低门槛,不折腾用户

3.3.1 与现有的平台做打通

3.3.2 使用流程产品化

3.3.3 主动深入业务

四、近期规划


  欢聚集团面向的是各个国家的用户市场,数据分析场景就要因地制宜。体现到大数据平台这一层,数据来源多样化,数据分析场景复杂,数据模型复用率低。在这样的业务现状下,原有的 OLAP 引擎已无法满足欢聚集团的整体数据分析需求,下文主要介绍如何基于StarRocks 构建灵活、极速、统一的全新 OLAP 分析平台。

一、大数据平台架构

   数据平台支撑了从数据埋点上报到数据应用的全链路数据服务,提供了埋点管理平台、离线计算调度系统、实时计算平台、数据应用系统等众多数据产品, 实现闭环的一站式大数据平台服务。

   总体架构分层上,可以分为数据集成、存储、计算、分析、应用。OLAP系统是分析层的核心引擎,支撑Ad-Hoc自助分析、多维分析数据服务、BI报表、标签画像等分析场景。

二、OLAP选型及改进

  此前,我们使用 ClickHouse 作为 OLAP 引擎,但随着业务对灵活性要求越来越高, ClickHouse 遇到了难以逾越的瓶颈。因此,我们重新梳理了需求,试图寻找一款更加适合欢聚集团的 OLAP 引擎。针对出海业务的特殊性,大数据团队需要提供非常灵活多变、轻量、高效、包容的数据分析服务:

  • 灵活多变: 相比数据量和性能,灵活性更重要

  • 轻量: 架构要简单,最好能一个引擎搞定所有场景

  • 高效: 使用门槛要低,各种业务都能快速接入使用

  • 包容: 能良好地兼容大数据生态

具体的诉求是:

  • 支持ROLAP、MOLAP分析场景
  • 数据模型支持宽表、星型模型、雪花模型等
  • 同时兼顾数据量(PB)、查询性能(秒级)、灵活性(导数与查询灵活多变)
  • 数据时效性上支持离线批处理、实时流处理秒级可见
  • 数据写入支持Append、Overwrite、Upsert、Delete
  • 高可用、灵活扩缩容、低运维成本
  • 较高的QPS(高并发)
  • 支持分析Hadoop上的数据

  在这种“既要又要还要”的诉求下,选型很困难。OLAP 常用的技术架构有预计算、MPP、索引。我们调研了这三类架构的典型 OLAP 引擎:

  • 预计算架构:代表引擎 Apache Kylin/Apache Druid ,查询性能优越,但缺少灵活性。

  • MPP 架构:Presto/Apache Impala/SparkSQL,灵活性很好,但性能较差,一般在分钟级。

  • 索引架构:ES/ClickHouse,单表查询性能优越,但是 Join 几乎不可用,只能用宽表模型。

 单一技术架构的引擎很难满足需求,因此我们把目标瞄向混合架构引擎:同时具有预计算、MPP 计算、支持索引的引擎。目前市面上这类引擎不多,比较成熟的有 Apache Doris 和 StarRocks。最后选择 StarRocks,原因是 StarRocks 的社区更加活跃,产品的背后还有一支大胆创新的强大技术团队,响应非常及时,我们对 StarRocks 的未来更有信心。

  如上图所示,我们的 OLAP 系统架构非常简单轻量,与大数据平台上下游都做了整合。

 StarRocks原生提供丰富的数据导入方式,Http模式的 Stream load、读 HDFS的Broker load、读消息中间件的 Routing load、Flink Connector、DataX、外表支持等,方便和大数据生态完成数据集成。StarRocks查询支持最为通用的MySQL JDBC 协议,集成到各种BI,数据应用系统几乎无成本。

  目前我们内部整合了 OLAP 系统,下线了 ClickHouse,统一使用 StarRocks 作为解决方案,已经在实时查询、报表分析、监控等业务场景中大力推广,支撑了数百 TB 数据,数十个业务方,数百万查询量/天,总体查询性能 99 分位 200ms。

三、StarRocks 经验沉淀

3.1 资源隔离,助力业务推广

3.1.1 面临的挑战

  我们的 StarRocks 集群目前都是多业务共用,其中部分业务场景是大查询。例如 BI 报表一个Dashboard(数据看板)包含多个图表,打开 Dashboard时,所有图表一起加载,并且一般都是偏分析的SQL,资源开销较大。此时集群资源就有一个高峰,集群查询性能衰减,特别是小查询也会受到严重影响。下图中可以看到很多毛刺,都是大查询导致。

  因为这个问题,难以保障数据基线 SLA,一段时间里我们不大敢把 StarRocks 大范围推广给业务使用。如果给每个业务搭建专用 StarRocks 集群,成本压力又太大。

  StarRocks 2.2 版本开始支持资源隔离,支持配置资源组并分配资源 Quota,支持用户和资源组的绑定,可以有效将大查询业务场景隔离到专用的资源组,避免影响其他小查询。我们在 2022 年 Q2 上线了资源隔离功能,目前线上已经全部开启资源隔离,正在做OLAP业务推广。

3.1.2 整体效果

   确认资源组能有效隔离大查询、保护小查询。

3.2 稳定优先,监控先行,优化运维

   我们的集群稳定性 SLA 主要包括:集群可用性 SLA 3个9,集群查询性能 95分位 3s,BI 业务慢查询率 1.5%。

  我们部署了社区提供的prometheus+grafana监控FE、 BE的metrics监控方案,同时配置了告警

另外在实践过程中,有时会收到业务反馈的sql慢查询问题,排查其原因,主要可以分为两类:

  • 表结构不合理:数据倾斜、分桶数量不合理,并行度不够。

  • SQL 不合理:索引、物化视图无法命中,分桶、分区裁剪失效。

这些问题会影响查询性能和慢查询率SLA。为了发现和解决这些问题,做到提前感知、提前优化,我们需要监控所有的查询日志,并及时通知用户优化表结构和查询 SQL

解决方案

  StarRocks 查询状态监控。通过解析 audit.log 结合 explain SQL 的信息,统计每个慢 SQL的执行时间、内存使用、返回行数、扫描数据量等情况,对慢查询做到及时预警。主要流程可分为以下三个步骤:

1.解析audit.log

   FE 的 audit.log 提供了查询类型,客户端 IP,查询用户名称,数据库名称,状态,扫描的数据大小,扫描的数据行数,结果数据行数,查询 ID(通过 ID 去 BE 日志找对应的查询资源),查询的 SQL;

2. 获取 Plan fragment

 通过查询该 SQL 的逻辑执行计划(explain + sql);

3. 统计资源消耗

通过 fragment_id 查询当前物理执行计划所消费的资源:

最终实现方案如下图所示:

  filebeat 采集 audit.log 和 be.INFO 日志发送到 Apache Kafka,然后 Flink SQL 聚合 query_id 和 fragment 的数据,并将数据写入到 MySQL。

  整套监控系统已经在集团上线并平稳运行。上线后极大减轻了我们的运维工作,基本可以做到提前预防问题、发现问题、解决问题,有效保障了 SLA。

3.3降低门槛,不折腾用户

  在以往的工作经验中,做平台的和上层用户会存在一些沟通障碍,用户往往不了解平台的架构,技术,能力,使用流程。平台技术做得再好,最终还是要通过服务用户来产生价值。为了能更好地服务用户,我们做了很多降低门槛的工作。

3.3.1 与现有的平台做打通

  • 离线导数,目前已经和离线调度系统打通,固化了一个离线作业类型,通过 Broker load 的方式导数,Hive 表可以一键订阅到 StarRocks。
  •  实时导数,目前用户可以通过 Flink-Connector-StarRocks 的方式,用 Jar 或者 Flink SQL 快速实现导数。
  •  Hive 外表,支持使用 Hive 外表的方式,直接用 StarRocks 查询分析 Hive 数据,省掉导数流程,适合某些临时性质的需求。
  •  数据应用系统,目前已经和 BI分析系统、自助分析系统打通,使用 MySQL JDBC 的方式接入。
  • 业务系统,目前提供 API 和 MySQL JDBC 两种方式给业务系统直接查询。

3.3.2 使用流程产品化

  目前我们实现了一个 web 系统 StarRocks 管控台,用户在页面上自助申请用户、建库、建表、权限等。

3.3.3 主动深入业务

   目前我们 OLAP团队每周都会参加业务的产品周会,关注业务动向和痛点,从 OLAP 角度提供解决思路和咨询服务。同时增加与产品和业务团队的沟通,减少彼此之间的认知屏障。

四、近期规划

  我们最终的目的是为了更好地满足用户的分析查询场景,提高效率,服务业务。在未来使用 StarRocks 过程中,主要的优化方向有以下几点:

  • 1.新增建表的审计功能,合理使用分区分桶字段,加速数据查询
  • 2.通过对用户的行为分析,统计出报表高频的查询场景,使用物化视图进行数据的预聚合,进一步提升查询性能
  • 3.优化多表Join分析查询场景的性能,使用Colocation Join ,通过预先的数据分布,减少节点间网络传输带来的延迟开销,进一步提升查询性能

参考文章:

欢聚集团 × StarRocks: 灵活、统一、极速的数据分析新范式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/737004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端框架的发展史可以追溯到早期的静态网页时代

前端框架的发展史可以追溯到早期的静态网页时代。以下是前端框架的主要发展阶段: 静态网页时代:在互联网的初期,网页主要由HTML、CSS和JavaScript构成。这些网页是静态的,没有复杂的交互和动态内容。 原生JavaScript时代&#xf…

LeetCode刷题--- 环绕字符串中唯一的子字符串

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构 ​​​http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述动态规划算法…

分库分表浅析原理

数据库存放数据大了,查询等操作就会存在瓶颈,怎么办? 1. 如果是单张表数据大了,可以在原有库上新建几张表table_0、table_1、table_2、.....table_n 写程序对数据进行分表: --这里提供一种一种分表策略,这里只需维护…

容器安全是什么?

容器安全定义 容器安全是指保护容器的完整性。这包括从其保管的应用到其所依赖的基础架构等全部内容。容器安全需要完整且持续。通常而言,企业拥有持续的容器安全涵盖两方面: 保护容器流水线和应用保护容器部署环境和基础架构 如何将安全内置于容器流…

模板方法模式在交易策略开发中的应用

文章目录 一、模板方法模式的特点和优点二、交易策略开发的常见模板方法三、模板方法模式在交易策略应用方面四、模板方法模式开发交易策略的代码 一、模板方法模式的特点和优点 特点 模板方法模式是一种行为设计模式,它定义了一个算法的骨架,将一些步…

Java开发从入门到精通(一):Java的基础语法项目案例

Java大数据开发和安全开发 Java 案例练习案例一:买飞机票案例二:开发验证码案例三:评委打分案例四:数字加密案例五:数组拷贝案例六: 抢红包案例七:找素数案例八:模拟双色球[拓展案例] Java 案例练习 案例一:买飞机票 分析: 方法是需要接收数据?需要接收机票原价、当前月份、舱…

新手如何快速上手学习单片机?

读者朋友能容我,不使博文负真心 新开专栏,期待与诸君共享精彩 个人主页:17_Kevin-CSDN博客 专栏:《单片机》 学习单片机是一个有趣且有挑战性的过程。单片机是一种微控制器,广泛应用于各种电子设备和嵌入式系统中。在这…

IOS面试题object-c 61-70

61. 阐述isKindOfClass、isMemberOfClass、selector作用分别是什么?isKindOfClass:作用是某个对象属于某个类型或者继承自某类型。 isMemberOfClass:某个对象确切属于某个类型。 selector:通过方法名,获取在内存中的函…

Linux 驱动 | 高级驱动 | I2C子系统

Linux 驱动 | 高级驱动 | I2C子系统 学习笔记 主要内容: 1,i2c协议和时序 2,i2c子系统软件框架 3,i2c从设备驱动编写方式–不考虑具体的硬件 4,mpu6050硬件连接,陀螺仪和加速度工作原理,它们的应用 5,mpu6050数据和获取 6,mpu6050从设备驱动编写 I2C驱动开发: I2C…

#QT(本地音乐播放器)

1.IDE:QTCreator 2.实验:之前做的音乐播放器只做了一个界面,是因为跟的课程发现到后面需要付费,并且WINGW6.2.0运行QMediaPlayer时无法运行,会崩溃,现在退一步用WINGW5.12.2做一个本地音乐播放器 3.记录&am…

pyside6 pytq PyDracula QVideoWidget视频只有画面没有声音

解决方案: 先不使用框架,纯pyside6代码,如果添加视频有画面有声音,那可以排除是硬件问题,如果没有画面只有声音,可能是视频解码器无法解码,换个格式的视频文件如果只有使用PyDracula 出问题&am…

[论文笔记] Open-sora 2、视频数据集介绍 MSR-VTT

MSR-VTT COVE - Computer Vision Exchange 论文参考:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/06/cvpr16.msr-vtt.tmei_-1.pdf 用于视频理解的大规模视频基准,特别是将视频翻译为文本的新兴任务。这是通过从商业视频搜索引擎收集 257 个热门查询…

Rust多线程访问数据,推荐使用mutex还是channel?

在Rust中,选择使用互斥锁(mutex)还是通道(channel)来进行多线程间的数据访问,主要取决于你的具体需求和数据共享的模式。 互斥锁(Mutex) 互斥锁是一种同步原语,用于保护…

小蓝的钥匙(蓝桥杯错排)

现在有28个小朋友,每个人手上有一把钥匙,每一个钥匙都只能打开自己的房间门,现在将所有钥匙都收上来,然后再随机打乱分给每个小朋友,也就是有28!的分法,请问现在其中14个小朋友的钥匙能恰好打开…

Mysql8的优化(DBA)

Mysql8的优化 1、Mysql的安装优化1.1 修改配置参数(命令行、配件文件)1.1.1 命令行修改配置参数1.1.2 参数持久化1.1.3 Mysql多实例启动,以及配置密码文件 1.2 查询表的相关参数,以及表空间管理 2、Mysql高级优化(SQL&…

Android中显式Intent和隐式Intent的区别

1、intent的中文名 称是意图,Intent是各个组件之间信息沟通的桥梁, 既能在Activity之间沟通,又能在Activity与Service之间沟通,也能在Activity与Broadcast之间沟通 **intent组成元素的列表说明**2、显式Intent,直接指定…

编译支持国密的抓包工具 WireShark

目录 前言WireShark支持国密的 WireShark小结前言 在上一篇文章支持国密的 Web 服务器中,我们搭建了支持国密的 Web 服务器,但是,我们使用 360 安全浏览器去访问,却出现了错误: 是我们的 Web 服务器没有配置好?在这里插入图片描述还是 360 安全浏览器不支持国密?还是两…

C++面试宝典一部分

今天整理书籍资料时,发现多年前打印的面试资料,拍照分享给大家。

基于网络爬虫的购物平台价格监测系统的设计与实现

通过对网络爬虫的购物平台价格监测系统的业务流程进行梳理可知,网络爬虫的购物平台价格监测系统主要由前台买家模块、后台卖家模块以及管理员模块构成。前台功能包含登录功能、注册功能、系统首页功能、唯品会商品详情浏览、唯品会商品收藏、唯品会商品点赞、唯品会…

[蓝桥杯Java组] k倍区间

题目描述 给定一个长度为N的数列&#xff0c;A1, A2, … AN&#xff0c;如果其中一段连续的子序列Ai, Ai1, … Aj(i < j)之和是K的倍数&#xff0c;我们就称这个区间[i, j]是K倍区间。 你能求出数列中总共有多少个K倍区间吗&#xff1f; 输入&#xff1a; 第一行包含两个…