当前位置: 首页 > 后端技术 > Java

hdfs磁盘平衡器

时间:2023-04-01 22:14:57 Java

1。背景在我们的hadoop集群运行一段时间后,由于各种原因,DataNade的磁盘之间可能存在数据分布不均的情况。例如:我们刚刚给一个DataNode添加了一个新的磁盘或者集群上有大量的write&deltete操作。那么有没有一种工具可以在单个DataNode中平衡多个磁盘的数据呢?这可以借助Hadoop提供的Diskbalancer命令行工具来实现。2、hdfsbalancer和hdfsdiskbalancer有什么区别?hdfsbalancer:用于集群中DataNode的数据均衡,即针对多个DataNode。hdfsdiskbalancer:在单个DataNode中平衡多个磁盘中的数据。注意:目前DiskBalancer不支持跨存储介质(SSD、DISK等)传输数据,所以需要在一种storageType下进行磁盘均衡。因为hdfs中存在异构存储。3.操作3.1生成计划[hadoopdeploy@hadoop01~]$hdfsdiskbalancer-planhadoop01-outhadoop01-plan.json-plan:后面是主机名。-out:指定计划文件的输出位置。3.2执行计划[hadoopdeploy@hadoop01~]$hdfsdiskbalancer-executehadoop01-plan.json3.3查询计划[hadoopdeploy@hadoop01~]$hdfsdiskbalancer-queryhadoop01-query后跟主机名3.4取消计划[hadoopdeploy@hadoop01~]$hdfsdiskbalancer-cancelhadoop01-plan.json4,磁盘平衡器相关的配置说明dfs.disk.balancer.enabled该参数控制是否为集群开启diskbalancer。如果未启用,任何执行的命令都将被DataNodes拒绝。默认值是true。dfs.disk.balancer.max.disk.throughputInMBperSec这控制了磁盘平衡器在复制数据时消耗的最大磁盘带宽。如果指定了10MB之类的值,diskbalancer平均只会复制10MB/S。默认值为10MB/S。dfs.disk.balancer.max.disk.errors设置指定移动过程中可以容忍的最大错误数,如果超过这个阈值则失败。例如,如果一个计划有3对磁盘要在其中复制,并且第一个磁盘集遇到超过5个错误,那么我们放弃第一个副本并开始计划的第二个副本。maxerrors的默认值设置为5。dfs.disk.balancer.block.tolerance.percent设置了磁盘之间进行数据平衡操作时,每个磁盘的数据存储容量与理想状态之间差异的阈值。取值范围为[1-100],默认为10。例如,每个磁盘理想的数据存储量为100GB,则该参数设置为10。那么,当目标的数据存储容量为磁盘达到90GB,则认为磁盘的存储状态达到了预期。dfs.disk.balancer.plan.threshold.percent设置磁盘数据均衡时可以容忍的两块磁盘的数据密度阈值差值,取值范围[1-100],默认为10。如果取绝对值任意两块磁盘的数据密度差值超过阈值,表示需要对该磁盘进行数据均衡。例如,如果2磁盘节点上的总数据为100GB,则磁盘平衡器计算出每个磁盘上的预期值为50GB。如果容差为10%,则需要单个磁盘上的数据大于60GB(50GB+10%容差值),DiskBalancer才能开始工作。dfs.disk.balancer.plan.valid.interval磁盘平衡器计划有效的最长时间。支持以下后缀(不区分大小写):ms(英里)、s(秒)、m(分钟)、h(小时)、d(天)以指定时间(例如2s、2m、1h等)。如果未指定后缀,则假定为毫秒。默认值为1d5,补充知识点5.1新块存储在哪个磁盘(卷)当数据写入新块时,DataNode会根据策略选择不同的磁盘存储。循环策略:默认策略,将新块均匀分布在可用磁盘上,可能会导致数据倾斜。可用空间策略:选择具有更多可用空间(按百分比)的磁盘。可能会导致某个磁盘的IO压力在一定时间内升高。5.2DiskDataDensityMetrics上图来自https://www.bilibili.com/video/BV11N411d7Zh/?p=816,参考文档1,https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSDiskbalancer.html2.https://help.aliyun.com/document_detail/467585.html3.https://www.bilibili.com/video/BV11N411d7Zh/?p=81