2017-02-11 18 views
0

Я пытаюсь запуститьSpring для Hadoop: проблемы с периодическим искрового образца на CDH 5.8

https://github.com/trisberg/springone-2015/tree/master/batch-spark

на Cloudera Hadoop 5.8 (быстрого старта). Я после этого руководства для того, чтобы попытаться настройками все:

http://docs.spring.io/spring-hadoop/docs/current/reference/html/springandhadoop-spark.html

Я установил все версии, связанные с:

  • искровых сборок для загрузки в HDFS является искровым assembly_2.10-1.6 .0-cdh5.8.0.jar;
  • переехал имущество spring-data-hadoop.version в pom.xml до версии 2.4.0.RELEASE-cdh5;
  • переехал имущество spark.version в pom.xml до 1.6.

Я смог построить проект, загрузить встроенный артефакт на виртуальную машину быстрого запуска CDH 5.8, но при попытке RUN пакет не работает.

При проверке журнала на Cloudera Manager, я вижу следующее сообщение об ошибке:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2570) at java.lang.Class.getMethod0(Class.java:2813) at java.lang.Class.getMethod(Class.java:1663) at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486) Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 6 more

Я пытался представить Спарк работу через следующей команду

  • Суды -u HDFS искровые представить - класс Hashtags --master yarn - кластерное приложение развертывания/spark-hashtags_2.10-0.1.0.jar hdfs: //quickstart.cloudera: 8020/demo/hashtags/input/tweets.dat hdfs: // quickstart. cloudera: 8020/demo/hashtags/output *

(имитирующий скрипты hdfs для подготовки входных и выходных папок вручную)

и все работает отлично.

Я был в состоянии проверить журналы менеджера ресурсов для того, чтобы найти разницу между запускающей командой создаваемой тасклет весной Batch и командами искровой представить, и я обнаружил, что:

  • искрового представить путы следующее:
тасклет

org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher: Command to launch container container_1486926591393_0015_02_000001 : LD_LIBRARY_PATH="/usr/lib/hadoop/lib/native:$LD_LIBRARY_PATH",{{JAVA_HOME}}/bin/java,-server,-Xmx1024m,-Djava.io.tmpdir={{PWD}}/tmp,-Dspark.yarn.app.container.log.dir=,-XX:MaxPermSize=256m,org.apache.spark.deploy.yarn.ApplicationMaster,--class,'Hashtags',--jar,file:/home/cloudera/spring-batch-spark/app/spark-hashtags_2.10-0.1.0.jar,--arg,'/tmp/hashtags/input/tweets.dat',--arg,'/tmp/hashtags/output',--executor-memory,1024m,--executor-cores,1,--properties-file,{{PWD}}/spark_conf/spark_conf.properties,1>,/stdout,2>,/stderr

  • Spring Batch генерирует следующее:

org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher: Command to launch container container_1486833100526_0006_01_000001 : {{JAVA_HOME}}/bin/java,-server,-Xmx1024m,-Djava.io.tmpdir={{PWD}}/tmp,-Dspark.yarn.app.container.log.dir=,-XX:MaxPermSize=256m,org.apache.spark.deploy.yarn.ApplicationMaster,--class,'Hashtags',--jar,file:/home/cloudera/spring-batch-spark/app/spark-hashtags_2.10-0.1.0.jar,--arg,'hdfs://quickstart.cloudera:8020/demo/hashtags/input/tweets.dat',--arg,'hdfs://quickstart.cloudera:8020/demo/hashtags/output',--executor-memory,1024m,--executor-cores,1,--properties-file,{{PWD}}/spark_conf/spark_conf.properties,1>,/stdout,2>,/stderr

Как вы можете видеть искру подать добавляет LD_LIBRARY_PATH в то время как тасклет Spring Batch в не и так как кажется, что это единственная другая вещь, я имею в виду, что проблема есть.

Из-за моего плохого знания темы я не могу понять, что происходит под капотами. Неужели кто-нибудь из вас столкнулся с этой проблемой?

Спасибо всем. Guido

ответ

0

Спасибо за подробное сравнение. Я не думаю, что LD_LIBRARY_PATH вызовет эту конкретную ошибку, интересно, имеет ли значение значение --arg. Для примера «искра-подача» вы использовали /tmp против hdfs://quickstart.cloudera:8020/demo/ для весеннего хаоса. Не могли бы вы попробовать исправить-submit с префиксом hdfs://quickstart.cloudera:8020/demo/?

ОБНОВЛЕНИЕ: Похоже, что в сборке для сборщика Cloudera «spark-assembly-1.6.0-cdh5.8.0-hadoop2.6.0-cdh5.8.0.jar» отсутствуют классы конфигурации Hadoop и не может использоваться с «пружинные данные-хауоп-искра». Вы должны использовать полную сборку, предоставленную проектом Spark, в своих загрузках. Я тестировал «spark-assembly-1.6.2-hadoop2.6.0.jar», и он отлично работал на Cloudera QuickStart VM 5.8.

+0

Большое вам спасибо и извините за мою ошибку. На самом деле я запускаю команду _spark-submit_, как вы предложили ('sudo -u hdfs spark-submit --class Hashtags --master yarn --delete-mode cluster app/spark-hashtags_2.10-0.1.0.jar hdfs://quickstart.cloudera:8020/demo/hashtags/input/tweets.dat hdfs: //quickstart.cloudera: 8020/demo/hashtags/output'), и он работает: сбой задания при запуске из Tasklet Spring Batch из-за трассировка стека, сообщенная в моем начальном сообщении –

+0

Я посмотрю, смогу ли я запустить ее на своей машине против Cloudera QuickStart VM, я дам вам знать, что я узнаю. –

+0

Я буду очень благодарен, большое спасибо за вашу помощь! –

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

  • Нет связанных вопросов^_^