1、背景 在我们的hadoop集群运行一段过程中,由于多种原因,数据在DataNade的磁盘之间的分布可能是不均匀。比如:我们刚刚给某个DataNode新增加了一块磁盘或者集群上存在大批量的writedeltete操作等灯。那么有没有一种工具,能够使单个DataNode中的多个磁盘的数据均衡呢?借助Hadoop提供的Diskbalancer命令行工具可以实现。2、hdfsbalancer和hdfsdiskbalancer有何不同? hdfsbalancer:是为了集群中DataNode的数据均衡,即针对多个DataNode的。 hdfsbalancer hdfsdiskbalancer:是为了使单台DataNode中的多个磁盘中的数据均衡。 hdfsdiskbalancer 注意:目前DiskBalancer不支持跨存储介质(SSD、DISK等)的数据转移,所以磁盘的均衡都是要求在一个storageType下的。因为hdfs中存在异构存储。3、操作3。1生成计划〔hadoopdeployhadoop01〕hdfsdiskbalancerplanhadoop01outhadoop01plan。json plan:后面接的是主机名。 out:指定计划文件的输出位置。 生成计划3。2执行计划〔hadoopdeployhadoop01〕hdfsdiskbalancerexecutehadoop01plan。json 执行计划3。3查询计划〔hadoopdeployhadoop01〕hdfsdiskbalancerqueryhadoop01 query后面跟的是主机名 查询计划3。4取消计划〔hadoopdeployhadoop01〕hdfsdiskbalancercancelhadoop01plan。json 取消计划4、和diskbalancer相关的配置 配置 描述 dfs。disk。balancer。enabled 此参数控制是否为集群启用diskbalancer。如果未启用,任何执行命令都将被DataNode拒绝。默认值为true。 dfs。disk。balancer。max。disk。throughputInMBperSec 这控制了diskbalancer在复制数据时消耗的最大磁盘带宽。如果指定了10MB之类的值,则diskbalancer平均只会复制10MBS。默认值为10MBS。 dfs。disk。balancer。max。disk。errors 设置能够容忍的在指定的移动过程中出现的最大错误次数,超过此阈值则失败。例如,如果一个计划有3对磁盘要在其中复制,并且第一个磁盘集遇到超过5个错误,那么我们放弃第一个副本并启动计划中的第二个副本。最大错误的默认值设置为5。 dfs。disk。balancer。block。tolerance。percent 设置磁盘之间进行数据均衡操作时,各个磁盘的数据存储量与理想状态之间的差异阈值。取值范围〔1100〕,默认为10。例如,各个磁盘的理想数据存储量为100GB,此参数设置为10。那么,当目标磁盘的数据存储量达到90GB时,则认为该磁盘的存储状态就已经达到预期。 dfs。disk。balancer。plan。threshold。percent 设置在磁盘数据均衡中可容忍的两磁盘之间的数据密度域值差,取值范围〔1100〕,默认为10。如果任意两个磁盘数据密度差值的绝对值超过了阈值,则说明需要对该的磁盘进行数据均衡。例如,如果一个2盘节点上的总数据为100GB,那么磁盘均衡器计算每个磁盘上的期望值为50GB。如果容差为10,则单个磁盘上的数据需要大于60GB(50GB10容差值),DiskBalancer才能开始工作。 dfs。disk。balancer。plan。valid。interval 磁盘平衡器计划有效的最大时间。支持以下后缀(不区分大小写):ms(milis)、s(sec)、m(min)、h(h)、d(day)以指定时间(例如2s、2m、1h等)。如果未指定后缀,则假定为毫秒。默认值为1d5、额外知识点5。1新的block存储到那个磁盘(卷)中 当数据写入新的block时,DataNode会根据策略选择不同的磁盘来存储。 循环策略:默认策略,将新的块均匀的分布在可用的磁盘上,可能造成数据倾斜。 可用空间策略:选择更多可用空间(按百分比)的磁盘。可能造成在某段时间内,某个磁盘的IO压力变大。5。2磁盘数据密度度量标准 磁盘数据密度度量标准 上图来自https:www。bilibili。comvideoBV11N411d7Zh?p816、参考文档 1、https:hadoop。apache。orgdocscurrenthadoopprojectdisthadoophdfsHDFSDiskbalancer。html 2、https:help。aliyun。comdocumentdetail467585。html3、https:www。bilibili。comvideoBV11N411d7Zh?p81