2013-02-21 5 views
1

У меня есть кластер Hadoop, и различные процессы могут отправлять задания на создание карт в этот кластер (все они используют одну и ту же учетную запись пользователя).Описание задания Hadoop

Есть ли способ отличить эти рабочие места? Некоторое описание, которое может быть добавлено к заданию во время отправки как «Это работа процесса« 1234 », не касаться»?

Я использую Python и HadoopStreaming и хотел бы отличать задания, используя простой hadoop job -list (или, по крайней мере, с помощью интерфейса веб-интерфейса).

+0

Вы с помощью ОЙ Амазонки? – Amar

+0

@Amar, Nope, просто обычный Python –

ответ

0

Да, вы можете указать имя для каждого задания, используя job.setJobName(String).

Если вы должны указать название задания на что-то отличное, вы должны быть в состоянии рассказать им обособленно.

Например, используя что-то вроде ManagementFactory.getRuntimeMXBean().getName() вы можете получить идентификатор процесса и имя машины (на Linux в любом случае, не зная поведения на других операционных системах) в формате [email protected], где 1234 идентификатор процесса, который вы могли бы задайте имя задания, чтобы разделить их.

+0

К сожалению, я использую Python и не имею доступа к Java API. Я обновил вопрос. –

0

Для кросс-совместимого решения вы всегда можете использовать mapred.job.name, чтобы указать название своей работы, которое должно позволить вам легко отличить все от hadoop job -list.

В случае Hadoop потоковое это должно выглядеть примерно так:

hadoop jar $HADOOP_STREAMING_JAR -Dmapred.job.name='something' -mapper mapper.py -reducer reducer.py -input /path/to/input -output /path/to/output 
+0

Да, я пробовал это, но 'job -list' не показывает имя задания. –

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