【问题标题】:brew installed apache-spark unable to access s3 filesbrew 安装 apache-spark 无法访问 s3 文件
【发布时间】:2016-02-08 00:43:56
【问题描述】:

brew install apache-spark 之后,spark-shell 中的sc.textFile("s3n://...")java.io.IOException: No FileSystem for scheme: s3n 失败。通过使用spark-ec2 启动的EC2 机器访问spark-shell 中的情况并非如此。 homebrew 公式似乎是使用足够晚的 Hadoop 版本构建的,无论 brew install hadoop 是否首先运行都会引发此错误。

如何使用自制软件安装 spark 以便它能够读取 s3n:// 文件?

【问题讨论】:

  • 这可能是 Hadoop 客户端版本错误。你可能想看看那个。

标签: hadoop amazon-s3 apache-spark homebrew


【解决方案1】:

默认情况下,Hadoop 2.6 中未启用 S3 文件系统。 因此,使用 hadoop2.6 构建的 Spark 版本也没有任何基于 S3 的 fs 可用。可能的解决方案:

  • 解决方案 1. 使用使用 Hadoop 2.4 构建的 Spark(只需将文件名更改为“spark-1.5.1-bin-hadoop2.4.tgz”并更新 sha256)和 s3n://fs 即可。

  • 解决方案 2. 启用 s3n:// 文件系统。 启动 spark-shell 时指定 --conf spark.hadoop.fs.s3n.impl=org.apache.hadoop.fs.s3native.NativeS3FileSystem 选项。

    您还应该设置所需库的路径:--conf spark.driver.extraClassPath=<path>/* --conf spark.executor.extraClassPath=<path>/* 其中<path> 是带有hadoop-awsaws-java-sdk-1.7.4guava-11.0.2 jar 的目录。

  • 解决方案 3. 使用更新的 s3a:// 文件系统。它默认启用。还应设置所需库的路径。

注意 1: 选项也可以在 conf/spark-defaults.conf 文件中设置,因此您不需要每次都提供它们--conf,请阅读guide

注意 2: 您可以将 <path> 指向 Hadoop 2.6+ 发行版中的 share/hadoop/tools/lib 目录(s3a 需要来自 Hadoop 2.7+ 的库)或从 Maven Central 获取所需的库( 1, 2, 3)。

注意 3: 在环境变量、~/.aws/config 文件或 --conf spark.hadoop.fs.s3n.awsAccessKeyId= --conf spark.hadoop.fs.s3n.awsSecretAccessKey= 中提供 s3n 的凭据。

s3a 需要 --conf spark.hadoop.fs.s3a.access.key= --conf spark.hadoop.fs.s3a.secret.key= 选项(无环境变量或 .aws 文件)。

注意 4: s3:// 可以设置为 s3n (--conf spark.hadoop.fs.s3.impl=org.apache.hadoop.fs.s3native.NativeS3FileSystem) 或 s3a (--conf spark.hadoop.fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystem) 的别名。

【讨论】:

  • @llya 很棒的答案。一些跟进问题:回复:解决方案 1:我是否需要更改 apache-spark.rb 中的字段 sha256version?那该文件会是什么样子呢?回复:注3和4:如何配置使这是默认行为,并且不需要每次都指定?谢谢!
  • 是的,您需要更改 sha256(阅读 this comment),版本将相同。更新了关于设置默认行为的注释 1。
  • 好答案!对我来说,它使用--jars 而不是--confspark-shell --conf spark.hadoop.fs.s3n.impl=org.apache.hadoop.fs.s3native.NativeS3FileSystem --jars=/usr/local/Cellar/hadoop/2.7.2/libexec/share/hadoop/tools/lib/hadoop-aws-2.7.2.jar,/usr/local/Cellar/hadoop/2.7.2/libexec/share/hadoop/tools/lib/guava-11.0.2.jar,/usr/local/Cellar/hadoop/2.7.2/libexec/share/hadoop/tools/lib/aws-java-sdk-1.7.4.jar
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-28
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
相关资源
最近更新 更多