【Doris基础】Doris中的Tablet详解:核心存储单元的设计与实现

article/2025/7/18 6:48:38

目录

1 Tablet基础概念

1.1 什么是Tablet

1.2 Tablet的核心特性

1.3 Tablet与相关概念的关系

2 Tablet的架构设计

2.1 Tablet的整体架构

2.2 Tablet的存储结构

3 Tablet的生命周期管理

3.1 Tablet的创建流程

3.2 Tablet的数据写入流程

3.3 Tablet的压缩与合并

4 Tablet的分布式管理

4.1 Tablet的副本分布策略

4.2 Tablet的负载均衡

4.3 Tablet的修复机制

5 Tablet的性能优化

5.1 Tablet的分桶与分区分桶

5.2 Tablet的预分区与动态分区

5.3 Tablet的查询优化

6 Tablet的监控与运维

6.1 Tablet的状态监控

6.2 Tablet的常见问题处理

6.3 Tablet的平衡与迁移

7 Tablet的高级特性

7.1 冷热数据分层

7.2 副本属性设置

7.3 Tablet的缓存优化

8 总结


1 Tablet基础概念

1.1 什么是Tablet

在Apache Doris(原百度Palo)分布式数据库中, Tablet是最基本的数据分片和存储单元。它代表了表数据的一个水平分片,类似于传统数据库中的"分区"概念,但具有更丰富的特性和更精细的管理粒度。
Tablet是Doris实现分布式存储和并行计算的基础。每个Tablet通常包含表的一部分数据,这些数据在物理上独立存储,可以分布在不同的Backend节点上,从而实现数据的分布式处理和负载均衡。

1.2 Tablet的核心特性

  • 水平分片:Tablet将大表数据水平切分为多个小块,便于分布式存储和并行处理
  • 副本机制:每个Tablet默认配置多个副本(通常为3个),保证数据高可用
  • 独立管理:Tablet是数据迁移、副本修复、压缩等操作的最小单位
  • 版本控制:每个Tablet通过版本号机制实现数据一致性
  • 高效查询:查询时只需访问相关Tablet,避免全表扫描

1.3 Tablet与相关概念的关系

  • Tablet vs Partition:一个分区(Partition)包含多个Tablet,分区是逻辑概念,Tablet是物理存储单元
  • Tablet vs Replica:一个Tablet有多个副本(Replica),分布在不同的Backend上
  • Tablet vs Segment:在Doris的存储引擎中,一个Tablet由多个Segment文件组成

2 Tablet的架构设计

2.1 Tablet的整体架构

架构说明
  • 一个表(Table)可以划分为多个分区(Partition),分区通常按照时间或业务维度划分
  • 每个分区包含多个Tablet,Tablet数量决定了查询的并行度
  • 每个Tablet有多个副本(Replica),默认3副本,分布在不同的Backend节点
  • 每个副本由多个Segment文件组成,Segment是实际存储数据的文件格式

2.2 Tablet的存储结构

存储组件说明
Data:实际存储的数据,组织为Rowset(行集),每个Rowset包含多个Segment
Index
  • Short Key Index:前缀索引,加速查询
  • Bloom Filter:快速判断数据不存在
  • Zone Map:存储列的最小/最大值,用于过滤
Metadata
  • Schema:表结构信息
  • Version:版本信息,用于实现MVCC

3 Tablet的生命周期管理

3.1 Tablet的创建流程

步骤说明
  • 用户通过FE(Frontend)创建表或添加分区时,FE决定Tablet的分布
  • FE选择多个BE(Backend)节点创建Tablet副本
  • 每个BE节点在本地创建Tablet存储结构
  • FE收集所有副本创建结果后更新元数据
  • Tablet进入可用状态

3.2 Tablet的数据写入流程

写入过程详解
  • 客户端向FE发送写入请求
  • FE根据分区键确定目标Tablet,并选择主副本(Primary Replica)
  • 数据首先写入主副本的内存Buffer
  • 内存Buffer定期刷盘形成磁盘文件
  • 主副本生成新版本并同步到从副本(Secondary Replicas)
  • 所有副本确认后提交版本,写入完成

3.3 Tablet的压缩与合并

Doris会定期对Tablet中的多个Segment文件进行压缩合并(Compaction),以提高查询性能。
压缩类型
  • Cumulative Compaction:合并最近的增量数据,频率较高(每小时多次)
  • Base Compaction:合并历史数据,频率较低(每天1-2次)
  • Full Compaction:手动触发的完全合并,重组所有数据

4 Tablet的分布式管理

4.1 Tablet的副本分布策略

Doris采用智能的副本分布策略保证集群的高可用和负载均衡, 分布策略说明
  • 优先保证副本分布在不同的物理节点
  • 考虑机架、机房级别的容灾
  • 避免副本集中在少数节点导致负载不均衡
  • 遵循用户自定义的Tag分布策略

4.2 Tablet的负载均衡

Doris会定期检查Tablet分布并进行负载均衡,主要考虑以下因素:
  • 各BE节点的磁盘使用率
  • 各BE节点的计算负载
  • Tablet的访问热点
  • 副本分布的均衡性
  • 负载均衡策略可以通过FE配置项调整
ALTER SYSTEM SET tablet_sched_balance_load_disk_safe_threshold = 0.5;

4.3 Tablet的修复机制

当BE节点宕机或网络隔离时,Doris会自动检测并修复缺失的副本:
修复策略
  • 优先从同一分区的其他Tablet副本克隆
  • 其次选择同一BE上的其他副本
  • 最后考虑跨BE的副本修复
  • 修复优先级考虑Tablet的重要性(访问频率等)

5 Tablet的性能优化

5.1 Tablet的分桶与分区分桶

合理的分桶(Bucketing)策略对性能至关重要:
CREATE TABLE example_db.table_hash
(k1 DATE,k2 INT,k3 SMALLINT,v1 VARCHAR(2048),v2 DATETIME DEFAULT "2025-05-04 15:36:00"
)
ENGINE=olap
DISTRIBUTED BY HASH(k1, k2, k3) BUCKETS 32
PROPERTIES ("replication_num" = "3","storage_medium" = "SSD"
);
分桶设计建议
  • 每个Tablet大小建议在1-10GB之间
  • 分桶键选择高基数列,避免数据倾斜
  • 分桶数量应为节点数的整数倍
  • 考虑查询模式,使查询能裁剪掉不必要的Tablet

5.2 Tablet的预分区与动态分区

CREATE TABLE table_range
(k1 DATE,k2 INT,...
)
PARTITION BY RANGE(k1)
(PARTITION p202501 VALUES LESS THAN ('2025-02-01'),PARTITION p202502 VALUES LESS THAN ('2025-03-01')
)
DISTRIBUTED BY HASH(k2) BUCKETS 16
PROPERTIES ("dynamic_partition.enable" = "true","dynamic_partition.time_unit" = "MONTH","dynamic_partition.start" = "-12","dynamic_partition.end" = "3","dynamic_partition.prefix" = "p","dynamic_partition.buckets" = "16"
);
分区策略建议
  • 按时间分区便于冷热数据分离和过期删除
  • 动态分区简化管理,避免手动创建
  • 分区粒度根据数据量决定,通常按天/周/月
  • 结合TTL设置自动过期历史分区

5.3 Tablet的查询优化

查询优化技巧
  • 确保查询条件包含分区键和分桶键
  • 利用前缀索引加速点查询
  • 合理设置Bloom Filter提高过滤效率
  • 监控Tablet的扫描统计,调整数据分布

6 Tablet的监控与运维

6.1 Tablet的状态监控

通过Doris提供的命令可以查看Tablet状态:
-- 查看Tablet分布
SHOW TABLETS FROM example_db.table_name;
-- 查看Tablet详情
SHOW TABLET 10001;
-- 查看数据倾斜情况
SHOW DATA SKEW FROM example_db.table_name;

6.2 Tablet的常见问题处理

  • 问题1:Tablet版本不一致
  • 解决方案:
-- 查看不一致Tablet
ADMIN SHOW REPLICA DISTRIBUTION FROM table_name;
-- 手动触发修复
ADMIN REPAIR TABLE table_name;
  • 问题2:Tablet副本缺失
  • 解决方案:
-- 查看压缩状态
SHOW PROC '/compaction';
-- 手动触发压缩
ALTER TABLE table_name COMPACT;
  • 问题3:Tablet压缩卡住
  • 解决方案:
-- 查看压缩状态
SHOW PROC '/compaction';
-- 手动触发压缩
ALTER TABLE example_db.table_name COMPACT;

6.3 Tablet的平衡与迁移

-- 查看平衡状态
SHOW PROC '/cluster_balance';
-- 手动迁移Tablet
ADMIN MOVE REPLICA 10001 FROM "backend1:9050" TO "backend2:9050";

7 Tablet的高级特性

7.1 冷热数据分层

Doris支持将Tablet的不同副本存储在不同的存储介质上:
ALTER TABLE .table_name 
MODIFY PARTITION p202501 
SET ("storage_cooldown_ttl" = "7 days", "storage_medium" = "SSD");

7.2 副本属性设置

ALTER TABLE example_db.table_name 
MODIFY PARTITION p202501 
SET ("replica_allocation" = "tag.location.zone1:2, tag.location.zone2:1");

7.3 Tablet的缓存优化

-- 设置索引缓存
SET GLOBAL index_page_cache_capacity = 1073741824; -- 1GB
-- 设置数据缓存
SET GLOBAL storage_page_cache_capacity = 4294967296; -- 4GB

8 总结

通过深入理解Doris的Tablet机制,可以更好地设计和管理分布式数据库,充分发挥Doris的高性能优势。Tablet作为最核心的存储单元,其设计和管理质量直接决定了整个集群的性能和稳定性。

http://www.hkcw.cn/article/wNOaYgfdDh.shtml

相关文章

因泰立科技:镭眸T51激光雷达,打造智能门控新生态

在高端门控行业,安全与效率是永恒的追求。如今,随着科技的飞速发展,激光雷达与TOF相机技术的融合,为门控系统带来了前所未有的智能感知能力,开启了精准守护的新时代。因泰立科技的镭眸T51激光雷达,作为这一…

Delphi读写Mifare Desfire Ev1 Ev2 EV3卡修改AES密钥源码

本示例使用的发卡器:https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1b3bN1Vu&ftt&id917152255720 unit Unit2;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls,declaredl…

第T10周:数据增强

import matplotlib.pyplot as plt import numpy as np #隐藏警告 import warnings warnings.filterwarnings(ignore)from tensorflow.keras import layers import tensorflow as tf gpus tf.config.list_physical_devices("GPU")if gpus:tf.config.experimental.set…

Python_day40

昨天我们介绍了图像数据的格式以及模型定义的过程,发现和之前结构化数据的略有不同,主要差异体现在2处 1. 模型定义的时候需要展平图像 2. 由于数据过大,需要将数据集进行分批次处理,这往往涉及到了dataset和dataloader来规范代码…

MSTNet:用于糖尿病视网膜病变分类的多尺度空间感知 Transformer 与多实例学习方法|文献速递-深度学习医疗AI最新文献

Title 题目 MSTNet: Multi-scale spatial-aware transformer with multi-instance learning for diabetic retinopathy classification MSTNet:用于糖尿病视网膜病变分类的多尺度空间感知 Transformer 与多实例学习方法 01 文献速递介绍 糖尿病视网膜病变&#…

Linux上安装MongoDB

目录 一、在Linux系统安装MongoDB服务器 1、下载MongoDB 2、上传MongoDB并解压 3、创建必要目录 4、配置环境变量 5、创建配置文件 6、启动命令 7、验证安装 二、在Linux系统安装MongoDB客户端Shell 1、下载MongoDB Shell 2、上传MongoDB Shell并解压 3、配置环境变…

muduo库的初步认识和基本使用,创建一个简单查询单词服务系统

小编在学习完muduo库之后,觉得对于初学者,muduo库还是有点不好理解,所以在此,小编来告诉大家muduo库的初步认识和基本使用,让初学者也可以更快的上手和使用muduo库。 Muduo由陈硕大佬开发,是⼀个基于 非阻塞…

格恩朗超声波水表 助力农业精准灌溉与振兴​

在农业现代化的征程中,水资源的精准利用至关重要,而这离不开高精度计量设备的支持。大连格恩朗品牌积极响应国家全面推进乡村振兴、加快农业农村现代化的号召,精心打造的超声波水表,凭借其超高精度,成为绿色灌溉领域的…

Nginx进阶篇(静态资源的缓存处理、Nginx中与浏览器缓存相关的指令、Nginx的跨域问题、静态资源防盗链)

文章目录 1. 静态资源的缓存处理1.1 什么是缓存1.2 什么是Web缓存1.3 Web缓存的种类1.3.1 客户端缓存1.3.2 服务端缓存 1.4 为什么要用浏览器缓存1.5 浏览器缓存的执行流程1.6 浏览器强缓存和弱缓存的区别1.6.1 强缓存(Strong Cache)1.6.2 弱缓存&#x…

云游戏混合架构

云游戏混合架构通过整合本地计算资源与云端能力,形成了灵活且高性能的技术体系,其核心架构及技术特征可概括如下: 一、混合架构的典型模式 分层混合模式‌ 前端应用部署于公有云(如渲染流化服务),后端逻辑…

Origin教程010:Origin绘制同心圆图

文章目录 10、绘制同心圆弧图1、同心圆弧图绘制2、调整绘图顺序3、设置标签内容、样式4、指引线设置5、添加图形标题6、练习数据10、绘制同心圆弧图 本节要点: 同心圆弧图的绘制调整绘图顺序(对象管理器)设置标签内容、样式指引线设置添加图形标题1、同心圆弧图绘制 1️⃣拖…

rs485/232转profinet网关与长陆-UNI800称重显示控制仪通讯

rs485/232转profinet网关与长陆-UNI800称重显示控制仪通讯 在现代工业自动化系统中,RS485转Profinet网关作为一种关键的通信接口设备,其重要性不言而喻。它能够将传统的RS485接口设备接入先进的Profinet网络,实现不同协议之间的无缝转换和数…

【速通RAG实战:进阶】20、改进RAG检索质量有哪些诀窍?

一、数据层优化:构建高质量检索基础 (一)动态语义分块技术 传统固定长度分块易切断完整语义,采用基于相似度的动态分块策略可显著提升上下文连贯性。通过LangChain的SemanticChunker实现语义边界检测,当相邻文本相似度低于0.4时自动切分,避免将“设备型号-参数-操作步骤…

Nginx网站服务:从入门到LNMP架构实战

🏡作者主页:点击! Nginx-从零开始的服务器之旅专栏:点击! 🐧Linux高级管理防护和群集专栏:点击! ⏰️创作时间:2025年5月30日14点22分 前言 说起Web服务器&#xff0c…

早发现=早安心!超导心磁图如何捕捉早期病变信号?

随着生活节奏的加快,心血管疾病已成为威胁人们健康的“隐形杀手”。据国家心血管病中心发布的《中国心血管健康与疾病报告2022》显示,我国心血管病现患者人数已高达3.3亿,每5例死亡中就有2例死于心血管病。这一数据触目惊心,提醒我…

AI感知与行动:考拉悠然发布空间智能世界模型,让AI走进物理世界

本文转自:《封面新闻》 5月,2025福布斯中国人工智能科技企业TOP50评选结果发布,成都考拉悠然科技有限公司成功入选,成为榜单中唯一专注“空间智能”的企业。 ,时长02:55 而在近日,考拉悠然发布了面向空间…

Arduino学习-跑马灯

1、效果 2、代码 /**** 2025-5-30 跑马灯的小程序 */ //时间间隔 int intervaltime200; //初始化函数 void setup() {// put your setup code here, to run once://设置第3-第7个引脚为输出模式for(int i3;i<8;i){pinMode(i,OUTPUT);} }//循环执行 void loop() {// put you…

CAD多边形密堆积2D插件

插件介绍 CAD多边形密堆积2D插件可在AutoCAD内建立模拟重力堆积状态的随机多边形颗粒及界面过渡区&#xff08;ITZ&#xff09;模型。 模型可分为多边形颗粒、界面过渡区&#xff08;ITZ&#xff09;、长方形试件三部分&#xff0c;各部分在CAD内分图层绘制&#xff0c;可批…

特伦斯 S75:重塑钢琴体验的数码钢琴之选

当传统钢琴的典雅质感与现代科技的精准赋能相遇&#xff0c;特伦斯 S75 立式数码钢琴应运而生。这款专为追求品质的演奏者与音乐爱好者设计的高端乐器&#xff0c;以 “还原三角钢琴灵魂&#xff0c;革新数字钢琴体验” 为核心理念&#xff0c;在音色、触感、音质与智能交互间达…

methods的实现原理

一、直观的感受methods的使用 首先直观的感受methods方法的使用&#xff0c;同样以计数器为例&#xff0c; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widt…