Starrocks 数据均衡DiskAndTabletLoadReBalancer的实现

news2025/4/24 0:51:00

背景

最近在研究了一下 Starrocks的tablet的Rebalance的能力,这里进行记录一下
本文基于 StarRocks 3.3.5

结论

数据的rebalance 主要以两种模式来进行:

  1. 按照磁盘的使用率进行移动,如果每个BE的磁盘使用率不足tablet_sched_balance_load_disk_safe_threshold(默认是50%),
    或者 BE间磁盘的最大使用率和最小使用率相差不超过tablet_sched_balance_load_score_threshold(默认10%),就认为不需要进行数据均衡
  2. 以tablet的副本数量进行移动,不断把副本从副本数多的BE节点 转移到 副本数少的节点上
  3. 以BE内的磁盘使用率为基准,按照高磁盘使用率往低磁盘使用率的原则进行数据迁移
  4. 以BE内的各个路径的tablets副本数据为基准 ,按照路径中副本数高的往副本数低的原则进行数据秦阿姨

其中里面设计到的移动都是以 tablet Replica(副本)为单位进行移动的,
且统计信息的来源是来自SystemInfoService,对于每个磁盘类型(HDD,SSD)都会做Rebalance操作

分析

统计信息的来源

ClusterLoadStatistic的统计信息,这个是来自于SystemInfoService,而最终的信息是来源于 BE和 FE进行交互的FrontendServiceImpl,BE会上报给FE信息,这些信息
在FE则会调用 ReportHandler的 exec方法,从而更新到 SystemInfoService中。

 @Override
 protected void exec() {
     if (tasks != null) {
         ReportHandler.taskReport(beId, tasks);
     }
     if (disks != null) {
         ReportHandler.diskReport(beId, disks);
     }
     if (tablets != null) {
         ReportHandler.tabletReport(beId, tablets, reportVersion);
     }
     if (activeWorkGroups != null) {
         ReportHandler.workgroupReport(beId, activeWorkGroups);
     }
     if (resourceUsage != null) {
         ReportHandler.resourceUsageReport(beId, resourceUsage);
     }
     if (dataCacheMetrics != null) {
         ReportHandler.datacacheMetricsReport(beId, dataCacheMetrics);
     }
 }

tablet调度数据流

其中最主要的数据流如下:

TabletScheduler.runAfterCatalogReady
      ||
      \/
TabletScheduler.schedulePendingTablets //一次性调度队列中剩余的所有的Rebalance任务
      ||
      \/
TabletScheduler.handleRunningTablets // 取消超时的Rebalance任务,这个超时时间是根据 TabletSchedCtx.getApproximateTimeoutMs 方法获取的
      ||
      \/
TabletScheduler.selectTabletsForBalance
      ||
      \/
Rebalancer.selectAlternativeTablets => selectAlternativeTabletsForCluster 
                                                    ||
                                                    \/
                                             balanceClusterDisk 
                                                    ||
                                                    \/
                                             balanceClusterTablet
                                                    ||
                                                    \/
                                             balanceBackendDisk
                                                    ||
                                                    \/
                                             balanceBackendTablet
                                              
     ||
     \/
handleForceCleanSchedQ    // 如果有用户调用了`CLEAN TABLET SCHEDULER QUEUE`命令,则会强制清除包括正在运行的所有的数据Rebalance任务
     ||
     \/
stat.counterTabletScheduleRound.incrementAndGet() // 记录tablet schedule调度的次数

其中 balanceClusterDisk balanceClusterTablet balanceBackendDisk balanceBackendTablet 分别对应上述的1 2 3 4 四点。

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

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

相关文章

Redis 接收连接

阅读本文前,建议先看:Redis 事件循环(Event Loop)。 Redis 6 支持接收 3 种连接,对应的接收处理器如下: TCP:acceptTcpHandler;TLS:acceptTLSHandler;Unix …

【计算机视觉】CV实战项目- Face-and-Emotion-Recognition 人脸情绪识别

Face-and-Emotion-Recognition 项目详细介绍 项目概述项目功能项目目录结构项目运行方式1. 环境准备2. 数据准备3. 模型训练4. 模型运行 常见问题及解决方法1. **安装依赖问题**2. **数据集问题**3. **模型训练问题**4. **模型运行问题** 项目实战建议项目参考文献 项目概述 F…

基于国产 FPGA+ 龙芯2K1000处理器+翼辉国产操作系统继电保护装置测试装备解决方案

0 引言 近年来,我国自主可控芯片在国家政策和政 府的支持下发展迅速,并在电力、军工、机械、 通信、电子、医疗等领域掀起了国产化替代之 风,但在芯片自主可控和国产化替代方面还有明 显的不足之处。 2022年我国集成电路进口量多 达 5 3…

如何批量为多个 Word 文档添加水印保护

在日常办公中,Word文档添加水印是一项重要的操作,特别是在需要保护文件内容的安全性和版权时。虽然Office自带了添加水印的功能,但当需要一次性给多个Word文档添加水印时,手动操作显得非常繁琐且低效。为了提高效率,可…

长期行为序列建模技术演进:从SIM到TWIN-v2

背景 在推荐系统与广告投放领域,长期行为序列建模旨在从用户数月甚至数年的历史行为中捕捉稳定兴趣模式,是解决冷启动、提升推荐精度的关键。随着工业界需求激增,SIM、ETA、SDIM、TWIN及TWIN-v2等模型相继诞生,推动技术不断革新。…

Linux下 REEF3D及DIVEMesh 源码编译安装及使用

目录 软件介绍 基本依赖 一、源码下载 1、REEF3D 2、DIVEMesh 二、解压缩 三、编译安装 1、REEF3D 2、DIVEMesh 四、算例测试 软件介绍 REEF3D是一款开源流体动力学框架,提供计算流体力学及波浪模型。软件采用高效并行化设计,可以在大规模处理器…

嵌入式软件测试的革新:如何用深度集成工具破解效率与安全的双重困局?

在汽车电子、工业控制、航空航天等嵌入式开发领域,团队常面临一个看似无解的悖论:如何在保证代码安全性的前提下,大幅提升测试效率? 传统测试工具往往需要搭建独立环境、插入大量桩代码,甚至需要开发者手动编写测试用例…

Ubuntu24.04安装ROS2问题

1,根据官方指导安装,安装到步骤: sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg 时遇到问题。导致sudo apt update一直报错: 找了几天的资料…

【图问答】DeepSeek-VL 论文阅读笔记

《DeepSeek-VL: Towards Real-World Vision-Language Understanding》 1. 摘要/引言 基于图片问答(Visual Question Answering,VQA)的任务 2. 模型结构 和 三段式训练 1)使用 SigLIP 和 SAM 作为混合的vision encoder&#xf…

【专题刷题】滑动窗口(二):水果成篮,所有字母异位词,乘积小于 K 的子数组

📝前言说明: 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码;&#xff…

深入理解React中的Props与State:核心区别与最佳实践

在React开发中,props和state是构建交互式UI的两大基石。许多React初学者常常混淆这两者的概念,导致组件设计出现反模式。本文将全面剖析props与state的本质区别,通过实际场景说明它们的适用边界,并分享高效管理组件数据的实践经验…

STM32单片机入门学习——第46节: [14-1] WDG看门狗

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.23 STM32开发板学习——第46节: [14-1] WDG看门狗 前言开发板说明引用解答和科普一、…

n8n 中文系列教程_05.如何在本机部署/安装 n8n(详细图文教程)

n8n 是一款强大的开源工作流自动化工具,可帮助你连接各类应用与服务,实现自动化任务。如果你想快速体验 n8n 的功能,本机部署是最简单的方式。本教程将手把手指导你在 Windows 或 MacOS 上通过 Docker 轻松安装和运行 n8n,无需服务…

2025第十六届蓝桥杯python B组满分题解(详细)

目录 前言 A: 攻击次数 解题思路: 代码: B: 最长字符串 解题思路: 代码: C: LQ图形 解题思路: 代码: D: 最多次数 解题思路: 代码: E: A * B Problem 解题思路&…

Kafka 面试,java实战贴

面试问题列表 Kafka的ISR机制是什么?如何保证数据一致性? 如何实现Kafka的Exactly-Once语义? Kafka的Rebalance机制可能引发什么问题?如何优化? Kafka的Topic分区数如何合理设置? 如何设计Kafka的高可用跨…

linux多线(进)程编程——(9)信号量(一)

前言 在找到了共享内存存在的问题后,进程君父子着手开始解决这些问题。他们发明了一个新的神通——信号量。 信号量 信号量是一个计数器,用于管理对共享资源的访问权限。主要特点包括: (1)是一个非负整数 &#xff…

PFLM: Privacy-preserving federated learning with membership proof证明阅读

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…

图片转base64 - 加菲工具 - 在线转换

图片转base64 - 加菲工具 先进入“加菲工具” 网 打开 https://www.orcc.top, 选择 “图片转base64”功能 选择需要转换的图片 复制 点击“复制”按钮,即可复制转换好的base64编码数据,可以直接用于img标签。

opencv 对图片的操作

对图片的操作 1.图片镜像旋转(cv2.flip())2 图像的矫正 1.图片镜像旋转(cv2.flip()) 图像的旋转是围绕一个特定点进行的,而图像的镜像旋转则是围绕坐标轴进行的。图像的镜像旋转分为水平翻转、垂直翻转、水平垂直翻转…

LabVIEW数据采集与传感系统

开发了一个基于LabVIEW的智能数据采集系统,该系统主要通过单片机与LabVIEW软件协同工作,实现对多通道低频传感器信号的有效采集、处理与显示。系统的设计旨在提高数据采集的准确性和效率,适用于各种需要高精度和低成本解决方案的工业场合。 项…