у нас есть версия Hadoop - 2.6.4
На машине datanode мы видим, что данные hdfs не сбалансированы
На некоторых дисках используется другой размер sdb. 11G и SDD 17G
/dev/sdd 20G 3.0G 17G 15% /grid/sdd
/dev/sdb 20G 11G 9.3G 53% /grid/sdb <-- WHY DISK DISK NOT BALANCED AS SDD DISK , WHY DISKS ARE DIFF USED SIZE!!!
После поиска в google я нашел следующий интерфейс командной строки (от https://community.hortonworks.com/questions/19694/help-with-exception-from-hdfs-balancer.html )
hdfs balancer -Ddfs.balancer.movedWinWidth=5400000 -Ddfs.balancer.moverThreads=1000 -Ddfs.balancer.dispatcherThreads=200 -Ddfs.datanode.balance.bandwidthPerSec=100000000 -Ddfs.balancer.max-size-to-move=10737418240 -threshold 20 1>/tmp/balancer-out.log 2>/tmp/balancer-debug.log
и после запуска мы получаем тот же размер hdfs
/dev/sdd 20G 3.0G 17G 15% /grid/sdd
/dev/sdb 20G 11G 9.3G 53% /grid/sdb
more /tmp/balancer-out.log Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved The cluster is balanced. Exiting... Mar 7, 2019 5:02:34 PM 0 0 B 0 B 0 B Mar 7, 2019 5:02:34 PM Balancing took 1.453 seconds
Так что на самом деле мы не балансируемся в hdfs
Посоветуйте, пожалуйста, как сбалансировать данные hdfs, чтобы весь диск был с одинаковым используемым размером
NameNode рассматривает различные параметры, прежде чем выбирать DataNodes для получения этих блоков. Некоторые из соображений:
1. Policy to keep one of the replicas of a block on the same node as the node that is writing the block.
2. Need to spread different replicas of a block across the racks so that cluster can survive loss of whole rack.
3. One of the replicas is usually placed on the same rack as the node writing to the file so that cross-rack network I/O is reduced.
4. Spread HDFS data uniformly across the DataNodes in the cluster.
Так что в вашем случае может быть что-то из вышеперечисленного.
Команда Apache Balancer.
hdfs balancer [-threshold <threshold>] [-policy <policy>]
-- threshold *threshold* Percentage of disk capacity. This overwrites the default threshold.
-- policy *policy* *datanode* (default): Cluster is balanced if each datanode is balanced.
*blockpool*: Cluster is balanced if each block pool in each datanode is balanced.