Oozie: Запустить действие Map-Reduce от Oozie <java>?
Я пытаюсь выполнить задачу Map-Reduce в рабочем процессе Oozie, используя<java>
действие.
O'Reilley-хApache Oozie (Ислам и Шринивасан 2015) отмечает, что:
Хотя это и не рекомендуется, действие Java можно использовать для запуска заданий Hadoop MapReduce, поскольку задания MapReduce - это всего лишь программы на Java. Вызванный основной класс может быть драйвером Hadoop MapReduce и может вызывать API Hadoop для запуска задания MapReduce. В этом режиме Hadoop порождает больше картографов и редукторов по мере необходимости и запускает их в кластере.
Тем не менее, я не пользуюсь этим подходом.
Определение действия в рабочем процессе выглядит следующим образом:
<java>
<!-- Namenode etc. in global configuration -->
<prepare>
<delete path="${transformOut}" />
</prepare>
<configuration>
<property>
<name>mapreduce.job.queuename</name>
<value>default</value>
</property>
</configuration>
<main-class>package.containing.TransformTool</main-class>
<arg>${transformIn}</arg>
<arg>${transformOut}</arg>
<file>${avroJar}</file>
<file>${avroMapReduceJar}</file>
</java>
Реализация инструментаmain()
реализация выглядит так:
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(new TransformTool(), args);
if (res != 0) {
throw new Exception("Error running MapReduce.");
}
}
Рабочий процесс будет аварийно завершаться с исключением «Ошибка при запуске MapReduce» выше каждый раз;Как мне получить выходные данные MapReduce для диагностики проблемы? Есть ли проблема с использованием этогоTool
запустить приложение MapReduce? Я использую неправильные вызовы API?
Я крайне не склонен использовать Oozie<map-reduce>
действие, поскольку каждое действие в рабочем процессе опирается на несколько отдельно версий версий схем AVRO.
В чем здесь проблема? Я использую «новый»mapreduce
API для задачи.
Спасибо за любую помощь.