Параметры командной строки Hadoop не передаются удаленному отладчику Java

У меня установлен хауп 1.0.4. Я изменил файл /usr/bin/hadoop, добавив следующее:

HADOOP_DEBUG="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5000"

Элиф [ "$ КОМАНДА" = "баночка" ] ; тогда

КЛАСС = org.apache.hadoop.util.RunJar

HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"

elif [ "$ COMMAND" = "jar-debug" ] ; тогда

КЛАСС = org.apache.hadoop.util.RunJar

HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS $HADOOP_DEBUG"

КОМАНДА="банка"

Таким образом, я могу запустить «hadoop jar SomeJar.jar SomeClass» для нормального запуска или запустить «hadoop jar-debug SomeJar.jar SomeClass» для запуска в режиме отладки. Это работает, за исключением случаев, когда я хочу передать аргументы командной строки в свой класс (например, в примере с WordCount). Например, запуск:

"hadoop jar-debug WordCount.jar WordCount InputDir OutputDir"

с точкой останова в первой строке в основном классе показывает, что String[] args является пустой строкой (что, очевидно, позже приведет к сбою программы). Если я запускаю его с помощью обычной команды jar, он работает нормально (поэтому очевидно, что аргументы командной строки передаются просто отлично, используя обычный jar).

Кто-нибудь знает, что здесь происходит? Я серьезно застрял. Заранее спасибо.


person JHowIX    schedule 01.02.2013    source источник
comment
Просто обновление: параметры командной строки передаются нормально при запуске отладки в реальном кластере. Они не передаются только при работе в псевдораспределенном режиме... странно   -  person JHowIX    schedule 01.02.2013


Ответы (1)


Обновление для тех, кто в будущем столкнется с этой проблемой:

Если удаленный отладчик java запущен для прослушивания неправильного IP-адреса (IE прослушивает удаленный узел имени вместо локального хоста), JRD все равно запустится, но параметры командной строки не будут переданы.

person JHowIX    schedule 08.02.2013