当前位置: 首页 > 知识库问答 >
问题:

Hadoop的Spring:CDH 5.8上的批处理Spark示例的问题

殳自怡
2023-03-14

我想逃跑

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

我修复了与以下内容相关的所有版本:

  • 要上传到HDFS的Spark程序集是spark-assembly2.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.

我试图通过以下命令提交Spark作业

  • sudo-u hdfs spark-submit--class Hashtags--master yarn--deploy-mode cluster app/spark-hashtags2.10-0.1.0.jar hdfs://quickstart.cloudera:8020/demo/Hashtags/input/tweets.dat hdfs://quickstart.cloudera:8020/demo/Hashtags/output*

(模拟hdfs脚本手工准备输入和输出文件夹)

我能够检查资源管理器的日志,以便找到Spring Batch的tasklet生成的启动命令和spark-submit命令之间的任何区别,我发现:

  • spark-submit包含以下内容:

org.apache.hadoop.yarn.server.resourceManager.amlauncher.amlauncher.amlauncher:启动容器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,类,'hashtags',--jar,file:/home/cloudera/spring-batch-spark/app/spark-hashtags2.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的tasklet生成以下内容:

org.apache.hadoop.yarn.server.resourceManager.amlauncher.amlauncher.amlauncher:启动容器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 hashtags2.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_PATH,而Spring batch的tasklet没有,因为这似乎是唯一不同的地方,所以我认为问题就在这里。

由于我对这一主题的知识很少,我无法理解幕后发生的事情。你们中有人遇到过这个问题吗?

感谢大家。圭多

共有1个答案

屠坚壁
2023-03-14

感谢您的详细比较。我不认为LD_LIBRARY_PATH会导致这个特殊的错误,我想知道--arg值的差异是否有任何影响。对于spark-submit示例,您使用/tmpvs对于spring-hadoop示例使用hdfs://quickstart.cloudera:8020/demo/。您可以尝试使用hdfs://quickstart.cloudera:8020/demo/前缀的spark-submit吗?

更新:看起来Cloudera提供的程序集jar'spark-assembly-1.6.0-CDH5.8.0-Hadoop2.6.0-CDH5.8.0.jar'缺少Hadoop配置类,不能与“spring-data-hadoop-spark”特性一起使用。您必须在他们的下载中使用Spark项目提供的完整的assembly jar。我用'spark-assembly-1.6.2-hadoop2.6.0.jar'进行了测试,它在Cloudera QuickStart VM5.8上运行良好。

 类似资料:
  • 我在spark streaming应用程序中看到一些失败的批处理,原因是与内存相关的问题,如 无法计算拆分,找不到块输入-0-1464774108087

  • 我在中看到了几个答案(例如这里),因此建议批次中的记录将成为单个RDD。我对此表示怀疑,因为假设batchInterval为1分钟,那么单个RDD将包含最后一分钟的所有数据? 注意:我不是直接将批次与RDD进行比较,而是将Spark内部处理的批次进行比较。

  • 本文向大家介绍mybatis-plus批处理IService的实现示例,包括了mybatis-plus批处理IService的实现示例的使用技巧和注意事项,需要的朋友参考一下 一、pom文件引入 二、Controller层 三、IService层(此处请确保继承的是 mybatisplus下的 IService,上述的UserInfoEntity为实体类) 四、ServiceImpl(UserIn

  • 需要一个解决方案来使用在RabbitMQ上写入数据,并使用使用RabbitMQ读取数据。我们不是在寻找阿帕奇·Kafka,我们只是想简单地发送程序细节并使用它。 作家代码 JobConfig。JAVA CustomelFieldSetMapper.java 顾客JAVA SpringBatchAMQP应用程序。JAVA 读码器 作业配置。JAVA CustomerStepListener。JAVA

  • 我有以下工作要处理在一定的时间间隔或特别的基础上。 作业中的步骤如下: 我也想要用户界面,在那里我可以触发一个特别的基础上的工作,而且我应该能够提供参数从用户界面。 我想用Spring batch来完成这个任务,但它更多的是用于读->处理->写之类的工作。这里,在第一步中,我正在生成由第二步读取的数据。我不确定我是否还可以使用Spring batch来实现这个,或者有更好的方法来实现这个。

  • 我正在尝试在Spring批处理中并行运行多个作业。在谷歌上搜索了很多之后,我遇到了JobStep。有没有人使用过JobStep可以解释如何使用它来并行运行作业,或者有没有其他方法可以并行运行2个独立的作业,即当我启动批处理时,2个作业应该开始并行运行。我的要求就像 当我的应用程序启动时,两个作业都应该开始运行。使用spring batch是否可以这样做 编辑:我甚至试过这种方法 我面临着例外。sp