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.rhkb.cn/news/272057.html

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

相关文章

安卓7原生相机切到视频崩溃

目录 1、查看日志 2、分析日志、提取重点 3、寻找解决方法 author daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 daisy.skye_嵌入式,Linux,Qt-CSDN博客daisy.skye擅长嵌入式,Linux,Qt,等方面的知识https://blog.csdn.net/qq_40715266?typeblog 1、查看日志 由于安…

基于YOLOv8深度学习的智能道路裂缝检测与分析系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测、目标分割

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

vue 在线预览word

1 mammoth 先找的是mammoth这个插件yarn add mammoth,版本是1,7.0 参考网上的示例使用如下: import mammoth from "mammoth"; const vHtml ref("") const readExcelFromRemoteFile (url) >{var xhr new XMLHttpRequest();xhr.open("…

2024 RubyMine 激活,分享几个RubyMine 激活的方案

文章目录 RubyMine 公司简介我这边使用RubyMine 的理由RubyMine 2023.3 最新变化AI Assistant 正式版对 AI 生成名称建议的支持改进了 Ruby 上下文单元测试生成 RailsRails 应用程序和引擎的自定义路径Rails 路径的自动导入对存储在默认位置之外的模型、控制器和邮件器的代码洞…

gitte上传项目操作

一、项目背景 打比赛,多个人合作,选择github,顺便了解下git的代码操作。 二、步骤 2.1 新建仓库 2.2 打开你要上传到库的项目 2.2 选择 Git Bash Here 输入指令 git init 2.3 查找github的仓库 2.2 将文件放入暂缓区 git add . 2.3填写…

在WSL2中安装多个Ubuntu教程

文章目录 前言一、前期准备1、WSL安装2、Docker安装 二、安装第二个Ubuntu系统1.切换为WSL22.获取Ubuntu16.04的tar文件从容器中导出tar 3. 将tar文件导入WSL4. 设置默认用户 总结 前言 适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能,可用于在 Wind…

C++的面向诗篇:类的叙事与对象的旋律

个人主页:日刷百题 系列专栏:〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 🌎欢迎各位→点赞👍收藏⭐️留言📝 ​ ​ 一、面向对象的定义 学习C语言时,我们就经常听说C语言是面向过程的,…

(未解决)macOS matplotlib 中文是方框

reference: Mac OS系统下实现python matplotlib包绘图显示中文(亲测有效)_mac plt 中文值-CSDN博客 module ‘matplotlib.font_manager‘ has no attribute ‘_rebuild‘解决方法_font_manager未解析-CSDN博客 # 问题描述(笑死 显而易见 # solve 找到…

js【详解】原型 vs 原型链

原型 每个 class 都有显示原型 prototype每个实例都有隐式原型_proto_实例的_proto_指向对应 class 的 prototype 如下范例: class Student 创建了 实例 xialuo 获取属性 xialuo.name 或执行方法 xialuo.sayhi()时,先在自身属性和方法寻找&#xff0…

llama-index调用qwen大模型实现RAG

背景 llama-index在实现RAG方案的时候多是用的llama等英文大模型,对于国内的诸多模型案例较少,本次将使用qwen大模型实现llama-index的RAG方案。 环境配置 (1)pip包 llamaindex需要预装很多包,这里先把我成功的案例…

论文阅读之Multimodal Chain-of-Thought Reasoning in Language Models

文章目录 简介摘要引言多模态思维链推理的挑战多模态CoT框架多模态CoT模型架构细节编码模块融合模块解码模块 实验结果总结 简介 本文主要对2023一篇论文《Multimodal Chain-of-Thought Reasoning in Language Models》主要内容进行介绍。 摘要 大型语言模型(LLM…

css 背景图片居中显示

background 简写 background: #ffffff url(https://profile-avatar.csdnimg.cn/b9abdd57de464582860bf8ade52373b6_misnice.jpg) center center / 100% no-repeat;效果如图:

Linux mmap系统调用

文章目录 前言一、mmap()函数简介二、代码演示2.1 mmap使用场景2.2 私有匿名映射2.3 私有文件映射2.4 共享匿名映射2.5 共享文件映射 参考 前言 NAMEmmap, munmap - map or unmap files or devices into memorySYNOPSIS#include <sys/mman.h>void *mmap(void *addr, siz…

Linux服务器安装jdk

背景: 安装JDK是我们java程序在服务器运行的必要条件,下面描述几个简单的命令就可再服务器上成功安装jdk 命令总览: yum update -y yum list | grep jdk yum -y install java-1.8.0-openjdk java -version 1.查看可安装版本 yum list | grep jdk 2.如果查不到可先进行 yum upd…

could not publish server configuration for tomcat at localhost

1&#xff0c;报错信息如图&#xff1a; 2&#xff0c;找到servers双击&#xff0c;选择Modules&#xff0c;如果有两个webModules ,remove一个&#xff0c; 3&#xff0c;如果重启还是报错&#xff0c;干脆两个都remove&#xff0c;双击tomcat服务add And Remove重新添加

游戏引擎渲染流程

一、渲染概述 我们首先看到渲染技术的发展 游戏渲染面临的挑战&#xff1a; 一个容器中同一时刻有大量的游戏对象需要进行渲染&#xff0c;并且不同对象渲染的形式、算法还有所差异&#xff0c;这些使得游戏的绘制系统变得非常复杂&#xff1b;其次&#xff0c;游戏引擎的渲染…

iOS增量报告生成方案

一&#xff0c;iOS覆盖率报告生成逻辑 iOS覆盖率报告生成与Android有很大的不同&#xff0c;主要的生成逻辑如下&#xff1a; 1&#xff0c;将profraw文件&#xff0c;通过命令xcrun llvm-profdata merge -sparse转换成profdata; 2&#xff0c;再将profdata文件&#xff0c;通…

Django会话

一、Cookie介绍 1.1、背景介绍 HTTP协议有一个特性就是无状态的,是指协议对于交互性场景没有记忆能力 随着动态交互的web应用的出现,HTTP的无状态特性严重阻碍了动态交互应用程序的发展,例如一些购物网站在进行购物时候都会进行了页面跳转/刷新,按照HTTP的无状态协议岂不…

云计算 3月8号 (wordpress的搭建)

项目wordpress 实验目的&#xff1a; 熟悉yum和编译安装操作 锻炼关联性思维&#xff0c;便于以后做项目 nginx 编译安装 1、安装源码包 [rootlinux-server ~]# yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel [rootlinux-server ~]# wget http://nginx.…

两天学会微服务网关Gateway-Gateway路由规则

锋哥原创的微服务网关Gateway视频教程&#xff1a; Gateway微服务网关视频教程&#xff08;无废话版&#xff09;_哔哩哔哩_bilibiliGateway微服务网关视频教程&#xff08;无废话版&#xff09;共计17条视频&#xff0c;包括&#xff1a;1_Gateway简介、2_Gateway工作原理、3…