hadoop大数据集群中更换磁盘,balance的速度缓慢问题(解决)
看现象只有4个bloucks在执行的
调整参数:
增大配置参数,观察重新负载的速度
修改配置文件 hdfs-site.xml
dfs.datanode.balance.max.concurrent.moves=100
dfs.balancer.max-size-to-move=21474836480
dfs.balancer.moverThreads=1300
dfs.balabcer.getBlocks.size=4294967296
dfs.datanode.balance.bandwidthPerSec=20971520
以上参数需要重启hdfs
参数说明:
dfs.datanode.balance.max.concurrent.moves:此参数定义了数据平衡器并行移动数据块的最大并发数。它限制了同时进行数据移动的任务数量。
dfs.balancer.max-size-to-move:该参数定义了数据平衡器所能移动的单个数据块的最大大小。超过此大小的数据块将不会被移动。
dfs.balancer.moverThreads:此参数指定了数据平衡器使用的线程数。它决定了同时执行数据移动任务的线程数量。
dfs.balancer.getBlocks.size:该参数定义了在进行数据平衡期间每次获取数据块信息的最大数量。当数据平衡器需要了解 DataNode 上的数据块分布时,它可以请求获取这些信息。
dfs.datanode.balance.bandwidthPerSec:此参数定义了每秒钟用于数据平衡的最大带宽限制。它限制了数据平衡器在集群中移动数据时的带宽使用
查看默认参数的命令:
hdfs getconf -confKey dfs.datanode.balance.max.concurrent.moves
还需要调整的参数:
dfs.namenode.replication.max-streams:该参数用于指定在同一时间内执行数据块复制操作的最大流数。具体来说,它限制了在复制过程中可以并行进行的数据块传输流的数量。默认情况下,它的值等于 dfs.namenode.replication.work.multiplier.per.iteration 的值。
dfs.namenode.replication.max-streams-hard-limit:这是一个硬限制参数,用于限制在同一时间内执行数据块复制操作的最大流数。与上述参数相比,它提供了一种更强制的限制,无论 dfs.namenode.replication.work.multiplier.per.iteration 的值如何,都不会超过该硬限制。如果未设置该参数,它的值将等于 dfs.namenode.replication.max-streams 的值。
dfs.namenode.replication.work.multiplier.per.iteration:该参数用于控制每次迭代期间执行的复制工作量。它表示每次迭代中生成新的复制任务的数量。具体来说,每个迭代将根据 dfs.replication 的值和该参数的乘积来生成复制任务。例如,如果 dfs.replication 为 3,dfs.namenode.replication.work.multiplier.per.iteration 为 2,则每次迭代会生成 6 个复制任务。默认情况下,该参数的值为 4。
dfs.replication.considerLoad:该参数在进行数据块复制操作时,考虑数据节点的负载情况。默认值为 true,即复制操作会考虑数据节点的负载情况来分配任务。如果希望在进行数据块复制时忽略节点的负载情况,可以将该参数设置为 false。
速度快了很多的