- spring/
- Hadoop的Spring:CDH5.8上批量spark示例的问题
Hadoop的Spring:CDH5.8上批量spark示例的问题
Hadoop的Spring:CDH5.8上批量spark示例的问题,spring,hadoop,cloudera-cdh,Spring,Hadoop,Cloudera Cdh,我想跑
在ClouderaHadoop 5.8(快速启动)上。我遵循此指南尝试设置所有内容:
我修复了与以下内容相关的所有版本:
上传至HDFS的spark assembly为spark-assembly_2.10-1.6.0-cdh5.8.0.jar
将pom.xml中的属性spring-data-hadoop.version移到了版本2.4.0.RELEASE-cdh5
将pom.xml中的属性spark.version移动到1.6
我能够构建项目,将构建的工件上传到CDH5.8Qu
我想跑
在ClouderaHadoop 5.8(快速启动)上。我遵循此指南尝试设置所有内容:
我修复了与以下内容相关的所有版本:
- 上传至HDFS的spark assembly为spark-assembly_2.10-1.6.0-cdh5.8.0.jar李>
- 将pom.xml中的属性spring-data-hadoop.version移到了版本2.4.0.RELEASE-cdh5李>
- 将pom.xml中的属性spark.version移动到1.6
我能够构建项目,将构建的工件上传到CDH5.8QuickStart的VM上,但在尝试运行时,批处理失败
在Cloudera Manager上检查日志时,我看到以下错误:
线程“main”java.lang.NoClassDefFoundError中出现异常:
org/apache/hadoop/conf/Configuration位于
位于的java.lang.Class.getDeclaredMethods0(本机方法)
java.lang.Class.privateGetDeclaredMethods(Class.java:2570)位于
java.lang.Class.getMethod0(Class.java:2813)位于
java.lang.Class.getMethod(Class.java:1663)位于
位于的sun.launcher.launchelper.getMainMethod(launchelper.java:494)
launcher.LaunchHelper.checkAndLoadMain(LaunchHelper.java:486)
原因:java.lang.ClassNotFoundException:
org.apache.hadoop.conf.Configuration位于
java.net.URLClassLoader$1.run(URLClassLoader.java:366)位于
java.net.URLClassLoader$1.run(URLClassLoader.java:355)在
java.security.AccessController.doPrivileged(本机方法)位于
java.net.URLClassLoader.findClass(URLClassLoader.java:354)位于
loadClass(ClassLoader.java:425)位于
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)位于
loadClass(ClassLoader.java:358)。。。还有6个
我试图通过以下命令提交Spark作业
- sudo-u hdfs spark submit--class Hashtags--master warn--deploy mode cluster app/spark-Hashtags_2.10-0.1.0.jarhdfs://quickstart.cloudera:8020/demo/hashtags/input/tweets.dat hdfs://quickstart.cloudera:8020/demo/hashtags/output*
(模拟hdfs脚本以手动准备输入和输出文件夹)
一切都很顺利
我能够检查资源管理器的日志,以便找到Spring批处理的tasklet生成的启动命令与spark submit命令之间的任何差异,我发现:
org.apache.hadoop.warn.server.resourcemanager.amlauncher.amlauncher:
启动容器容器的命令\u 1486926591393\u 0015\u 02\u000001:
LD_LIBRARY_PATH=“/usr/lib/hadoop/lib/native:$LD_LIBRARY_PATH”,{JAVA_HOME}/bin/JAVA,-server,-Xmx1024m,-Djava.io.tmpdir={{PWD}/tmp,-Dspark.warn.app.container.log.dir=,-XX:MaxPermSize=256m,org.apache.spark.deploy.warn.application.ApplicationMaster,--class,'Hashtags','Hashtags',-jar,file:/HOME/cloudera/spring-batch-spark-spark/app/app/app-Hashtags-1.0-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的tasklet生成以下内容:
org.apache.hadoop.warn.server.resourcemanager.amlauncher.amlauncher:
启动容器容器的命令\u 1486833100526\u 0006\u 01\u000001:
{{JAVA_HOME}}/bin/JAVA,-server,-Xmx1024m,-Djava.io.tmpdir={PWD}/tmp,-Dspark.thread.app.container.log.dir=,-XX:MaxPermSize=256m,org.apache.spark.deploy.thread.ApplicationMaster,--class,'Hashtags',jar,file:/HOME/cloudera/spring batch spark/app/spark/spark-Hashtags\u 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
正如您所看到的,spark submit添加了LD_LIBRARY_路径,而Spring Batch的tasklet没有添加这一路径,因为这似乎是唯一不同的事情,所以我认为存在问题
由于我对这个话题的知识贫乏,我无法理解幕后发生了什么。
你们有没有遇到过这个问题
谢谢大家。
Guido感谢您的详细比较。我不认为LD_LIBRARY_路径会导致这个特定的错误,我想知道--arg
值中的差异是否有任何影响。对于spark submit示例,您使用了/tmp
vshdfs://quickstart.cloudera:8020/demo/
用于spring hadoop one。你能用hdfs://quickstart.cloudera:8020/demo/
前缀
更新:Cloudera提供的程序集jar“spark-assembly-1.6.0-cdh5.8.0-hadoop2.6.0-cdh5.8.0.jar”似乎缺少Hadoop配置类,无法与“spring data Hadoop spark”功能一起使用。您必须在下载中使用Spark项目提供的完整组装jar。我使用“spark-assembly-1.6.2-hadoop2.6.0.jar”进行了测试,它在Cloudera QuickStart VM 5.8上运行良好。非常感谢您并为我的错误感到抱歉。实际上,我按照您的建议运行spark submit命令(sudo-u hdfs spark submit--class Hashtags--master warn--deploy 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
)它是有效的:当从Spring Batch的tasklet启动时,作业失败,因为我的初始帖子中报告了堆栈跟踪。我会看看我是否可以在我的机器上针对Cloudera QuickStart VM运行它,我会告诉你我发现了什么。我将非常感谢,非常感谢你的帮助!我能够运行针对CDH 5.8 Quickstart的示例!!!我基本上必须创建类com.springdeveloper.demo.enhancedsparkyantasklet
,作为org.springframew的克隆