数据均衡
数据节点间数据均衡
登录后可跨设备保存划线和私人笔记登录
概述
Container Balancer 是 Apache Ozone 中的一个工具,用于在集群内的各个节点之间均衡数据容器。它的首要目标是依据 Datanode 的磁盘空间使用情况,确保数据分布均匀。这有助于避免某些 Datanode 磁盘被写满,而另一些却未被充分利用的情况。
该均衡器通过移动 CLOSED 状态的容器副本来工作,因此不会干扰正在进行的 I/O 操作。它既支持普通容器,也支持纠删码(Erasure Coded,EC)容器。为保证集群的稳定性,在存储容器管理器(Storage Container Manager,SCM)发生故障切换后,Container Balancer 的启动会延迟一段时间。
命令行用法
Container Balancer 通过 ozone admin containerbalancer 命令进行管理。
启动
使用默认设置启动 Container Balancer:
ozone admin containerbalancer start你也可以使用特定选项来启动均衡器:
ozone admin containerbalancer start [options]选项:
| 选项 | 说明 |
|---|---|
-t, --threshold | 数据节点利用率偏离集群平均利用率超过该百分比时,将对其进行再平衡。默认为 10%。 |
-i, --iterations | 平衡器最多连续运行的迭代次数。默认为 10。设为 -1 表示无限次迭代。 |
-d, --maxDatanodesPercentageToInvolvePerIteration | 单次迭代中可参与平衡的健康在服务数据节点的最大百分比。默认为 20%。 |
-s, --maxSizeToMovePerIterationInGB | 单次迭代中可移动的数据最大容量(GB)。默认为 500GB。 |
-e, --maxSizeEnteringTargetInGB | 单次迭代中可进入目标数据节点的最大容量(GB)。默认为 26GB。 |
-l, --maxSizeLeavingSourceInGB | 单次迭代中可从源数据节点移出的最大容量(GB)。默认为 26GB。 |
--balancing-iteration-interval-minutes | 容器平衡器两次迭代之间的间隔时间(分钟)。默认为 70 分钟。 |
--move-timeout-minutes | 允许单个容器从源端移动到目标端的时间(分钟)。默认为 65 分钟。 |
--move-replication-timeout-minutes | 作为容器移动的一部分,允许单个容器从源端复制到目标端的时间(分钟)。默认为 50 分钟。 |
--move-network-topology-enable | 选择目标节点时是否考虑网络拓扑。默认为 false。 |
--include-datanodes | 以逗号分隔的数据节点主机名或 IP 地址列表,这些节点将被纳入平衡。 |
--exclude-datanodes | 以逗号分隔的数据节点主机名或 IP 地址列表,这些节点将被排除在平衡之外。 |
状态
查看容器平衡器的状态:
ozone admin containerbalancer status要获取更详细的状态信息,包括各次迭代的历史记录:
ozone admin containerbalancer status -v --history停止
要停止 Container Balancer:
ozone admin containerbalancer stop配置
Container Balancer 也可以通过 ozone-site.xml 文件进行配置。
| 属性 | 说明 | 默认值 |
|---|---|---|
hdds.container.balancer.utilization.threshold | 如果每个 Datanode 的使用率与集群使用率的差异都不超过该阈值,则认为集群是平衡的。 | 10% |
hdds.container.balancer.datanodes.involved.max.percentage.per.iteration | 单次迭代中可以参与均衡的健康、在服务状态的 Datanode 的最大百分比。 | 20% |
hdds.container.balancer.size.moved.max.per.iteration | Container Balancer 在单次迭代中移动的数据最大总量。 | 500GB |
hdds.container.balancer.size.entering.target.max | 每次迭代中可以进入目标 Datanode 的最大数据量。 | 26GB |
hdds.container.balancer.size.leaving.source.max | 每次迭代中可以离开源 Datanode 的最大数据量。 | 26GB |
hdds.container.balancer.iterations | Container Balancer 将运行的迭代次数。 | 10 |
hdds.container.balancer.exclude.containers | 要排除在均衡之外的容器 ID 列表,以逗号分隔。 | "" |
hdds.container.balancer.move.timeout | 单个容器从源移动到目标所允许的时间。 | 65m |
hdds.container.balancer.move.replication.timeout | 作为容器移动的一部分,单个容器从源复制到目标所允许的时间。 | 50m |
hdds.container.balancer.balancing.iteration.interval | Container Balancer 每次迭代之间的时间间隔。 | 70m |
hdds.container.balancer.include.datanodes | Datanode 主机名或 IP 地址列表,以逗号分隔。仅对列表中指定的 Datanode 进行均衡。 | "" |
hdds.container.balancer.exclude.datanodes | Datanode 主机名或 IP 地址列表,以逗号分隔。列表中指定的 Datanode 将被排除在均衡之外。 | "" |
hdds.container.balancer.move.networkTopology.enable | 为源选择目标时是否考虑网络拓扑。 | false |
hdds.container.balancer.trigger.du.before.move.enable | 是否在开始均衡迭代之前立即向所有健康且在服务状态的数据节点发送命令以运行 du。 | false |
评论
登录后参与评论
正在加载评论…
KnowForge