Apache Doris 极简运维之BE扩缩容(1)

Apache Doris 极简运维之BE扩缩容(1)

  • 一、环境信息
  • 二、缩容
    • [2.1 DROP BACKEND缩容](#2.1 DROP BACKEND缩容)
    • [2.2 DECOMMISSION BACKEND缩容](#2.2 DECOMMISSION BACKEND缩容)
      • [2.2.1 缩容前](#2.2.1 缩容前)
      • [2.2.2 缩容中](#2.2.2 缩容中)
      • [2.2.3 缩容后](#2.2.3 缩容后)
  • 三、扩容
    • [3.1 扩容前](#3.1 扩容前)
    • [3.2 扩容中](#3.2 扩容中)
    • [3.3 扩容后](#3.3 扩容后)
  • 四、总结

一、环境信息

已部署三个BE节点并且状态显示正常运行中

硬件信息

  1. CPU :1C
  2. CPU型号:ARM64
  3. 内存 :2GB
  4. 硬盘 :36GB SSD

软件信息

  1. VM镜像版本 :CentOS-7
  2. Apahce Doris版本 :1.2.4.1
  3. 集群规模:1FE * 3BE

二、缩容

2.1 DROP BACKEND缩容

注意:DROP BACKEND 会直接删除该 BE,并且其上的数据将不能再恢复!!!

所以强烈不推荐使用 DROP BACKEND 这种方式删除 BE 节点。当使用这个语句时,会有对应的防误操作提示。

sql 复制代码
-- ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port"; -- 会有误操作提示
-- ALTER SYSTEM DROPP BACKEND "be01:9050"; --直接删除,慎用!

2.2 DECOMMISSION BACKEND缩容

DECOMMISSION 命令说明:

  1. 该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。
  2. 该命令是一个异步操作。执行后,可以通过 SHOW PROC '/backends'; 看到该 BE 节点的 isDecommission 状态为 true。表示该节点正在进行下线。
  3. 该命令不一定执行成功。比如剩余 BE 存储空间不足以容纳下线 BE 上的数据,或者剩余机器数量不满足最小副本数时,该命令都无法完成,并且 BE 会一直处于 isDecommission 为 true 的状态。
  4. DECOMMISSION 的进度,可以通过 SHOW PROC '/backends'; 中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少。
  5. 该操作可以通过:
sql 复制代码
CANCEL DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";

命令取消。取消后,该 BE 上的数据将维持当前剩余的数据量。后续 Doris 重新进行负载均衡

sql 复制代码
-- ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";
ALTER SYSTEM DECOMMISSION BACKEND "be01:9050";

2.2.1 缩容前

http://192.168.31.78:8030/System?path=//backends查看be节点信息

2.2.2 缩容中

缩容失败;缩容BE节点一直处于 isDecommission 为 true 的状态,因为剩余机器数量不满足最小副本数(3个副本)。

  1. 取消DECOMMISSION BACKEND 并将3副本的表都调成2副本
sql 复制代码
-- 取消DECOMMISSION BACKEND
-- CANCEL DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";
CANCEL DECOMMISSION BACKEND "be01:9050";

-- 3副本表调成2副本
-- 非分区部分
ALTER TABLE db.table_name SET ("default.replication_num" = "2");
ALTER TABLE db.table_name SET ("default.replication_allocation" = "tag.location.default: 2");
-- 分区部分
ALTER TABLE zbh_test.dwd_lbu_mbi_bil_income_d02 MODIFY PARTITION (逗号分隔可填写多个分区名) SET("replication_num"="2");

-- 如下图所示tablet数开始减少至2副本的量
  1. 满足缩容的副本要求后,重新执行DECOMMISSION BACKEND
sql 复制代码
-- ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";
ALTER SYSTEM DECOMMISSION BACKEND "be01:9050";

2.2.3 缩容后

副本自动均衡至非下线节点,副本均衡完毕后会自动drop掉下线的be节点,但进程需要自己去stop

shell 复制代码
# 需要手动停止be进程
sh bin/stop_be.sh 

三、扩容

3.1 扩容前

3.2 扩容中

sql 复制代码
-- 新增be节点,需要确保已经start相应的be进程
alter system add backend "192.168.31.136:9050"

-- 如下图所示新be已经加入集群并开始自动进行数据均衡了

3.3 扩容后

数据完全均衡后如下图所示,几乎等同于be缩容完成前2副本的tablet分布

四、总结

  1. 扩容会自动进行数据均衡
  2. 缩容会自动进行数据均衡,但需要注意不能直接DROP,需要走DECOMMISSION并且sh stop_be.sh
  3. 迁移效率参考:16:32开始复制迁移(1.590 TB / 141tablets);17:39迁移完成,平均1667235m / 4020s = 414m/s(大表耗时,可通过weiui的statistic查看还在迁移的tablet);迁移完后节点就完成下线、show PROC '/backends'也不会出现下线节点了。
相关推荐
cominglately32 分钟前
centos单机部署seata
linux·运维·centos
CircleMouse37 分钟前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
小白学大数据40 分钟前
如何使用Selenium处理JavaScript动态加载的内容?
大数据·javascript·爬虫·selenium·测试工具
15年网络推广青哥1 小时前
国际抖音TikTok矩阵运营的关键要素有哪些?
大数据·人工智能·矩阵
Karoku0661 小时前
【k8s集群应用】kubeadm1.20高可用部署(3master)
运维·docker·云原生·容器·kubernetes
木子Linux1 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算
mit6.8242 小时前
Ubuntu 系统下性能剖析工具: perf
linux·运维·ubuntu
节点。csn2 小时前
Hadoop yarn安装
大数据·hadoop·分布式
watermelonoops2 小时前
Windows安装Ubuntu,Deepin三系统启动问题(XXX has invalid signature 您需要先加载内核)
linux·运维·ubuntu·deepin
arnold662 小时前
探索 ElasticSearch:性能优化之道
大数据·elasticsearch·性能优化