Если ваша репликация установлена на 3, она будет размещена на 3 отдельных узлах.Количество узлов, на которых он размещен, зависит от вашего коэффициента репликации.Если вы хотите большего распределения, вы можете увеличить номер репликации, отредактировав $HADOOP_HOME/conf/hadoop-site.xml
и изменив значение dfs.replication
.
Я считаю, что новые блоки размещаются почти случайным образом.Некоторое внимание уделяется распределению между различными стойками (когда hadoop узнает о стойках).Существует пример (не удается найти ссылку), что если у вас есть репликация на 3 и 2 стойках, 2 блока будут в одной стойке, а третий блок будет размещен в другой стойке.Я бы предположил, что не показано предпочтение того, какой узел получает блоки в стойке.
Я не видел ничего, указывающего или заявляющего предпочтение хранить блоки одного и того же файла на одних и тех же узлах.
Если вы ищете способы принудительного балансирования данных между узлами (с репликацией при любом значении), простой параметр - $HADOOP_HOME/bin/start-balancer.sh
, который запустит процесс балансировки для автоматического перемещения блоков вокруг кластера.Этот и некоторые другие варианты балансировки можно найти в Hadoop FAQs
Надеюсь, это поможет.