纱线上的火花java.io.IOException:没有用于方案的文件系统:s3n

时间:2017-02-10 08:56:17

标签: apache-spark yarn

我的英语很差,对不起,但我真的需要帮助。 我使用spark-2.0.0-bin-hadoop2.7hadoop2.7.3。并从s3读取日志,将结果写入本地hdfs。我可以成功运行spark driver使用独立模式。但是当我在纱线模式下运行相同的驱动程序时。它扔了

17/02/10 16:20:16 ERROR ApplicationMaster: User class threw exception: java.io.IOException: No FileSystem for scheme: s3n

hadoop-env.sh我添加了

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/tools/lib/*

run hadoop fs -ls s3n://xxx/xxx/xxx, can list files.

我认为应该找不到aws-java-sdk-1.7.4.jar and hadoop-aws-2.7.3.jar

怎么办。

3 个答案:

答案 0 :(得分:1)

我没有使用与您相同的版本,但这里是我的[spark_path] / conf / spark-defaults.conf 文件的摘录,这是让s3a工作所必需的:

libraryDependencies ++= Seq(
  javaJdbc,
  "mysql" % "mysql-connector-java" % "5.1.40"
)

或者,您可以使用逗号分隔格式指定jar的路径到作业提交的--jars选项:

# hadoop s3 config
spark.driver.extraClassPath [path]/guava-16.0.1.jar:[path]/aws-java-sdk-1.7.4.jar:[path]/hadoop-aws-2.7.2.jar
spark.executor.extraClassPath [path]/guava-16.0.1.jar:[path]/aws-java-sdk-1.7.4.jar:[path]/hadoop-aws-2.7.2.jar
spark.hadoop.fs.s3a.impl org.apache.hadoop.fs.s3a.S3AFileSystem
spark.hadoop.fs.s3a.access.key  [key]
spark.hadoop.fs.s3a.secret.key  [key]
spark.hadoop.fs.s3a.fast.upload true

备注:

  • 确保广告系列位于群集中所有节点上的相同位置
  • 用路径替换[路径]
  • 用您喜欢的协议替换s3a(上次我检查s3a最好)
  • 我认为番石榴不需要让s3a工作,但我不记得了

答案 1 :(得分:0)

  1. 将JAR粘贴到SPARK_HOME/lib,其余的火花碎片。
  2. spark.hadoop.fs.s3a.impl org.apache.hadoop.fs.s3a.S3AFileSystem不需要; JAR将被自动扫描并拾取。
  3. 不要在2.7.x上使用fast.output.enabled,除非您知道自己在做什么并准备调整一些线程池选项。没有那个选项就开始了。

答案 2 :(得分:0)

将这些罐子添加到$SPARK_HOME/jars

ws-java-sdk-1.7.4.jar,hadoop-aws-2.7.3.jar,jackson-annotations-2.7.0.jar,jackson-core-2.7.0.jar,jackson-databind-2.7.0.jar,joda-time-2.9.6.jar