Ошибка Hadoop без sudo - временная директория является причиной?

Я устанавливаю Hadoop MapReduce 1.0.3 в Debian, в моем каталоге $HOME/hadoop-1.0.3. затем

cd $HOME/hadoop-1.0.3

Все необходимое программное обеспечение установлено. Текущий пользователь - adminUser - пользователь sudo

Я запускаю программу в локальном режиме с конфигурацией по умолчанию Hadoop:

./bin/hadoop --config ./default_conf_directory jar my_program.jar my_main_class ./input_directory ./output_directory

It fails with error: java.io.IOException: Job failed!

Я добавляю sudo для этой команды

sudo ./bin/hadoop --config ./default_conf_directory jar my_program.jar my_main_class ./input_directory ./output_directory

Он работает хорошо и успешно со всеми ожидаемыми результатами. Может быть, Hadoop уже сделал что-то, что требует прав sudo? Не могли бы вы рассказать мне о том, что делает Hadoop, прежде чем распространять задачи в TaskTracker?

Откройте файл hadoop-1.0.3/src/core/core-default.xml, я вижу эту конфигурацию:

    <property> <name>hadoop.tmp.dir</name>  <value>/tmp/hadoop-${user.name}</value <description>A base for other temporary directories.</description> </property>

Откройте файл hadoop-1.0.3/src/mapred/mapred-default.xml, я вижу эту конфигурацию:

    <property> <name>mapred.local.dir</name> <value>${hadoop.tmp.dir}/mapred/local</value> <description>The local directory where MapReduce stores intermediate data files.  May be a comma-separated list of directories on different devices in order to spread disk i/o. Directories that do not exist are ignored.</description></property>

Я просматриваю / tmp и нахожу два каталога hadoop-adminUser (созданный после неудачного запуска без sudo) и hadoop-root (созданный после успешного запуска с sudo).

Просматривая каталог /tmp/hadoop-root (созданный после успешного запуска с помощью sudo), я нахожу следующие структуры:

/tmp/hadoop-root/mapred/staging ; /tmp/hadoop-root/mapred/local ; /tmp/hadoop-root/mapred/local/taskTracker ; /tmp/hadoop-root/mapred/local/taskTracker/root/jobcache/...; /tmp/hadoop-root/mapred/local/LocalRunner

все нормально

но когда я просматриваю каталог /tmp/hadoop-adminUser (созданный после неудачного запуска без sudo), я вижу только

/tmp/hadoop-adminUser/mapred/staging ; /tmp/hadoop-adminUser/mapred/local ; /tmp/hadoop-adminUser/mapred/local/LocalRunner

Здесь нет директории taskTracker. Может быть, это причина неудачной работы. Но я не понимаю, почему каталог taskTracker не создается в каталоге /tmp/hadoop-adminUser, потому что adminUser имеет право создавать / удалять каталог / файлы в / tmp. Я пробовал с Linux команду mkdir и т. Д. Все хорошо.

Я уже изменил конфигурацию по умолчанию, изменив временный каталог, добавив эту конфигурацию в core-site.xml в моем каталоге конфигурации:

<property> <name>hadoop.tmp.dir</name>  <value>/tmp_hadoop/hadoop-${user.name}</value>  <description>A base for other temporary directories.</description> </property>

Я создаю / tmp_hadoop, используя sudo, а затем передаю права на adminUser через chown. Все хорошо. Затем я запускаю эту команду hadoop с и без sudo и получаю одинаковые результаты. sudo успешен и без sudo терпит неудачу с тем же феноменом. Существует /tmp_hadoop/hadoop-root/mapred/local/taskTracker/... но нет /tmp_hadoop/hadoop-adminUser/mapred/local/taskTracker/...

Может быть, Hadoop уже сделал что-то, что требует прав sudo, а не только создать каталог в каталоге / tmp?

Пожалуйста, объясните и спасибо

0 ответов

Другие вопросы по тегам