共计 2082 个字符,预计需要花费 6 分钟才能阅读完成。
1、背景
在咱们的 hadoop 集群运行一段过程中,因为多种起因,数据在 DataNade 的磁盘之间的散布可能是不平均。比方: 咱们刚刚给某个 DataNode 新减少了一块磁盘或者集群上存在大批量的 write & deltete 操作等灯。那么有没有一种工具,可能使单个 DataNode 中的多个磁盘的数据平衡呢?借助 Hadoop 提供的 Diskbalancer
命令行工具能够实现。
2、hdfs balancer 和 hdfs disk balancer 有何不同?
hdfs balancer:
是为了集群中 DataNode 的数据平衡,即针对多个 DataNode 的。
hdfs disk balancer:
是为了使单台 DataNode 中的多个磁盘中的数据平衡。
留神:
目前 DiskBalancer
不反对跨存储介质(SSD
、DISK
等)的数据转移,所以磁盘的平衡都是要求在一个 storageType 下的。因为 hdfs 中存在 异构存储
。
3、操作
3.1 生成打算
[hadoopdeploy@hadoop01 ~]$ hdfs diskbalancer -plan hadoop01 -out hadoop01-plan.json
-plan:
前面接的是主机名。-out:
指定打算文件的输入地位。
3.2 执行打算
[hadoopdeploy@hadoop01 ~]$ hdfs diskbalancer -execute hadoop01-plan.json
3.3 查问打算
[hadoopdeploy@hadoop01 ~]$ hdfs diskbalancer -query hadoop01
-query
前面跟的是 主机名
3.4 勾销打算
[hadoopdeploy@hadoop01 ~]$ hdfs diskbalancer -cancel hadoop01-plan.json
4、和 disk balancer 相干的配置
配置 | 形容 |
---|---|
dfs.disk.balancer.enabled |
此参数管制是否为集群启用 diskbalancer。如果未启用,任何执行命令都将被 DataNode 回绝。默认值为 true。 |
dfs.disk.balancer.max.disk.throughputInMBperSec |
这管制了 diskbalancer 在复制数据时耗费的最大磁盘带宽。如果指定了 10MB 之类的值,则 diskbalancer 均匀只会复制 10MB/S。默认值为 10MB/S。 |
dfs.disk.balancer.max.disk.errors |
设置可能容忍的在指定的挪动过程中呈现的最大谬误次数,超过此阈值则失败。例如,如果一个打算有 3 对磁盘要在其中复制,并且第一个磁盘集遇到超过 5 个谬误,那么咱们放弃第一个正本并启动打算中的第二个正本。最大谬误的默认值设置为 5。 |
dfs.disk.balancer.block.tolerance.percent |
设置磁盘之间进行数据平衡操作时,各个磁盘的数据存储量与现实状态之间的差别阈值。取值范畴[1-100],默认为 10。例如,各个磁盘的现实数据存储量为 100 GB,此参数设置为 10。那么,当指标磁盘的数据存储量达到 90 GB 时,则认为该磁盘的存储状态就曾经达到预期。 |
dfs.disk.balancer.plan.threshold.percent |
设置在磁盘数据平衡中可容忍的两磁盘之间的数据密度域值差,取值范畴[1-100],默认为 10。如果任意两个磁盘数据密度差值的绝对值超过了阈值,则阐明须要对该的磁盘进行数据平衡。例如,如果一个 2 盘节点上的总数据为 100 GB,那么磁盘均衡器计算每个磁盘上的期望值为 50 GB。如果容差为 10%,则单个磁盘上的数据须要大于 60 GB(50 GB + 10% 容差值),DiskBalancer 能力开始工作。 |
dfs.disk.balancer.plan.valid.interval |
磁盘平衡器打算无效的最大工夫。反对以下后缀(不辨别大小写):ms(milis)、s(sec)、m(min)、h(h)、d(day)以指定工夫(例如 2s、2m、1h 等)。如果未指定后缀,则假设为毫秒。默认值为 1d |
5、额定知识点
5.1 新的 block 存储到那个磁盘 (卷) 中
当数据写入新的 block 时,DataNode 会依据策略抉择不同的磁盘来存储。
循环策略:
默认策略,将新的块平均的散布在可用的磁盘上,可能造成数据歪斜。
可用空间策略:
抉择更多可用空间 (按百分比) 的磁盘。可能造成在某段时间内,某个磁盘的 IO 压力变大。
5.2 磁盘数据密度度量规范
上图来自 https://www.bilibili.com/video/BV11N411d7Zh/?p=81
6、参考文档
1、https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSDiskbalancer.html
2、https://help.aliyun.com/document_detail/467585.html
3、https://www.bilibili.com/video/BV11N411d7Zh/?p=81