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节点并且状态显示正常运行中
硬件信息
- CPU :1C
- CPU型号:ARM64
- 内存 :2GB
- 硬盘 :36GB SSD
软件信息
- VM镜像版本 :CentOS-7
- Apahce Doris版本 :1.2.4.1
- 集群规模: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 命令说明:
- 该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。
- 该命令是一个异步操作。执行后,可以通过 SHOW PROC '/backends'; 看到该 BE 节点的 isDecommission 状态为 true。表示该节点正在进行下线。
- 该命令不一定执行成功。比如剩余 BE 存储空间不足以容纳下线 BE 上的数据,或者剩余机器数量不满足最小副本数时,该命令都无法完成,并且 BE 会一直处于 isDecommission 为 true 的状态。
- DECOMMISSION 的进度,可以通过 SHOW PROC '/backends'; 中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少。
- 该操作可以通过:
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 缩容前
2.2.2 缩容中
缩容失败;缩容BE节点一直处于 isDecommission 为 true 的状态,因为剩余机器数量不满足最小副本数(3个副本)。
- 取消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副本的量
- 满足缩容的副本要求后,重新执行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分布
四、总结
- 扩容会自动进行数据均衡
- 缩容会自动进行数据均衡,但需要注意不能直接DROP,需要走DECOMMISSION并且sh stop_be.sh
- 迁移效率参考:16:32开始复制迁移(1.590 TB / 141tablets);17:39迁移完成,平均1667235m / 4020s = 414m/s(大表耗时,可通过weiui的statistic查看还在迁移的tablet);迁移完后节点就完成下线、show PROC '/backends'也不会出现下线节点了。