Как я могу быть уверен, что данные распределены равномерно по узлам hadoop? - PullRequest
6 голосов
/ 21 февраля 2011

Если я копирую данные из локальной системы в HDFS, могу ли я быть уверен, что они равномерно распределены по узлам?

PS HDFS гарантирует, что каждый блок будет храниться на 3 разных узлах. Но значит ли это, что все блоки моих файлов будут отсортированы на тех же 3 узлах? Или HDFS выберет их случайным образом для каждого нового блока?

Ответы [ 4 ]

9 голосов
/ 21 февраля 2011

Если ваша репликация установлена ​​на 3, она будет размещена на 3 отдельных узлах.Количество узлов, на которых он размещен, зависит от вашего коэффициента репликации.Если вы хотите большего распределения, вы можете увеличить номер репликации, отредактировав $HADOOP_HOME/conf/hadoop-site.xml и изменив значение dfs.replication.

Я считаю, что новые блоки размещаются почти случайным образом.Некоторое внимание уделяется распределению между различными стойками (когда hadoop узнает о стойках).Существует пример (не удается найти ссылку), что если у вас есть репликация на 3 и 2 стойках, 2 блока будут в одной стойке, а третий блок будет размещен в другой стойке.Я бы предположил, что не показано предпочтение того, какой узел получает блоки в стойке.

Я не видел ничего, указывающего или заявляющего предпочтение хранить блоки одного и того же файла на одних и тех же узлах.

Если вы ищете способы принудительного балансирования данных между узлами (с репликацией при любом значении), простой параметр - $HADOOP_HOME/bin/start-balancer.sh, который запустит процесс балансировки для автоматического перемещения блоков вокруг кластера.Этот и некоторые другие варианты балансировки можно найти в Hadoop FAQs

Надеюсь, это поможет.

3 голосов
/ 21 февраля 2011

Вы можете открыть HDFS Web UI через порт 50070 Вашего наменода.Он покажет вам информацию об узлах данных.Там вы увидите одну вещь - используемое пространство на узел.
Если у вас нет пользовательского интерфейса - вы можете посмотреть на пространство, используемое в каталогах HDFS узлов данных.
Если у вас есть перекос данных, вы можете запустить ребалансировщик, который будет решать его постепенно.

2 голосов
/ 02 марта 2013

Теперь с патчем Hadoop-385 мы можем выбрать политику размещения блоков, чтобы разместить все блоки файла в одном узле (и аналогично для реплицированных узлов). Прочитайте блог на эту тему - посмотрите раздел комментариев.

0 голосов
/ 21 февраля 2011

Да, Hadoop распределяет данные по блокам, поэтому каждый блок будет распределяться отдельно.

...