Doris之磁盘空间管理(重点)

磁盘存储空间有关的系统参数和处理策略。

Doris 的数据磁盘空间如果不加以控制,会因磁盘写满而导致进程挂掉。因此我们监测磁盘的使用率和剩余空间,通过设置不同的警戒水位,来控制 Doris 系统中的各项操作,尽量避免发生磁盘被写满的情况。

名词解释

FE:Frontend,Doris 的前端节点。负责元数据管理和请求接入。
BE:Backend,Doris 的后端节点。负责查询执行和数据存储。
Data Dir:数据目录,在 BE 配置文件 be.conf 的 storage_root_path 中指定的各个数据目录。通常一个数据目录对应一个磁盘、因此下文中 磁盘 也指代一个数据目录。

基本原理

BE 定期(每隔一分钟)会向 FE 汇报一次磁盘使用情况。FE 记录这些统计值,并根据这些统计值,限制不同的操作请求。

在 FE 中分别设置了 高水位(High Watermark) 和 危险水位(Flood Stage) 两级阈值。危险水位高于高水位。当磁盘使用率高于高水位时,Doris 会限制某些操作的执行(如副本均衡等)。而如果高于危险水位,则会禁止某些操作的执行(如导入)。

同时,在 BE 上也设置了 危险水位(Flood Stage)。考虑到 FE 并不能完全及时的检测到 BE 上的磁盘使用情况,以及无法控制某些 BE 自身运行的操作(如 Compaction)。因此 BE 上的危险水位用于 BE 主动拒绝和停止某些操作,达到自我保护的目的。

FE 参数

高水位:

storage_high_watermark_usage_percent 默认 85 (85%)。
storage_min_left_capacity_bytes 默认 2GB。
当磁盘空间使用率大于 storage_high_watermark_usage_percent,或者 磁盘空间剩余大小小于 storage_min_left_capacity_bytes 时,该磁盘不会再被作为以下操作的目的路径:

Tablet 均衡操作(Balance)
Colocation 表数据分片的重分布(Relocation)
Decommission

危险水位:

storage_flood_stage_usage_percent 默认 95 (95%)。
storage_flood_stage_left_capacity_bytes 默认 1GB。
当磁盘空间使用率大于 storage_flood_stage_usage_percent,并且 磁盘空间剩余大小小于 storage_flood_stage_left_capacity_bytes 时,该磁盘不会再被作为以下操作的目的路径,并禁止某些操作:

Tablet 均衡操作(Balance)
Colocation 表数据分片的重分布(Relocation)
副本补齐
恢复操作(Restore)
数据导入(Load/Insert)

BE 参数

危险水位:

capacity_used_percent_flood_stage 默认 95 (95%)。
capacity_min_left_bytes_flood_stage 默认 1GB。
当磁盘空间使用率大于 storage_flood_stage_usage_percent,并且 磁盘空间剩余大小小于 storage_flood_stage_left_capacity_bytes 时,该磁盘上的以下操作会被禁止:

Base/Cumulative Compaction。
数据写入。包括各种导入操作。
Clone Task。通常发生于副本修复或均衡时。
Push Task。发生在 Hadoop 导入的 Loading 阶段,下载文件。
Alter Task。Schema Change 或 Rollup 任务。
Download Task。恢复操作的 Downloading 阶段。

磁盘空间释放

当磁盘空间高于高水位甚至危险水位后,很多操作都会被禁止。此时可以尝试通过以下方式减少磁盘使用率,恢复系统。

删除表或分区

通过删除表或分区的方式,能够快速降低磁盘空间使用率,恢复集群。注意:只有 DROP 操作可以达到快速降低磁盘空间使用率的目的,DELETE 操作不可以。

DROP TABLE tbl;
ALTER TABLE tbl DROP PARTITION p1;
扩容 BE## 标题

扩容后,数据分片会自动均衡到磁盘使用率较低的 BE 节点上。扩容操作会根据数据量及节点数量不同,在数小时或数天后使集群到达均衡状态。

修改表或分区的副本

可以将表或分区的副本数降低。比如默认3副本可以降低为2副本。该方法虽然降低了数据的可靠性,但是能够快速的降低磁盘使用率,使集群恢复正常。该方法通常用于紧急恢复系统。请在恢复后,通过扩容或删除数据等方式,降低磁盘使用率后,将副本数恢复为 3。

修改副本操作为瞬间生效,后台会自动异步的删除多余的副本。

ALTER TABLE tbl MODIFY PARTITION p1 SET(“replication_num” = “2”);

删除多余文件

当 BE 进程已经因为磁盘写满而挂掉并无法启动时(此现象可能因 FE 或 BE 检测不及时而发生)。需要通过删除数据目录下的一些临时文件,保证 BE 进程能够启动。以下目录中的文件可以直接删除:

log/:日志目录下的日志文件。
snapshot/: 快照目录下的快照文件。
trash/:回收站中的文件。
这种操作会对 从 BE 回收站中恢复数据 产生影响。

如果BE还能够启动,则可以使用ADMIN CLEAN TRASH ON(BackendHost:BackendHeartBeatPort);来主动清理临时文件,会清理 所有 trash文件和过期snapshot文件,这将影响从回收站恢复数据的操作 。

如果不手动执行ADMIN CLEAN TRASH,系统仍将会在几分钟至几十分钟内自动执行清理,这里分为两种情况:

如果磁盘占用未达到 危险水位(Flood Stage) 的90%,则会清理过期trash文件和过期snapshot文件,此时会保留一些近期文件而不影响恢复数据。
如果磁盘占用已达到 危险水位(Flood Stage) 的90%,则会清理 所有 trash文件和过期snapshot文件, 此时会影响从回收站恢复数据的操作 。 自动执行的时间间隔可以通过配置项中的max_garbage_sweep_interval和max_garbage_sweep_interval更改。
出现由于缺少trash文件而导致恢复失败的情况时,可能返回如下结果:

{“status”: “Fail”,“msg”: “can find tablet path in trash”}
删除数据文件(危险!!!)

当以上操作都无法释放空间时,需要通过删除数据文件来释放空间。数据文件在指定数据目录的 data/ 目录下。删除数据分片(Tablet)必须先确保该 Tablet 至少有一个副本是正常的,否则删除唯一副本会导致数据丢失。假设我们要删除 id 为 12345 的 Tablet:

找到 Tablet 对应的目录,通常位于 data/shard_id/tablet_id/ 下。如:

data/0/12345/

记录 tablet id 和 schema hash。其中 schema hash 为上一步目录的下一级目录名。如下为 352781111:

data/0/12345/352781111

删除数据目录:

rm -rf data/0/12345/

删除 Tablet 元数据(具体参考 Tablet 元数据管理工具)

./lib/meta_tool --operation=delete_header --root_path=/path/to/root_path --tablet_id=12345 --schema_hash= 352781111

Doris之磁盘空间管理(重点)相关推荐

  1. ceph bluestore中的磁盘空间管理

    ceph bluestore摒弃了传统的本地文件系统,而直接使用裸磁盘作为OSD的存储介质,因而需要自行管理磁盘空间的分配与回收 概述 一个设计良好的磁盘空间管理器,需要兼顾空间和时间效率:blues ...

  2. Jenkins服务器磁盘空间管理策略

    Jenkins在帮助我们自动化构建服务的同时也在消耗服务器的磁盘空间,试想如果构建的项目个数很多,而Jenkins 服务器磁盘空间又不是非常大的话,每隔一段时间磁盘空间就会爆满导致Jenkins出现磁 ...

  3. 简单好用的树莓派磁盘空间管理工具

    简单好用的树莓派磁盘空间管理工具 问题来源:树莓派系统备份时全盘备份太浪费空间,而众所周知,windows下是很难对linux定义的磁盘做修改的,在网上冲浪了一会,总结了一个比较方便的方法. 解决办法 ...

  4. 文件管理 磁盘空间管理

    目录 https://blog.csdn.net/weixin_45792450/article/details/109314765 磁盘空间管理意义 文件信息在大部分时间内都是存放在外存储器(主要是 ...

  5. 操作系统 第7 ,8 章 文件与磁盘空间管理

    第7 ,8 章 文件与磁盘空间管理 1.文件和文件系统 文件管理:把所管理的程序和数据组织成一系列的文件,并能进行合理的存储.使用等操作. 1 )基本概念 数据项:描述对象某种属性的字符集:是数据组织 ...

  6. 磁盘空间管理工具FolderSizes

    现在的硬盘已经到了用TB来计量的级别,但也会感觉在不知不觉间空间竟然不够用了!到底什么东西占用了我们这么多的磁盘空间呢? 这个软件可以帮你快速进行分析. FolderSizes 企业版是一款优秀的磁盘 ...

  7. 正版软件 | DaisyDisk:Mac 电脑一流的磁盘空间管理工具

    使用 Mac 工作时,平时创建并下载大量文件,但很容易忘记或者很少删除这些内容.但是有一天,您发现启动磁盘已红,但是自己又好似没有安装啥软件,这时候就会想到底是哪些数据占用了这么大的空间?! 作为一名 ...

  8. 《操作系统》知识点整理(十二)——文件与磁盘空间管理

    7.8文件与磁盘管理 1.文件和文件系统 文件管理:把所管理的程序和数据组织成一系列的文件,并能进行合理的存储.使用等操作. 1 )基本概念 数据项:描述对象某种属性的字符集:是数据组织中可以命名的最 ...

  9. C/C++开发,c/c++如何实现根据磁盘空间管理自己的日志文件案例

    目录 一.本地日志文件管理设计 二.案例实现 三.案例代码设计 四.编译实现 五.附录说明 一.本地日志文件管理设计 在前文"c++中如何利用VA_LIST 和单体模式,构建自己的log小系 ...

最新文章

  1. mysql如何按行数匹配_mysql – 是否可以使用MATCH AGAINST计算每行匹配的单词数
  2. BYOD安全保护的“原生态”方法
  3. c# 操作文件_小练习(音乐播放器)
  4. BUUCTF-Reverse:reverse3
  5. Spring Boot文档阅读笔记-构建Restful风格的WebService
  6. Android -- 自定义ScrollView实现放大回弹效果
  7. CASE WHEN语句中加IN应该如何使用
  8. 厦门大学c语言第七八章作业答案,厦门大学 运筹学 第七、八章作业
  9. zeroc ice的概念、组成与服务
  10. 除了允许变量被const函数修改之外,'mutable'关键字是否有任何其他用途?
  11. 找种子你还在用百度?七个你绝没用过的搜索引擎
  12. cad卸载_永远不舍得卸载的6款CAD插件,完全免费,让你三小时做一套图!
  13. EndNote X9破解之后遇到的问题
  14. 诺基亚S40系统手机使用技巧大全(此乃刘某整理)
  15. matlab空间光调制器,空间光调制器原理与应用
  16. ffmpeg安装之mac安装
  17. 计算机网络通信同步异步效率,同步传输和异步传输的区别及优缺点
  18. Agent XPs disable
  19. python中axis的理解
  20. IAR Error[Pe020]: identifier 'FILE' is undefined 解决方法

热门文章

  1. python语言与c语言相比在分支结构上有什么不同_C语言顺序结构和分支结构总结...
  2. 创建多模块springcloud应用eureka server和client和消费端demo
  3. requestAnimationFrame用法
  4. 【Win 10应用开发】Adaptive磁贴模板的XML文档结构
  5. mysql配置主从数据库_mysql配置主从数据库
  6. facebook react.js
  7. ISE_FIFO_IP核接口测试(二)
  8. php 嵌套函数公式解析,Pyparsing,使用嵌套解析器解析php函数注释块的内容
  9. vue中v-for的使用以及注意事项
  10. DI使用value属性与value标签的区别以及xml预定义实体引用