2016-11-22 11 views
1

Я создал рабочий процесс oozie, чтобы выполнить импорт sqoop из mysql в систему улья.Рабочий процесс Oozie для импорта sqoop не работает в Amazon emr hue

Работа с Sqoop для создания задания sqoop выполняется успешно, но когда я пытаюсь выполнить задание для импорта из MySQL в Hive, это терпит неудачу. Здесь я прикрепил журналы

sqoop -hive-import (это то, что происходит в результате действия sqlop бездействия) происходит в два этапа.

  1. Сначала импортируем sqoop в каталог HDFS (targetDir, указанный в моем xml).

  2. Затем выходные данные этого импорта sqoop перемещаются и импортируются в Улей.

Когда я запускаю мою sqoop работу через oozie я вижу _SUCCESS файл в TargetDir указывает на импорт sqoop успешно. Только последний этап (этап 2) терпит неудачу.

Я использую рабочий процесс Oozie как пользовательский интерфейс.

9020 [uber-SubtaskRunner] INFO org.apache.sqoop.hive.HiveImport - Loading uploaded data into Hive 
9982 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - WARNING: Use "yarn jar" to launch YARN applications. 
10278 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - SLF4J: Class path contains multiple SLF4J bindings. 
10278 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - SLF4J: Found binding in [jar:file:/usr/lib/hive/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
10278 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - SLF4J: Found binding in [jar:file:/usr/lib/hadoop/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
10278 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
10281 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] 
12413 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - 
12413 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - Logging initialized using configuration in jar:file:/usr/lib/hive/lib/hive-common-2.1.0-amzn-0.jar!/hive-log4j2.properties Async: true 
13750 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tez/dag/api/SessionNotRunning 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:586) 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - at org.apache.hadoop.hive.ql.session.SessionState.beginStart(SessionState.java:518) 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:705) 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641) 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - at java.lang.reflect.Method.invoke(Method.java:498) 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - at org.apache.hadoop.util.RunJar.run(RunJar.java:221) 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - at org.apache.hadoop.util.RunJar.main(RunJar.java:136) 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - Caused by: java.lang.ClassNotFoundException: org.apache.tez.dag.api.SessionNotRunning 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
13751 [Thread-112] INFO org.apache.sqoop.hive.HiveImport - ... 10 more 
14098 [uber-SubtaskRunner] ERROR org.apache.sqoop.tool.CreateHiveTableTool - Encountered IOException running create table job: java.io.IOException: Hive exited with status 1 
    at org.apache.sqoop.hive.HiveImport.executeExternalHiveScript(HiveImport.java:389) 
    at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:339) 
    at org.apache.sqoop.hive.HiveImport.importTable(HiveImport.java:240) 
    at org.apache.sqoop.tool.CreateHiveTableTool.run(CreateHiveTableTool.java:58) 
    at org.apache.sqoop.Sqoop.run(Sqoop.java:143) 
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179) 
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218) 
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227) 
    at org.apache.sqoop.Sqoop.main(Sqoop.java:236) 
    at org.apache.oozie.action.hadoop.SqoopMain.runSqoopJob(SqoopMain.java:197) 
    at org.apache.oozie.action.hadoop.SqoopMain.run(SqoopMain.java:177) 
    at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:47) 
    at org.apache.oozie.action.hadoop.SqoopMain.main(SqoopMain.java:46) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:236) 
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54) 
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:455) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:344) 
    at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler.runSubtask(LocalContainerLauncher.java:380) 
    at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler.runTask(LocalContainerLauncher.java:301) 
    at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler.access$200(LocalContainerLauncher.java:187) 
    at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler$1.run(LocalContainerLauncher.java:230) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

Intercepting System.exit(1) 

<<< Invocation of Main class completed <<< 

Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SqoopMain], exit code [1] 

ответ

0

Ошибка в том, что sqoop не может найти улей.

Попробуйте установить переменную ENV для улья во всех ваших DataNodes, на котором пользователь вы работаете эту команду sqoop

Edit:

типа в командной строке

oozie admin -shareliblist hive 

и проверить tez-api-*.jar есть ,

если нет, то перейдите на hdfs путь /user/oozie/share/lib/lib_DATA/hive/ и проверьте tez-api-*.jar. если они есть, то обновите sharelib oozie admin -sharelibupdate и еще раз проверьте

+0

Я установил HIVE_HOME в bashrc и обновил свойства, но не повезло. Я также упомянул о своей работе в sqoop, установив свойство -hive-home. Другие datanodes не имеют папки hive в/etc /. Не могли бы вы указать мне на ссылку или уточнить свой ответ? – Hurix

+0

добавили ли вы это тоже: «экспортируйте HIVE = $ HIVE_HOME/bin export PATH = $ HIVE: $ PATH», а затем введите «exec bash» –

+0

проблема в том, что oozie будет выполните задание в любом из datanodes, так что вы должны установить куст во всех datanodes с настройкой, а затем повторить попытку –

0

Sqoop не может найти Tez jar (т. е. «org.apache.tez.dag.api.SessionNotRunning», если быть точным) во время выполнения.

Убедитесь, что у вас есть банки Tez по мере необходимости.

+0

Когда я запускаю задание Sqoop в главном узле. Он работает успешно, потому что Tez настроен, и я могу получить доступ к Hive в главном узле. Я пытаюсь выполнить Sqoop Job, используя рабочий процесс Oozie, который запускает Hive-пряжу MapReduce в подчиненных узлах. Когда я пытаюсь запустить куст в подчиненных узлах, он говорит, что сеанс Tez не работает, хотя Hive & Tez настроен правильно. Является ли это ограничением Amazon EMR или мне не хватает какой-либо основной конфигурации. – Hurix

+0

@Hurix. Попробовал ли вы добавить tez-site.xml и необходимые библиотеки tez. – YoungHobbit

+0

@YoungHobbit Да, это на месте – Hurix