易点天下基于 StarRocks 全面构建实时离线一体的湖仓方案

news/2024/4/20 15:42:55/文章来源:https://blog.csdn.net/StarRocks/article/details/129146591

作者:易点天下数据平台团队

易点天下是一家技术驱动发展的企业国际化智能营销服务公司,致力于为客户提供全球营销推广服务,通过效果营销、品牌塑造、垂直行业解决方案等一体化服务,帮助企业在全球范围内高效地获取用户、提升品牌知名度、实现商业化变现。

目前,易点天下累计服务客户超过5000家,其中包括华为、阿里巴巴、腾讯、网易、字节跳动、百度、快手、爱奇艺、SHEIN、Lazada等知名企业。

易点天下始终秉持"科技使世界变得更平"的企业使命,积极采用大数据和人工智能技术来落地和推动业务的发展。

随着公司业务的扩展,我们的数据分析工作遇到了一些痛点:

1、数据处理需求日益增多:每天需要处理几十T 、近千亿的数据量;

2、数据分析的复杂度提高:如用户留存、 LTV 这一类的复杂指标,往往需要多表关联查询和实时查询,目前应用的组件不能满足业务的查询需求;

3、技术组件较多:公司有多个数据分析平台,采用的技术组件也非常多,包括 ClickHouse、Kafka、Flink、Spark、Hive 等,运营维护成本较高。

4、当前架构基本以离线为主,实时数据处理架构薄弱。

经过现状分析后,我们开始设计数据仓库的标准化规范,并寻找一款集实时离线为一体的数仓统一解决方案,对数仓进行统一规划和建设。

#01 数仓建设规范

我们从数据分层、业务类和数据域定义、数据指标、数据模型规范、模型衡量指标五个方面进行了数仓的规范建设。

1、数据分层:包括数据引入层 ODS 、明细数据层 DWD 、汇总数据层 DWS 、数据应用层 ADS 及维度层 DIM 。

2、业务类和数据域定义:此定义主要用于规范数据仓库处理数据的范围,以及处理数据的业务类型。

3、数据指标规范:包括原子指标(如点击、访问、消费金额等)、复合指标(如点击率、跳出率、投资回报率等)、派生指标(如7天账户消费金额、去年账户余额总和等)。

4、数据模型规范:包括命名规范、存储规范、数据规范三个方面;统一规范的数据模型能大幅提升开发维护效率,避免不必要的数据质量问题。

5、模型衡量指标:包括命名规范性和数据完整性、 中间层表的增长比例、应用层 ADS 跨层访问(穿透)、 较多的 ADS 表共性逻辑未下沉、应用层跨集市依赖五个方面。

#02 技术选型

在对数仓进行了标准化规范设计后,我们需要一个集实时离线为一体的数仓统一解决方案,通过数仓建设,来解决以下问题:

  • 数据存储的规范性

  • 数据模型的复用性

  • 数据模型的耦合性

  • 数据的完整性

  • 数据查询效率

  • 数据成本可控

基于此,我们对市面上常见的数据库产品做了选型对比:

1)查询性能对比

我们主要对 ClickHouse 和 StarRocks 的查询性能做了对比,在 SSB 单表和用户经常碰到的低基数聚合场景下对比了 StarRocks 和 ClickHouse 的性能指标。采用一组16core 64GB 内存的云主机,在 6 亿行的数据规模进行测试。

得益于向量化执行引擎、优秀的CBO优化器、物化视图、Runtime Filter 等各方面的优化,StarRocks 的查询性能表现非常优异,下面测试为各种引擎在不同SQL下花费的时间, ClickHouse 的整体查询时间是 StarRocks 的 2.26 倍。

图1:各种引擎在不同SQL下花费的时间

图2: StarRocks 通过实现全面向量化引擎,按照列式的方式组织和处理数据,充分发挥了 CPU 的处理能力

2)使用与运维对比

除了查询性能,我们从使用成本、易用性、运维成本等方面,对比了几款比较热门的产品,最终我们计划将基于 ClickHouse 等其他数据库产品的查询迁移到基于 StarRocks 来构建数据仓库。

#03 技术架构

数据平台目前处理的数据涉及公司多个产品,每日处理全球增量数据几十T,近千亿条记录,跨云跨地域的数据也给数据处理带来不少挑战。

目前我们已经针对 BI 系统开展了基于 StarRocks 的数据仓库的建设,随着经验的积累,后期会推广到数据平台所有项目的数据场景中。

目前数据平台以实时流和离线处理两条方式同时向 StarRocks 数据仓库中进行数据 Load 。下图是目前数据平台在数据分析中的主要流程架构,如图所示,架构中我们自研了数据治理平台(DataPlus)用于数据监控提高数据质量, 维护元数据血缘等数据的拓扑结构,自动化建模。另外我们还自研了分布式的跨云调度系统(EasyJob),用于系统便捷地处理多云环境下的数据依赖和调度。

离线数据导入通过 EasyJob 定时调用 Broker Load 的方式导入 StarRocks 。

通过 DataPlus 系统,我们对 StarRocks 中的数据和云存储数据进行了定时的一致性校验,保证数据的一致性。

我们一直寻找一种实时和离线一体的数据处理解决方案,实时离线数据处理完后会进入 StarRocks 进行全流程建模,基于 StarRocks 进行湖仓一体结构的搭建。

最底层 ODS 基于外部数据源建立,数据存储在外部云存储上例如OSS,S3,ODS 等,然后通过调度系统定时触发上层表的生成,另外,DWS、ADS的部分表模型,也可以借助于物化视图方式实现,提升构建和查询效率。

整体数据流动架构如下:

StarRocks 能够支持秒级的导入延迟,提供准实时的服务能力。 StarRocks 的存储引擎在数据导入时能够保证每一次操作的 ACID。一个批次的导入数据生效是原子性的,要么全部导入成功,要么全部失败。并发进行的各个事务相互之间互不影响,可以提供 Snapshot Isolation 的事务隔离级别。

StarRocks 存储引擎不仅能够提供高效的 Append 操作,也能高效的处理 Upsert 类操作。使用 Delete-and-insert (Merge_on_write)的实现方式,通过主键索引快速过滤,消除了读取时 Sort merge 操作,同时还可以充分利用其他二级索引。在大量更新的场景下,仍然可以保证查询的极速性能。

#04 智能数据建模

通过元数据、数据血缘体系的建立,未来我们可以通过让建模规范、建模质量等规则自动化,形成线上系统的自动化建模功能,自动化建模生成标准 SQL ,最终在 StarRocks 中定时执行生效。下图是建模过程和 DataPlus 中功能的映射。建模自动化的好处就是可以限制人为建模的不规范操作,最大程度的优化模型和成本。

模型定义后,对模型生成效率的优化至关重要,不一样的解决方式会影响模型的查询生成效率,模型的复用度也会影响用户使用体验。

我们在建模中针对下面三个模型进行了基于 StarRocks 的重点构造,大大提高了查询效率。

物化视图

在数仓建模中我们大量采用了物化视图来加速和生成 DWS 以上数据层,StarRocks 当前支持单表同步、多表异步以及对 SQL 的透明改写能力,未来还会提供多表同步等更多能力,可以从建模和提速两个方面对业务场景提供帮助。

针对不同的刷新方式,我们进行了两组查询对比,如图所示,通过物化视图能够获得更快的查询性能体验,有了物化视图,我们可以从复杂的数据加工工作中解放出来,更加专注于数仓模型本身。

分析模型

统一的模型 SQL 设计,高阶函数的应用,可以提高查询性能50%以上。例如我们主要针对下面三种常见分析模型设计了标准建模 SQL ,未来将通过此标准自动建模,提升查询效率。

  • 行为分析的应用 – 用户留存分析

对于用户留存的分析,经常会在多个条件下获取用户的行为状态,我们采用了 retention 函数来分析,大幅提升了查询分析的效率。

例如:例如:要清楚的了解 event=view 并且时间在2022-11-01、2022-11-02、2022-11-03条件下的用户情况, 传统的方式需先进行 event=view and date=' **--**' 条件判断,然后进行合并,但是 retention 函数的出现直接简化了相应的建模过程,通过 retention 函数,可以直接获取 event=view 以及三个日期条件下的行为,并且以数组的形式进行展示,之后可以通过对数组的聚合操作,进行相应的行为分析。

  • 行为分析的应用 – 漏斗分析

针对用户的转化分析场景,例如需要分析在一定的时间窗口中,用户在一系列连续行为下的相关行为,可以直接采用StarRocks 中的 window_funnel 进行建模,实现高效的漏斗分析。 该函数可以从事件链中的第一个条件开始判断。如果数据中包含符合条件的事件,则向计数器加 1,并以此事件对应的时间作为滑动窗口的起始时间。如果未能找到符合第一个条件的数据,则返回为 0 。在滑动窗口内,如果事件链中的事件按顺序发生,则计数器递增;如果超出了时间窗口,则计数器不再增加。如有多条符合条件的事件链,则输出最长的事件链。

如上图 SQL ,可以计算在规定时间窗口内,用户在 view/click/purchase/pay 连续行为下的相关数据,最终返回不同的连续行为级别下对应的用户数量。

  • 行为分析的应用 – 路径分析

针对用户前后行为路径分析场景,例如需要针对用户前后行为进行对比分析的场景,可以综合考虑采用 StarRocks 支持的 ROW_NUMBER(),LEAD(),LAG()等窗口函数进行建模分析。 如下是一个针对用户前后行为分析的具体案例,可以针对用户的 event 以及前置 event 进行展示:

#05 建设成果

公司数仓建设过程分为四个阶段:

  1. 数据仓库规范建立和技术调研选型。

  1. 性能压测:经过测试,StarRocks 和之前我们应用的 ClickHouse 有2.2倍以上的提升。Join 查询更是有数倍的提升,小时级导入时间的数据量可以在1分钟完成 Load ,保证离线查询效率。

  1. 试点运行:经过迁移,部分业务使用效率得到大幅提升,以往比较的复杂自主 SQL 查询、TP95 查询都可以在5s返回。支持交互式 SQL 自主分析。

  1. 全面部署:在公司其他数据类产品中应用 StarRocks ,并完善监控等集群的自动化运维。

在 BI 系统中经过一段时间的使用,StarRocks 的应用已经进入第四阶段,未来公司会将更多的业务切入到StarRocks,并结合 DataPlus 的智能建模、表热度分析等数据治理,相信性能和成本会达到更理想的状态。同样我们也期待 StarRocks 在新版本中可以提供更丰富的功能。

-关于StarRocks

StarRocks 是数据分析新范式的开创者、新标准的领导者。面世三年来,StarRocks 一直专注打造世界顶级的新一代极速全场景 MPP 数据库,帮助企业构建极速统一的湖仓新范式,是实现数字化转型和降本增效的关键基础设施。

StarRocks 持续突破既有框架,以技术创新全面驱动用户业务发展。当前全球超过 200 家市值 70 亿元以上的头部企业都在基于 StarRocks 构建新一代数据分析能力,包括腾讯、携程、平安银行、中原银行、中信建投、招商证券、众安保险、大润发、百草味、顺丰、京东物流、TCL、OPPO 等,并与全球云计算领导者亚马逊云、阿里云、腾讯云等达成战略合作伙伴。

拥抱开源,StarRocks 全球开源社区飞速成长。截至 2022 年底,已有超过 200 位贡献者,社群用户近万人,吸引几十家国内外行业头部企业参与共建。项目在 GitHub 星数已超 3900 个,成为年度开源热力值增速第一的项目,市场渗透率跻身中国前十名。

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

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

相关文章

【Linux】vim拒绝服务安全漏洞修复

根据国家信息安全漏洞共享平台于2023年2月19日发布的安全漏洞通知,Linux系统自带的vim编辑器存在两个高危安全漏洞(CNVD-2023-09166、CNVD-2023-09647),攻击者可以利用该漏洞发起拒绝服务攻击,并可能运行(恶…

CAS 和 synchronized 优化过程

CAS: CAS相对于计算器(count)来说,count在多线程的环境下是线程不安全的,那么就必须得加锁,而加了锁性能就会大打折扣,所以就有了CAS而CAS的操作是原子的,从而会保证线程的安全。本质操作是将线…

列表推导式_Python教程

内容摘要 Python中存在一种特殊的表达式,名为推导式,它的作用是将一种数据结构作为输入,再经过过滤计算等处理,最后输出另一种数据结构。根据数据结构的不同会被分为列表推导式、 文章正文 Python中存在一种特殊的表达式&#x…

2022年网络安全政策态势分析与2023年立法趋势

近日,公安部第三研究所网络安全法律研究中心与 360 集团法务中心联合共同发布了《全球网络安全政策法律发展年度报告(2022)》。《报告》概览2022年全球网络安全形势与政策法律态势,并对2023年及后续短期内网络安全政策、立法趋势进…

TCP状态详解

TCP Tcp wrappers : Transmission Control Protocol (TCP) Wrappers 为由 inetd 生成的服务提供了增强的安全性。TCP Wrappers 是一种对使用 /etc/inetd.sec 的替换方法。TCP Wrappers 提供防止主机名和主机地址欺骗的保护。欺骗是一种伪装成有效用户或主机以获得对系统进行未…

linux集群技术(二)--keepalived(高可用集群)(二)

案例1--keepalived案例2--keepalived Lvs集群1.案例1--keepalived 1.1 环境 初识keepalived,实现web服务器的高可用集群。 Server1: 192.168.26.144 Server2: 192.168.26.169 VIP: 192.168.26.190 1.2 server1 创建etc下的…

网上插画教学哪家质量好,汇总5大插画培训班

网上插画教学哪家质量好?给大家梳理了国内5家专业的插画师培训班,最新五大插画班排行榜,各有优势和特色! 一:国内知名插画培训机构排名 1、轻微课(五颗星) 主打课程有日系插画、游戏原画、古风插…

2023年测试人跳槽新功略,涨薪10K+

软件测试是如何实现涨薪的呢?很多人眼中的软件测试岗位可能是简单的,技术含量不是那么高,就是看看需求、看业务、设计文档、然后点一点功能是否实现,再稍微深入一点就是测试下安装部署时会不会出现兼容性问题,以及易用…

技术学习-消息队列

什么是消息队列 可以简单理解为存放消息的队列,数据结构模型和队列一样,都是先进先出。主要用不同线程(Thread)/进程(Process) 为什么需要消息队列 (1)不同进程之间传递消息是,因为进程的耦合度高,改动一个进程,引发…

npm 上传自己的包

mkdir demo 创建一个新的文件夹 npm init 初始化项目 生成一个package.json文件 name version description等等touch index.js 创建一个node 可执行脚本新的js 文件 #!/usr/bin/env node // 必须在文件头加如上内容指定运行环境为node console.log(hello cli)在package.json 中…

【教程】GitStats代码统计工具(附GitLab API相关)

使用GitStats进行代码统计 官方文档:GitStats - git history statistics generator GitStats是基于Git的数据统计生成器,输出格式为HTML,可直接在浏览器打开查看,展现为图表形式的可视化数据,内容包括: 常…

图像识别技术解析:手写数字识别(一)

本文通过构建一个手写数字识别的程序来解析来自机器学习与深度学习的不同算法的特点,以及如何对识别效果进行改进。 一、如何构建一个手写数字识别程序 首先可以考虑构建一个简单的页面用于用户输入,也就是前端;接下来需要准备一个后端用于…

mac 好用的类似Xshell工具

下载royal TSX 5.1.1 http://share.uleshi.com/f/9490615-685692355-33bf1e修改mac的etc/hosts文件权限访达(鼠标右键) -> 前往文件夹 ->输入/private --> 打开etc/hosts --> 显示简洁(鼠标右键) --> 权限改成读和写hosts文件写入如下内容:# Royal T…

空间直线方程及其与面线的夹角

一、空间直线的方程 1.1 空间直线的一般方程 空间直线 LLL 可以看做是两个平面 Π1\Pi_1Π1​ 和 Π2\Pi_2Π2​ 的交线,那么就可以用两个平面方程来表示这个直线: {A1xB1yC1zD10A2xB2yC2zD20(1)\left\{ \begin{aligned} A_1xB_1yC_1zD_10\\ A_2xB_2yC…

卷起来了,2023金三银四自动化测试面试题精选【字节二面】

面试一般分为技术面和hr面,形式的话很少有群面,少部分企业可能会有一个交叉面,不过总的来说,技术面基本就是考察你的专业技术水平的,hr面的话主要是看这个人的综合素质以及家庭情况符不符合公司要求,一般来…

Office 365 备份与恢复

Microsoft Office 365中的不同服务几乎可以随时访问,这要归功于Microsoft的99.9%正常运行时间记录。但是,Office 365步履蹒跚的一个方面是提供了一种从意外数据丢失中恢复的方法。Microsoft 提供的数据保留功能并非适用于所有数据丢失情况的可行解决方案…

简述操作系统的文件系统

前言 文件系统是操作系统中负责管理持久数据的子系统,将用户的文件保存在硬盘等硬件设备中,即使断电了数据也不会丢失。 对于用户而言,文件是存储的最小单位,再少的数据也需要以文件的形式存储在外部存储器中。以硬盘为例&#…

FLV-初学总结

FLV-初学总结 从零开始仅学习了一下午的总结,本文非常稚嫩… 本文为纯初学者的学习记录,为了方便理解,内容未必严谨,可以用作纯新手的入门了解篇。本文主要的参考链接如下⬇️ 详细了解FLV:FLV官方文档(Ve…

论文解读 | [CVPR2019] 基于自适应文本区域表示的任意形状场景文本检测

目录 1 研究背景及意义 2 总体设计 3 方法论 3.1 自适应文本区域表示 3.2 文本建议 3.3 建议改进 4 损失函数 5 实验及结果 1 研究背景及意义 现有的场景文本检测方法使用固定点数的多边形来 表示文本区域。例如,水平文本使用2个点(左上/右下)表示文本区域&…

VR全景带你打卡《狂飙》经典取景地!

热度“狂飙”!电视剧《狂飙》的取景地——江门墟顶老街人气火爆,720VR全景带您了解,这个具有新活力的老街区,蛙色3DVR提供技术支持!通过航拍VR全景,全方位展示江门历史文化街区,720浏览&#xf…