StarRocks实战——特来电StarRocks应用实践

目录

一、为何引入StarRocks

二、主要应用场景

三、封装或扩展

四、集群监控预警

五、总结规划展望

5.1 使用经验分享

5.2 下一步计划

5.2.1 StarRocks集群自动安装

5.2.2 StarRocks集群高可用架构

  原文大佬的这篇StarRocks应用实践有借鉴意义,这里摘抄下来用作学习和知识沉淀。

一、为何引入StarRocks

       目前公司大数据平台已经引入了多个OLAP技术框架,随着应用的深入,在部分场景下发现这些框架也都由各自的缺点,主要体现在以下几个方面:

      因此期望寻找一款能至少在部分业务场景下解决以上问题的新框架,与现有框架实现互补,理想情况下能替换调部分技术框架,满足功能需求的同时降低技术栈复杂度。

二、主要应用场景

  目前我主要将StarRocks应用于业务数据的分析和大屏展示,业务数据经过实时清洗进入StarRocks或通过离线方式定时拉取写入StarRocks,再经过相应扩展分别提供给BI报表数据源,集成到大屏展示及通过SDK提供给业务代码访问。

  根据业务数据对查询性能要求较高,且要求支持数据进行部分列更新的特点,我们主要采用的是主键模型部分列更新是指每次更新数据按照主键,只需要更新指定字段数据,而非整行覆盖数据。以订单数据为例,订单数据量较大,且不同部分信息在业务库中存在不同表中。可以建立以订单ID为主键的主键模型,通过定时数据拉取任务,将业务库属于不同表的订单相关数据合并到StarRocks中订单明细表,避免查询时join引起的性能问题。

   而对于数据量不大,且不经常需要查询的维度数据,则可以单独建立维度表,只在需要查询时进行关联。有效节省存储量,同时维表可以定时更新,保证维度数据是最新的。对于需要保持历史数据的维度字段,则可以像上面的订单各部分信息一样,采用部分列更新方式冗余在明细表上,做到业务需求和成本的有效平衡。这个场景的成功应用,得益于StarRocks对多表关联的支持。

三、封装或扩展

  为了将StarRocks集成到公司的大数据平台中,并为业务部门提供相关组件和工具支撑,我们围绕StarRocks进行了以下封装或扩展:

  • 大数据访问SDK:对StarRocks访问操作做了封装,并集成了响应时间,请求TPS,请求链路等监控埋点,以及请求日志,异常日志等功能。
  • StarRocks查询工具:是一款Web方式访问的查询分析工具,方便业务部门同事开发/运维期间查询验证数据使用。
  • Kettle和HUE StarRocksDataX插件:分别基于HUE和Kettle的进行扩展,提供了向StarRocks进行数据同步的插件,支持多种参数配置。
  • StarRocks监控埋点:对StarRocks集群的相关运行参数进行采集,并集成到公司监控平台。

四、集群监控预警

   通过将StarRocks监控指标参数抓取到公司监控预警平台,实现了StarRocks集群运行情况的实时监控和及时预警。

五、总结规划展望

    目前初期阶段,StarRocks投入应用场景50+,总表个数200+, 数据总量超过5TB,相关功能在切换后,在响应时间,存储成本等方面都有相应改善。

5.1 使用经验分享

  • 合理设置分区分桶键,分区和分桶应该尽量覆盖查询语句所带的条件,这样可以有效减少扫描数据,提高查询性能。
  • 合理设置分区和分桶大小,实现数据均衡分布,单个分区原始数据量建议不要超过100GB,单个分桶控制在100M到1G左右,最大不要超过10G。太小造成小文件tablet太多,影响磁盘IO,太大不利于资源合理分配并影响查询效率。
  • 排序键不应该包含过多的列,对于主键模型而言,key列大小不能超过127个字节。选择过多排序列并不能提升查询性能,而且会增大排序的开销,进而增加数据导入的开销。
  • 排序键涉及多个列的时候,建议把区分度高、且经常查询的列放在前面。区分度高的列是指取值个数多,且持续增加的列。
  • 查询时尽量只select需要的字段, 减少不必要的开销。

  • 关联维表可显式添加shuffle关键字进行优化(Join Hint 语法,手动指定join类型)

  • 数据量非常大的维表中常用字段,考虑在主表进行冗余(维度退化)。

5.2 下一步计划

5.2.1 StarRocks集群自动安装

  目前在搭建不同环境时,都是手动进行StarRocks的部署和配置。重复进行相同工作,且手工处理易出错,效率低。计划将StarRocks集成到公司的大数据安装框架,实现StarRocks安装部署和元数据初始化的自动化。提高部署效率,降低运维成本。

5.2.2 StarRocks集群高可用架构

    随着越来越多的业务迁移到StarRocks,特别是一些重要级别较高业务的迁移,对StarRocks的可用性提出了更高的要求。虽然StarRock本身通过其架构特点提供了一定的高可用性。但我们仍然计划基于自建的集群高可用框架,在数据双写的基础上提供集群级别的高可用,以实现在集群宕机时故障的快速转移,高可用框架的主要架构如下:

参考文章:

特来电StarRocks应用实践

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

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

相关文章

1、Ajax、get、post、ajax,随机颜色

一、Ajax初始 1、什么是Ajax? 异步的JavaScript和xml 2、xml是什么? 一种标记语言,传输和存储数据----------现在用JSON传输数据 3、Ajax的作用 局部加载 可以使网页异步更新 4、Ajax的原理或者步骤(6步) 创建Ajax对象 if (window.X…

centos 搭建ftp服务器

项目上需要用到ftp文件服务同步,所以在测试环境进行搭建,其中遇到了一些问题,遂记录。 1、安装vsftpd软件包 打开终端并输入以下命令来安装vsftpd yum install vsftpd -y 2、运行vsftpd systemctl start vsftpd 3、测试匿名连接 我这里…

基于springboot+vue的球队训练信息管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

【OBS】obs-websocket实战技巧,让你更快的了解OBS

▒ 目录 ▒ 🛫 导读开发环境 1️⃣ 修改OBS-web源码2️⃣ 常用api汇总获取输入源类型列表获取输入源列表获取属性列表打开输入源属性设置框获取设置输入源静音状态获取特殊输入源设置(全局音频设备)打开输入源属性设置框 🛬 文章小…

HubSpot出海CRM可以为企业带来哪些好处?

HubSpot出海CRM为企业带来了许多好处,包括但不限于以下几点: 优化客户体验: HubSpot出海CRM提供了个性化的客户关系管理功能,使企业能够根据客户的地理位置、偏好和行为等因素,提供个性化的营销和服务。这有助于提高客…

数位dp 笔记

小技巧1:求区间[X, Y]可以转换为求F(Y) - F(X-1) F(X)表示0~X中满足条件的数字个数 小技巧2:可以用树的形式来看 遍历最高位,每一位分为两种情况:未达到上界和达到上界 如果走到右边最底端需加1 度的数量 求给定区间 [X,Y]中满足下列条件的…

linux系统UDP丢包问题分析思路

Linux系统UDP丢包 最近工作中遇到某个服务器应用程序 UDP 丢包,在排查过程中查阅了很多资料,总结出来这篇文章,供更多人参考。 在开始之前,我们先用一张图解释 linux 系统接收网络报文的过程。  1,首先网络报文通过物…

软件测试--性能测试工具JMeter

软件测试--性能测试工具JMeter 主流性能测试工具1.主流性能测试工具Loadrunner和Jmeter对比 —— 相同点2.主流性能测试工具Loadrunner和Jmeter对比 —— 不同点JMeter基本使用JMeter环境搭建1.安装JDK:2.安装Jmeter:3.注意点:JMeter功能概要1. JMeter文件目录介绍1.1 bin目…

JavaScript的`call`方法:实现函数间的调用!

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

express+mysql+vue,从零搭建一个商城管理系统10--添加商品

提示:学习express,搭建管理系统 文章目录 前言一、新建models/goods.js二、新建routes/goods.js三、添加goods表四、添加商品总结 前言 需求:主要学习express,所以先写service部分 一、新建models/goods.js models/goods.js con…

亚马逊卖家做市场分析业务可以用静态IP代理完成吗?

亚马逊作为全球最大的电商平台之一,其庞大的销售数据和用户行为数据成为了许多商家和市场研究人员进行市场分析和竞争研究的重要来源。而使用IP代理则能够为亚马逊市场分析带来许多帮助,下面就来一一介绍。静态IP代理可以为市场分析带来哪些帮助&#xf…

高维中介数据: 联合显着性(JS)检验法

摘要 中介分析在流行病学和临床试验中越来越受到关注。在现有的中介分析方法中,流行的联合显着性(JS)检验会产生过于保守的 I 类错误率,因此功效较低。但是,如果在使用 JS 测试高维中介假设时,可以准确控制…

表达式和语句

本文参考C Primer Plus进行C语言学习 文章目录 表达式语句 副作用和序列点复合语句(块)类型转换 1.表达式 表达式由运算符和运算对象组成。下面是一些表达式: 4 -6 421 a*(bc/d)/20 q5*2 xq%3 q>3 每个表达式都有一…

基于带时间窗口的电动汽车路由问题的精英对立学习的多群PSO(2022)

英文:Multi-swarm PSO based on Elite Opposite Learning on Electric Vehicle Routing Problem with Time Window 摘要: 带时间窗口的电动汽车路由问题(EVRPTW)是交通领域的一个新问题,用传统的精确求解方法很难解决…

vue3.0源码解析之数据代理Proxy

前言 多年前刚转前端的时候,对频繁的拼接页面元素深恶痛绝,当时是通过封装字符串模版来处理页面的。之后又陆续发现,数据变化后需要频繁的修改dom节点来操作页面,便不得不自己写很多更新的代码,直到出现了vue和react、…

【排序】详解堆排序

一、思想 堆排序是一种基于比较的排序算法,且使用了堆的数据结构来辅助进行排序。其思想是利用堆的特性,即在每个节点都保证是最大(大顶堆)或者最小(小顶堆)的关键码。具体原理和步骤如下: 构…

基于SpringBoot的论坛系统(附项目源码+论文)

摘要 如今的时代,是有史以来最好的时代,随着计算机的发展到现在的移动终端的发展,国内目前信息技术已经在世界上遥遥领先,让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法&#xf…

最值得入手的五款骨传导耳机,六大专业的选购技巧

亲爱的小伙伴们,你们是否曾因长时间戴着耳机而感到耳朵不适,比如耳朵闷痛、发痒,甚至出现异味?现在有一种耳机可以帮你解决这些问题,它就是骨传导耳机。这种耳机的设计避免了传统入耳式耳机可能带来的堵塞感和细菌滋生…

【prompt五】CoCoOP:Conditional Prompt Learning for Vision-Language Models

motivation 随着像CLIP这样强大的预训练视觉语言模型的兴起,研究如何使这些模型适应下游数据集变得至关重要。最近提出的一种名为上下文优化(CoOp)的方法将提示学习(nlp的最新趋势)的概念引入视觉领域,以适应预训练的视觉语言模型。具体来说,CoOp将提示中的上下文单词转换为…

Golang 程序启动原理详解

一.编译 go源代码首先要通过 go build 编译为可执行文件,然后去机器上直接执行的,在 linux 平台上为 ELF 格式的可执行文件,linux 能直接执行这个文件,而编译阶段会经过编译器、汇编器、链接器三个过程最终生成可执行文件 编译器:*.go 源码通…