Я пытаюсь запустить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
Большое вам спасибо и извините за мою ошибку. На самом деле я запускаю команду _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 из-за трассировка стека, сообщенная в моем начальном сообщении –
Я посмотрю, смогу ли я запустить ее на своей машине против Cloudera QuickStart VM, я дам вам знать, что я узнаю. –
Я буду очень благодарен, большое спасибо за вашу помощь! –