Все задания Hadoop имеют уникальную работу. Вы можете использовать jobid для получения статуса работы или счетчика заданий. Вопрос в том, как я могу получить jobid задания, которое я только что запускал из своего сценария? И, конечно, я хочу сделать это надежным и легким (если возможно) способом.Получить информацию о текущем потоке с помощью hadoop
Пример:
1) из моего сценария я бегу:
hadoop jar ${HADOOP_STREAMING} \
-D mapred.job.name="$NAME" \
-D mapred.reduce.tasks=$NREDUCERS\
-mapper "cat" \
-file ./reducer.py \
-reducer "python ./reducer.py" \
-input hdfs:/logs/2012-06-25/*.bz2 \
-output hdfs:/tmp/test
2) Теперь я хочу, чтобы каким-то образом получить JobId запускаемого задания.
3) Когда у меня есть jobid, я могу выполнить jobo-job и hasoop job -counter.
UPDATE:
Синхронный случай (ждать до завершения, получить JobID, а затем попросить статус/счетчиков), как представляется, необходимый минимум, но иногда это не удобно пользоваться. Иногда я хочу запускать несколько операций потоковой передачи данных в режиме onoop (в качестве фоновых задач), и я хочу запомнить все значения, которые я могу использовать позже, например. для анализа рабочего процесса.
На самом деле я выяснил какое-то решение, но считаю это хаком, что меня очень беспокоит. Буду признателен, если кто-нибудь покажет мне более элегантное решение. Вот решение:
1) когда я запускаю операцию потоковой передачи hadoop, я должен указать каталог hdfs вывода .
2) с помощью этого каталога можно получить доступ к файлу конфигурации задания в HDFS:
CONF_FILE_PATH=`hadoop fs -stat hdfs:<output_dir_path>/_logs/history/*.xml | awk '{print $NF}'`
3) И, наконец, я могу извлечь JobId от имени файла конфигурации
В вашем примере случае , не выполняется ли выполнение до тех пор, пока задание не завершится до завершения оболочки? (в этом случае не так много точек опроса статус). Или вас интересует, удалось ли выполнить задание/не удалось и какие-либо окончательные значения счетчика заданий? –
Синхронный корпус (ждать до завершения, получать задание, а затем запрашивать статус/счетчики), по-видимому, является минимальным, но иногда это не удобно использовать.Иногда я хочу запускать несколько операций потоковой передачи данных в режиме onoop (в качестве фоновых задач), и я хочу запомнить все значения, которые я могу использовать позже, например. для анализа рабочего процесса. На самом деле я понял какое-то решение, но считаю его хаком, что меня очень беспокоит (см. Обновленный пост). Буду признателен, если кто-нибудь покажет мне более элегантное решение. –