Ошибка запуска Sqoop Action с использованием Oozie в кластере Hadoop
Я пытаюсь успешно запустить sqoop-действие в Oozie с помощью кластера Hadoop. Всякий раз, когда я проверяю статус заданий, Oozie возвращается со следующим обновлением статуса:
действия
ID Status Ext ID Ext Статус Код ошибки
0000037-140930230740727-oozie-oozi-W@: начало: ОК - ОК -
0000037-140930230740727-oozie-oozi-W @ sqoop-load ERROR job_1412278758569_0002 FAILED / KILLEDJA018
0000037-140930230740727-oozie-oozi-W @ sqoop-load-fail OK - OK E0729
Что заставляет меня верить, что в моем рабочем процессе нет ничего плохого, в отличие от какого-то разрешения, которое я пропускаю.
Мой конфиг jobs.properties:
nameNode=hdfs://mynamenode.demo.com:8020
jobTracker=mysnamenode.demo.com:8050
queueName=default
workingRoot=working_dir
jobOutput=/user/test/out
oozie.use.system.libpath=true
oozie.libpath=/user/oozie/share/lib
oozie.wf.application.path=${nameNode}/user/test/${workingRoot}
MyWorkFlow.xml:
<?xml version="1.0" encoding="UTF-8"?>
<workflow-app xmlns='uri:oozie:workflow:0.4' name='sqoop-workflow'>
<start to='sqoop-load' />
<action name="sqoop-load">
<sqoop xmlns="uri:oozie:sqoop-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<prepare>
<delete path="${nameNode}/user/test/${workingRoot}/out-data/sqoop" />
<mkdir path="${nameNode}/user/test/${workingRoot}/out-data"/>
</prepare>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<command>import --connect jdbc:oracle:thin:@10.100.50.102:1521/db --username myID --password myPass --table SomeTable -target-dir /user/test/${workingRoot}/out-data/sqoop </command>
</sqoop>
<ok to="end"/>
<error to="sqoop-load-fail"/>
</action>
<kill name="sqoop-load-fail">
<message>Sqoop export failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name='end' />
</workflow-app>
Шаги, которые я предпринял:
- Поиск ошибки... не нашел ничего, что я упоминал ранее
- проверка того, что требуемый файл ojdbc.jar является исполняемым и что каталог /user/oozie/share/lib/sqoop доступен в HDFS
- проверка, есть ли у меня какие-либо существующие каталоги, которые могут вызывать проблемы
Я искал в Интернете и мои файлы журнала для ответа.... любая помощь будет высоко ценится....
Обновить:
Хорошо... поэтому я добавляю ВСЕ jar-файлы в /usr/lib/sqoop/lib в /user/oozie/share/lib/sqoop. Я все еще получаю те же ошибки. проверка журнала работы... есть то, что я не публиковал ранее:
2014-10-03 11: 16: 35 586 ПРЕДУПРЕЖДЕНИЕ CoordActionUpdateXCommand:542 - ПОЛЬЗОВАТЕЛЬ [ambari-qa] GROUP[-] TOKEN[] APP[sqoop-workflow] JOB[0000015-141002171510902-oozie-oozi-W] ДЕЙСТВИЕ [-] E1100: предварительное условие для команды не выполняется перед выполнением, [, действие по координации равно нулю], код ошибки: E1100
Как вы видите, я выполняю задание как "Суперпользователь"..... и ошибка точно такая же. Так что это не может быть проблемой разрешения. Я думаю, что есть JAR, который требуется, кроме тех, которые должны быть в каталоге /user/oozie/share/lib/sqoop..... возможно, мне нужно скопировать банки для mapreduce, чтобы быть в / user / oozie / поделиться /lib/mapreduce?
2 ответа
Хорошо... проблема решена.
Очевидно, что КАЖДЫЙ компонент рабочего процесса / задания Oozie должен иметь соответствующие *.jar-зависимости, загруженные в каталоги Oozie SharedLib(/user/oozie/share/lib/), соответствующие этим компонентам.
Я скопировал ВСЕ *.jars в /usr/lib/sqoop/lib в -> /user/oozie/share/lib Я скопировал ВСЕ *.jars в /usr/lib/oozie/lib в -> / user / oozie / доля / Библиотека / oozie
После повторного запуска задания.... рабочий процесс остановился, и приведенная ошибка отличалась от предыдущей.... а именно, что на этот раз.... рабочий процесс пытался создать каталог на HDFS, который уже существовал, поэтому я удалил этот каталог и снова запустил работу.....
УСПЕХ!
Примечание: людям действительно нужно писать лучшие сообщения об исключениях. Если бы это было просто проблемой, то у нескольких людей было бы... тогда хорошо... но это просто не тот случай. Эта конкретная ошибка приводит к тому, что более чем несколько человек подходят друг другу, если запросы о помощи онлайн являются признаком.
Я столкнулся с той же проблемой. Просто добавив
<archive>path/in/hdfs/ojdbc6.jar#ojdbc6.jar</archive>
в мой workflow.xml в <sqoop> </sqoop>
теги работали для меня. Получил ссылку здесь.