2015-11-11 4 views
0

Я делаю несколько экспериментов с hadoop. Для этого я должен играть с некоторыми параметрами конфигурации, такими как размер блоков и коэффициент репликации. Для фактора репликации, я попробовал эту команду:Изменение коэффициента репликации в hadoop

$HADOOP_HOME/bin/hadoop fs -setrep -w -R $var input 

где «вход» является файл, для которого я хочу, чтобы изменить коэффициент репликации, и $ вар представляет собой фактор репликации я хочу.

Когда $ var = 1, он работает. В противном случае возникает следующая ошибка:

Replication 2 set: input 
Waiting for input.............................................................. 
.................................. 

И продолжает добавлять точки неопределенно. Что мне делать?

+0

Сколько узлов данных имеет ваш кластер? – mattinbits

+0

Я запускаю hadoop в псевдораспределенном режиме, поэтому, я думаю, у моего кластера есть только 1 datanode – Joel

ответ

0

Использование опциональной опции «-w» может занять много времени ... потому что вы говорите, что дождаться завершения репликации. Это может занять очень много времени.

  • Это зависит от размера файла, вы устанавливаете коэффициент репликации
  • при $ вар = 1 он просто должен удалить оставшиеся копии на разных узлах (предполагается, что ваш является кластер с несколькими узлами)
  • , когда значение $ var больше существующего значения, потребуется много времени, потому что namenode должен будет искать, какой datanode является бесплатным и готовым принять реплики и должен скопировать файл.
  • Если кластер занят выполнением другой операции копирования это также может вызвать задержку


Чтобы проверить, если репликация завершена ....

Hadoop Fsck/путь/к/файл

В приведенной выше команде указано количество блоков, расположение блоков и более подробная информация о файле.

2

Поскольку у вас есть только один datanode, HDFS не может удовлетворить ваш запрос. Флаг -w означает дождаться завершения репликации, чего никогда не будет. Hadoop сохраняет только одну копию на каждом узле, поэтому коэффициент репликации больше 1 невозможен с одним узлом.

+0

Спасибо. Как тогда запустить много узлов данных? – Joel

+0

Ну, для начала вам понадобится несколько машин, либо несколько физических машин, либо несколько виртуальных машин на одной физической машине. Если вы идете по маршруту виртуальных машин, вам, вероятно, понадобится довольно мощный хост-компьютер http://blog.cloudera.com/blog/2014/01/how-to-create-a-simple-hadoop-cluster-with-virtualbox/ Или вы можете развернуть кластер Elastic MapReduce на облаке Amazon. – mattinbits

Смежные вопросы