spark on yarn java.io.IOException: No FileSystem for scheme:



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

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

怎么能行。

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

# 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

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

--jars [path]aws-java-sdk-[version].jar,[path]hadoop-aws-[version].‌​‌​jar

笔记:

  • 确保 jar 在群集中的所有节点上位于同一位置
  • 将 [路径] 替换为路径
  • 将 s3a 替换为您的首选协议(上次我检查 s3a 是最好的(
  • 我不认为番石榴是让 s3a 工作所必需的,但我不记得了
  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,除非您知道自己在做什么并准备调整一些线程池选项。从没有该选项开始。

将这些罐子添加到$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

最新更新