Добавление нового тома в псевдораспределенный узел Hadoop, вызывающий сбой в режиме без вывода сообщений - PullRequest
1 голос
/ 24 февраля 2011

Я пытаюсь добавить новый том в псевдораспределенный узел Hadoop, добавив расположение тома в dfs.name.dir в hdfs-site.xml, и я могу увидеть файл блокировки в этом месте - но попробуйте, как могПохоже, что когда я загружаю файлы (используя куст), эти местоположения почти не используются (хотя появляются файлы блокировки и некоторые подпапки ... поэтому Hadoop явно имел к ним доступ).Когда на главном томе заканчивается свободное место, я получаю следующее исключение:

Failed with exception java.io.IOException: File /tmp/hive-ubuntu/hive_2011-02-24_15-39-15_997_1889807000233475717/-ext-10000/test.csv could only be replicated to 0 nodes, instead of 1
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1417)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:643)

Есть ли какие-нибудь указатели о том, как добавить новые тома в Hadoop?FWIW я использую EC2.

Ответы [ 2 ]

1 голос
/ 24 февраля 2011

Есть несколько вещей, которые вы можете сделать, в соответствии с FAQ :

  1. Вручную скопируйте файлы в HDFS под новым именем, удалите старые файлы, затем переименуйтеновые файлы будут такими же, какими они были изначально.
  2. Временно увеличивайте коэффициент репликации, устанавливая его обратно после выравнивания блоков между узлами.
  3. Удалите полный узел, дождитесь его репликации блоковдругие узлы, затем верните его обратно.Это не очень помогает, потому что ваш полный узел все еще заполнен, когда вы возвращаете его в оперативный режим.
  4. Запустите скрипт ребалансировки на головном узле.

Я бы попробовал запустить #Сначала 4, потом # 2.

1 голос
/ 24 февраля 2011

При добавлении новых дисков / емкости в узел данных Hadoop не гарантирует, что диски будут равномерно распределены по нагрузке (например, он не будет помещать больше блоков на диски с большим количеством свободного места). Лучший способ решить эту проблему - увеличить коэффициент репликации (например, с 2 до 3).

hadoop fs -setrep 3 -R /<path>

Смотреть отчет «Недостаточно реплицированных блоков» на узле имени. Как только он достигнет 0, уменьшите коэффициент репликации (например, с 3 до 2). Это случайным образом удалит реплики из системы, которые должны сбалансировать локальный узел.

hadoop fs -setrep 2 -R /<path>

Он не будет на 100% сбалансированным, но он должен быть в гораздо лучшей форме, чем был раньше. Это в некоторой степени описано в вики Hadoop. Если вы используете псевдораспределение и у вас нет других узлов данных, сценарий балансировки не поможет вам.

http://wiki.apache.org/hadoop/FAQ#If_I_add_new_DataNodes_to_the_cluster_will_HDFS_move_the_blocks_to_the_newly_added_nodes_in_order_to_balance_disk_space_utilization_between_the_nodes.3F

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...