StarRocks实战——vivo基于 StarRocks 构建实时大数据平台

news2024/11/16 7:43:14

目录

前言

一、数据挑战

1.1  时效性挑战,业务分析决策需加速

1.2  访问量挑战,性能与稳定性亟待提高,支撑业务稳定运行

1.3 计算场景挑战,难以满足业务复杂查询需求

1.4. 运维挑战,用户查询体验需优化

二、OLAP 选型与实践

三、应用实践

3.1 数据链路优化

3.2  列更新

3.3 集群监控告警

3.4 集群弹性部署

四、结语

原文大佬写的这篇StarRocks 实时数仓建设案例有借鉴意义,这里摘抄下来用作学习和知识沉淀。

前言

     vivo需要基于移动终端的制造、物流、销售等各个方面的数据进行分析以满足业务决策。基于 Trino 的架构面临着数据时效、查询性能、并发能力、复杂运维等方面的瓶颈。

一、数据挑战

   在数字化演进的过程中,vivo面临着业务诉求和技术架构方面的新挑战,主要包括时效性要求提升、访问量大、计算场景复杂和运维难等问题。

  vivo原有数据平台是基于Trino+Hive 的架构来实现,通过 Trino 来抽取业务库里的数据(MySQL、Oracle、SQLserver 等),之后将抽取数据写入到 Hive 中,根据业务侧需求进行数仓的加工处理。

1.1  时效性挑战,业务分析决策需加速

    基于Trino+Hive架构的小时级数据时效性已经无法满足业务需求,业务侧需要数仓架构能够实时抽取业务侧数据并加工,从而实现上层报表的实时呈现,以便更好地支持相关的决策分析。

1.2  访问量挑战,性能与稳定性亟待提高,支撑业务稳定运行

     随着业务规模向全球发展,vivo 的分销代理系统覆盖用户量级飞速增长,营销、计价、订单、库存等业务系统均需要实时数据来保证销售业务精准稳定运营,这使得原有数仓架构的访问量持续增长,同时,随着各种大数据分析相关新业务的上线, Trino 负载越来越高,逐渐无法满足访问量持续增长带来的查询压力

1.3 计算场景挑战,难以满足业务复杂查询需求

    在业务侧的实际分析需求中,经常会有十几张表 Join 的场景,业界存在 Flink 和 Trino两种方案。

  方案一是在写入数仓前利用Flink等提前做好相关表的Join计算,将其加工成大宽表写入数仓中,但Join后的数据存储占用代价高

  方案二是直接将各个维度存储在数仓中,分析查询的时候,分析查询的时候再进行Join计算,但 Trino 在处理多表 Join 时性能一般,难以满足业务侧实际的查询需求。

  这两种方案都没有办法很好的平衡表Join的性能和数据存储占用的问题。

1.4. 运维挑战,用户查询体验需优化

    在实际运维使用Trino的过程中,发现Trino不支持高可用和多副本的问题,在业务高峰期,Trino 负载较高,会影响到数据平台的稳定性和用户查询体验,降低业务决策效率,甚至有可能收到用户对数据平台的投诉。

二、OLAP 选型与实践

    IT 部门调研了几款当前比较流行的 OLAP 引擎,包括 Trino、Clickhouse、StarRocks 和 Doris,并从查询延迟、SQL 类型、并发性能、Join性能和运维成本等多个维度进行了对比:

  • Trino 当前的查询性能和并发能力是无法满足需求的,且 Join 查询的能力也相对较弱。

  • Clickhouse 虽然查询延迟表现很优秀,但由于其支持的 SQL 类型为非标准 SQL,可能会涉及到较多的业务改造,同时其并发能力和 Join 能力也无法满足需求,且运维起来比较复杂。

  • StarRocks 在调研的各个维度上表现都非常好,能够很好地解决当前数仓架构所面临的问题。

  • Doris 在选型时还不支持向量化引擎,其查询表现和 StarRocks 相比还存在一定的差距。

    经过深入调研与测试,IT 部门总结了 StarRocks 的一些优势:

  • 查询性能优秀:查询延迟在亚秒级别,Join 性能优秀,能够满足 vivo 对实时大数据分析的需求

  • 使用方便:支持数据导入、导出等功能

  • 数据模型丰富:支持明细模型、聚合模型、更新模型、主键模型,其中主键模型能够很好地满足vivo大数据的场景

  • 运维成本低:支持高可用、在线扩缩容、tablet数据分片自动均衡

  基于以上的对比与考量,最终选择了使用 StarRocks 来作为数据平台的 OLAP 引擎。

三、应用实践

   在过去 2 年里,IT部门深度应用 StarRocks,并通过 StarRocks 进一步完善数据架构,帮助业务更好地使用和查询数据。

   IT部门对接的业务主要有可视化报表、BI 数据探索、营销分析、驾驶舱、数据大屏等,另外对应的还有研发系统和运维系统。

   vivo 的数据主要来自于手机相关的订单、ERP、MES 以及其他数据,在升级数据分析平台架构后,他们将StarRocks 应用在查询引擎中,为业务团队搭建数据桥梁,支撑上层业务应用更快地查询,更准地分析。

3.1 数据链路优化

   vivo的数据链路分为离线和实时,其中离线链路主要是通过 Trino 进行离线抽数到 Hive 中,经过 Hive 加工处理为大宽表,再推到 Clickhouse 中进行离线场景数据的查询;

   实时链路则通过 Flink 加工后写入到 Kafka 中,然后通过 Flink 消费处理写入到 StarRocks 中进行实时表的查询。

3.2  列更新

   StarRocks 的 Join 性能表现很好,频繁的Join查询会带来计算资源的大量消耗。基于此,vivo IT 部门使用Flink将多个维表打平为大宽表,写入 StarRocks 来进行查询,在节省 StarRocks 计算资源的同时,查询体验也更好。

    针对维表历史数据变更的场景,他们使用 StarRocks 提供的部分列更新(Partial Update)功能,在 Flink 写入主键模型大宽表的过程中,通过一些简单的配置开启部分列更新,实现以较小的代价灵活地更新大宽表中对应的列数据。

3.3 集群监控告警

  在常规的监控告警方面,由于StarRocks提供了丰富的Metrics接口,便于Prometheus 采集 StarRocks 集群各个节点的状态信息,以供 Grafana 生成各种可视化的监控大盘。

 另外,vivio IT部门还会对集群的审计SQL进行采集分析,通过ELK将各个FE节点的审计日志采集后写入到ES中,通过配置规则,筛选出其中的慢sql,推送到告警系统中,以提醒相应的同事关注及优化

3.4 集群弹性部署

   vivo的业务特点是业务访问量存在波峰波谷,且波峰波谷之间的访问量差异明显、时间界限明显,业务对访问持续时间更短的波峰期性能要求高,服务器资源使用率考核压力大。对于国内集群,vivo IT 部门采取了多集群的模式来分担高峰期的查询访问量通过负载均衡将流量分摊到主备集群。

    海外集群则依赖于 StarRocks 的多副本高可用机制,采用各个节点轮询升降配实现集群配置的扩缩容。具体的流程如下图所示,vivo IT 部门将整个流程通过代码的方式嵌入到运维平台里,通过程序自动化调度执行,提高扩缩容执行的效率。

四、结语

    StarRocks 具有便捷运维、便捷部署与弹性扩缩容能力,同时提供了卓越的查询性能,足以应对vivo 高并发查询场景。

参考文章:

vivo:基于 StarRocks 构建实时大数据分析平台,为业务搭建数据桥梁

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

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

相关文章

Huggingface初上手即ERNIE-gram句子相似性实战

大模型如火如荼的今天,不学点语言模型(LM)相关的技术实在是说不过去了。只不过由于过往项目用到LM较少,所以学习也主要停留在直面——动眼不动手的水平。Huggingface(HF)也是现在搞LM离不开的工具了。 出于…

Newtonsoft.Json

目录 引言 1、简单使用 1.1、官方案例 1.2、JsonConvert 2、特性 2.1、默认模式[JsonObject(MemberSerialization.OptIn/OptOut)] 2.2、序列化为集合JsonArrayAttribute/JsonDictionaryAttribute 2.3、序列化该元素JsonProperty 2.4、忽略元素JsonIgnoreAttribute 2.5、…

自动化构建平台(一)Linux下搭建私有代码仓库Gitblit的安装和使用详解

文章目录 前言一、Gitblit的安装和使用1、本地安装2、docker下安装3、Gitblit使用简介4、Gitblit仓库权限控制5、Gitblit邮件配置 总结 前言 代码版本管理,git模式应该是目前最流行的代码管理软件。目前支持git的管理软件有很多。 Gitblit是一个小型的代码仓库管理…

华为自动驾驶技术详解报告分享

ADS2.0首发搭载问界M5智驾版,城市NCA计划年底全国开通。2023年4月16日华为在智能汽车解决方案发布会上发布了最新的ADS2.0产品,硬件数量减少至27个(11个摄像头12个超声波雷达3个毫米波雷达1个激光雷达,ADS1.0有34个),车载计算平台改为MDC610&…

手把手教你魔改YOLOv9!

专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,主力高效涨点!!! 一、本文介绍 本文将一步步演示如何在YOLOv9中添加 / 替换新模块,寻找模型上的创新! 适用检测目标: YOLOv9模块…

供水管网水力模型的建立与应用

阐述管网水力模型构建流程,建立供水管网水力模型。通过数据录入生成管网基本拓扑结构及物理信息,在模型简化之后利用监测数据进行模型校核,保障管网模型满足精度要求。利用管网模型进行管网工况分析,掌握管网内压力分布与管道流速分布状态,提出管网运行薄弱环节。 给…

Docker容器(3)单容器管理

一、单容器 1.1概念简介 Docker三个重要概念: 仓库(Repository); 镜像(Image); 容器(Container). *Docker的三个重要概念是仓库(Repository)、镜像(Image)和容器(Container)**。具体如下: **镜像(Image)**:Docker镜像是创建容器的基础,它类似…

ToDesk - macOS 上轻便好用的远程控制

文章目录 官网 https://www.todesk.com个人版(免费)下载地址: https://www.todesk.com/download.html 支持系统类型 Windows、macOS、Android、iOS、Linux 应用大小为 320MB 左右 使用界面

具身智能计算系统,机器人时代的 Android | 新程序员

【导读】具身智能作为一种新兴的研究视角和方法论,正在刷新我们对智能本质及其发展的理解:传统的 AI 模型往往将智能视为一种独立于实体存在的抽象能力,而具身智能则主张智能是实体与其环境持续互动的结果。 本文深度剖析了具身智能计算系统…

Python进阶学习:Pandas--DataFrame--如何把几列数据合并成新的一列

Python进阶学习:Pandas–DataFrame–如何把几列数据合并成新的一列 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1…

回溯是怎么回事(算法村第十八关青铜挑战)

组合 77. 组合 - 力扣(LeetCode) 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],…

SpringCloud Alibaba(保姆级入门及操作)

第一章 微服务概念 1.0 科普一些术语 科普一下项目开发过程中常出现的术语,方便后续内容的理解。 **服务器:**分软件与硬件,软件:类型tomcat这种跑项目的程序, 硬件:用来部署项目的电脑(一般性能比个人电脑好) **服务:**操作系统上术语:一个程序,开发中术语:一个…

基于PyTorch深度学习实战入门系列-(1)环境配置

Pytorch环境安装配置2024最新版 下载安装Anaconda Anaconda下载网址:Free Download | Anaconda 创建虚拟环境 打开Anaconda Prompt # conda create -n 环境名 [需要的库] # 例子: conda create -n pytorchpy39 python3.9安装过程中需要确认输入 y 回车…

如何使用Potplayer远程访问本地群晖NAS搭建的WebDAV中的本地资源

文章目录 本教程解决的问题是:按照本教程方法操作后,达到的效果是:1 使用环境要求:2 配置webdav3 测试局域网使用potplayer访问webdav3 内网穿透,映射至公网4 使用固定地址在potplayer访问webdav ​ 国内流媒体平台的内…

mysql数据库学习笔记2——linux系统下安装,对库,表的基本操作语句

关于在linux系统下安装可以查看linux 安装mysql服务(超详细)_cannot write to-CSDN博客相关教程 对库的一些操作有 show databases查看有哪些数据库,create database “新建数据库名称” 创建新的数据库,use “数据库名称”切换…

透明加密软件的三种技术点介绍

常见的透明加密软件一般以透明加密技术为核心技术。透明加密主要有两种技术支撑,一种是核心层(也称为驱动层)的透明加密技术,另一种是应用层的透明加密技术。由于应用层存在着适应性和稳定性差等缺陷,与驱动层相比在安…

轻松爬取跨境电商商品数据集|电商跨境电商必备技术电商商品数据采集|数据采集API接口

跨境电商商品数据采集爬取方案 在之前写过一篇关于网页爬取的文章,使用的是亮数据这个工具,并且带领大家进行了注册,介绍了一些相关的功能。现在我们来探索一下如何爬取某大型电商商品数据集 很多电商科技企业,致力于通过各种高…

Windows环境下的调试器探究——硬件断点

与软件断点与内存断点不同,硬件断点不依赖被调试程序,而是依赖于CPU中的调试寄存器。 调试寄存器有7个,分别为Dr0~Dr7。 用户最多能够设置4个硬件断点,这是由于只有Dr0~Dr3用于存储线性地址。 其中,Dr4和Dr5是保留的…

【C++从0到王者】第四十七站:最小生成树

文章目录 一、最小生成树的概念1.概念2.最小生成树的构造方法 二、Kruskal算法1.算法思想2.代码实现 三、Prim算法1.算法思想2.代码实现3.试试所有节点为起始点 一、最小生成树的概念 1.概念 连通图:在无向图中,若从顶点v1到顶点v2有路径,则…

改进YOLO系列 | YOLOv5/v7 引入通用高效层聚合网络 GELAN | YOLOv9 新模块

今天的深度学习方法专注于如何设计最合适的目标函数,以使模型的预测结果最接近真实情况。同时,必须设计一个合适的架构,以便为预测提供足够的信息。现有方法忽视了一个事实,即当输入数据经过逐层特征提取和空间转换时,会丢失大量信息。本文将深入探讨数据通过深度网络传输…