StarRocks实战——华米科技埋点分析平台建设

目录

前言

一、原有方案及其痛点

二、引入StarRocks

三、方案改造

3.1 架构设计

3.2 数据流程

3.3 性能指标

3.4 改造收益


前言

     华米科技是一家基于云的健康服务提供商,每天都会有海量的埋点数据,以往基于HBase建设的埋点计算分析项目往往效率上会相对比较低,查询方式不够灵活 。

    在埋点分析中,用户往往是基于单维度或者多维度组合去观测某个指标,这里的维度可以是时间,事件名称,城市或者设备属性等,指标可以是用户量、某个埋点的次数等。在此海量埋点数据背景下,如何比较灵活,高效的完成维度+指标的计算,满足用户快速查询分析的需求,是一个值得探索的问题。基于高效的OLAP引擎建设埋点分析平台就成为了业务发展中的重要一环。

一、原有方案及其痛点

    在之前的架构中,华米科技的埋点数据统计相关信息,需要根据统计的指标,优先将需要计算的指标(例如PV、UV)通过Spark /Hive进行预计算操作,然后写入到HBase中,对下游相关用户提供点查的能力。

对于该方案,以下三点是较为不便的:

  • 在HBase中,数据以KV形式存储,只能提供点查能力,不具备复杂的统计分析能力;
  • 无法使用Bitmap 相关技术,将需要的指标事先计算出来,方式不够灵活,不能做集合操作;
  • 流程链路较长,维护复杂度高,不具备模型抽象能力,业务升级有所不便

二、引入StarRocks

   针对数据存储层的问题,着力于寻找一款高性能、简单易维护的数据库产品来替换已有的 Spark + HBase 架构,同时也希望在业务层上能突破HBase点查的限制,通过实时多表关联的方式拓展业务层的需求。

    目前市面上的 OLAP 数据库产品很多,诸如 Impala、Druid、ClickHouse 及 StarRocks。在经过一系列的对比之后,选择了 StarRocks 来作为 华米的 OLAP 引擎,替换原有的HBase成为存储层的新选择。

    从上面的对比可以看出,StarRocks是一款极速全场景 MPP企业级数据库产品,具备水平在线扩缩容,兼容Mysql协议和Mysql生态,提供全面向量化引擎与多种数据源联邦查询等重要特性,在全场景OLAP业务上提供统一的解决方案,适用于对性能,实时性,并发能力和灵活性有较高要求的各类应用场景。

三、方案改造

3.1 架构设计

   当前埋点数据经由网关转入kafka,采用Hudi on Flink 的模式进行数据清洗,过滤,转换,基于流式数据湖构建OLAP的预处理层。根据数据特性和写入的性能要求以及成本的权衡,分别基于Hudi 的 Upsert 和 Append 模式构建 DWD 层(借助 Hudi 的去重、追加能力),定时离线处理数据转入DWS,考虑数仓的整体架构以及成本优化,将DWS数据定时离线导入到StarRocks中,最后经由统一的查询分析平台查询StarRocks数据。

3.2 数据流程

 详细流程如下:

(1)对原始数据进行数据转换处理,然后根据数据特性,分别以Upsert 模式和Append模式接入Hudi(对数据重复不敏感的业务数据直接以Append 模式高效写入Hudi)

(2)将产出的数据经由 Broker Load 写入带有Btimap字段的聚合模型,生成业务Btimap数据;

(3)根据业务需求,自定义对Btimap进行集合操作(当前的应用场景为生成PV,UV等数据);

(4)用户根据查询分析平台进行自助业务指标查询;

3.3 性能指标

  通过StarRocks的监控平台可以看到查询的平均耗时在100ms左右,P99延迟大概在250ms 左右,能够很好地满足埋点数据分析平台业务上的需求。

3.4 改造收益

  • 高效:能够快速响应用户的查询分析需求,很多大查询效率从分钟级别降低至秒级。
  • 灵活:满足多维度、多时间段自由组合的指标统计分析,不需要提前计算冗余统计指标。
  • 节约空间:StarRocks 自身的高效存储结构,同等业务量的数据存储成本较以往下降20%;
  • 简单:相较于 ClickHouse,维护管理所需的人力成本有所降低。
  • 便捷:用户自助查询便捷,取数体验有所提升,部分指标点查速度从之前的分钟级降低到秒级,部分指标可以达到毫秒级。

参考文章:

https://mp.weixin.qq.com/s/ci9iRMz4FvqcXs5FtBSxKg

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024.4.2-day07-CSS 盒子模型(显示模式、盒子模型)

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 作业 2024.4.2 学习笔记CSS标签元素显示模式1 块元素2 行内元素3 行内块元素4…

Linux | MySQL安装Workbench图形化

环境:rhel8 MySQL8 下载软件包 官网软件包地址: MySQL :: 下载 MySQL Workbenchhttps://dev.mysql.com/downloads/workbench/我这里下载的是 mysql-workbench-community-8.0.24-1.el8.x86_64.rpm 解决依赖 用rpm安装发现缺少依赖 [rooth…

3dmax经常染失败?优化方法提升染质量!

在三维建模和渲染的过程中,优化模型和场景的效率是至关重要的。以下是一些提升效率的方法: 模型简化:在创建模型时,应尽量减少使用的命令和修改器的数量。这是因为命令和修改器越多,消耗的内存和CPU资源也就越多&…

FJSP:巨型犰狳优化算法(Giant Armadillo Optimization,GAO)求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题(Flexible Job Shop Scheduling Problem,FJSP),是一种经典的组合优化问题。在FJSP问题中,有多个作业需要在多个机器上进行加工,每个作业由一系列工序组成&a…

大米自动化生产线设备:现代粮食加工的核心力量

随着科技的不断进步和粮食加工行业的快速发展,大米自动化生产线设备在现代粮食加工中的地位愈发重要。这些设备不仅大大提高了生产效率,还保证了产品的质量和安全,成为了现代粮食加工行业不可或缺的核心力量。 一、自动化生产线设备助力效率提…

达托机器人(DRB)平台的安全性和前景是否可靠?

在当今数字化时代,技术创新不仅是企业成功的关键,也是整个行业的驱动力。在这个背景下,达托机器人(DRB)脱颖而出,以其创世团队的坚实基础和平台的可靠前景,引起了业界的广泛关注。 首先&#xf…

消息队列MQ(面试题:为什么使用MQ)

一、什么是mq? MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信,解耦。 二、常见的mq产品 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq RabbitMQ: One broker …

人工智能、深度伪造和数字身份:企业网络安全的新前沿

深度伪造(Deepfakes)的出现打响了网络安全军备竞赛的发令枪。对其影响的偏执已经波及到一系列领域,包括政治错误信息、假新闻和社交媒体操纵。 深度伪造将加剧公共领域对信任和沟通的本已严峻的压力。这将理所当然地引起监管机构和政策制定者…

java.lang.NoClassDefFoundError: javax/validation/constraints/Min

1、报错截图 2、解决办法 添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency>

浮点数在内存中的存储【详解】

浮点数在内存中的存储 浮点数存储规则小数点后数值的二进制转换float和double存储图示优化存储方案E不全为0或不全为1E全为0E全为1 浮点数存储规则 大家都知道整型数据是以补码的方式存放在内存中。以下几个概念是需要知道的&#xff1a; 原码&#xff0c;补码&#xff0c;反…

C++入门语法(命名空间缺省函数函数重载引用内联函数nullptr)

目录 前言 1. 什么是C 2. C关键字 3. 命名空间 3.1 命名空间的定义 3.2 命名空间的使用 4. C输入和输出 5. 缺省函数 5.1 概念 5.2 缺省参数分类 6. 函数重载 6.1 概念 6.2 为何C支持函数重载 7. 引用 7.1 概念 7.2 特性 7.3 常引用 7.4 引用与指针的区别 7…

docker-compose安装dozzle

dozzle是一个docker日志的webui工具 安装配置 docker-compose.yaml version: "3" services:dozzle:container_name: dozzleimage: amir20/dozzle:v4.11.4volumes:- /var/run/docker.sock:/var/run/docker.sockrestart: unless-stoppedports:- 20342:8080networks:cu…

人工智能 - 服务于谁?

人工智能服务于谁&#xff1f; 人工智能服务于生存&#xff0c;其最终就是服务于战争&#xff08;热战、技术战、经济战&#xff09; 反正就是为了活着而战的决策。 既然人工智能所有结果&#xff0c;来自大数据的分挖掘&#xff08;分析&#xff09;也就是数据的应用&#x…

施耐德中高端PLC仿真器

参考文档&#xff1a;《Unity Pro PLC 仿真器》EIO0000001719.06 &#xff08;Control Expert 就是 Unity Pro 最新版本换了个名字&#xff0c;两者操作基本相同&#xff09; https://www.schneider-electric.cn/zh/download/document/EIO0000001719/ 1. 适用 PLC 这里使用的…

idea常用配置

IDEA设置全局配置 参考&#xff1a;IDEA设置全局配置_idea如何打开一个项目,全局设置-CSDN博客 idea提交代码到git或svn上时&#xff0c;怎么忽略.class、.iml文件和文件夹等不必要的文件 参考&#xff1a;idea提交代码到git或svn上时&#xff0c;怎么忽略.class、.iml文件和文…

【Frida】【Android】 工具篇:查壳工具大赏

&#x1f6eb; 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

MIT6.828 Lab1 Xv6 and Unix utilities

2023MIT6.828 lab-1 官方地址 一、sleep 实验内容 调用sleep&#xff08;系统调用&#xff09;编写用户级别程序能暂停特定时常的系统滴答程序保存在user/sleep.c 实验过程 xv6的参数传递 查看官方文档提示的文件中&#xff0c;多采用如下定义&#xff1a; int main(in…

window安装maven和hadoop3.1.4

前面的文章已讲解如何安装idea和进行基本设置&#xff0c;本文主要带着大家安装配置好maven和hadoop. 大家不用去官网下载&#xff0c;直接使用我发给大家的压缩文件&#xff0c;注意解压后的文件夹不要放在中文目录下&#xff0c;课堂上我们讲解过原因。 这是我电脑上的路径&a…

#QT项目实战(天气预报)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a; 3.记录&#xff1a; &#xff08;1&#xff09;调用API的Url a.调用API获取IP whois.pconline.com.cn/ipJson.jsp?iphttp://whois.pconline.com.cn/ipJson.jsp?ip if(window.IPCallBack) {IPCallBack({"ip":&quo…

Java 外观模式

外观模式隐藏了系统的复杂性。 它为客户端提供了一个简单的接口&#xff0c;客户端使用接口与系统交互。 外观模式是结构型模式。 例子 class ShapeFacade {interface Shape {void draw();}class Rectangle implements Shape {Overridepublic void draw() {System.out.prin…