apache-spark - 为什么 Zeppelin notebook 无法连接到 S3

标签 apache-spark apache-zeppelin

我已安装 Zeppelin ,在我的 aws EC2 机器上连接到我的 Spark 集群。

Spark 版本:
独立:spark-1.2.1-bin-hadoop1.tgz

在我的用例中尝试访问 S3 中的文件时,我能够连接到 Spark 集群,但出现以下错误。

代码:

    sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "YOUR_KEY_ID")
    sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey","YOUR_SEC_KEY")
    val file = "s3n://<bucket>/<key>"
    val data = sc.textFile(file)
    data.count


file: String = s3n://<bucket>/<key>
data: org.apache.spark.rdd.RDD[String] = s3n://<bucket>/<key> MappedRDD[1] at textFile at <console>:21
ava.lang.NoSuchMethodError: org.jets3t.service.impl.rest.httpclient.RestS3Service.<init>(Lorg/jets3t/service/security/AWSCredentials;)V
    at org.apache.hadoop.fs.s3native.Jets3tNativeFileSystemStore.initialize(Jets3tNativeFileSystemStore.java:55)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:85)

我已经通过以下命令构建了 Zeppelin:
mvn clean package -Pspark-1.2.1 -Dhadoop.version=1.0.4 -DskipTests

当我尝试使用 hadoop 配置文件“-Phadoop-1.0.4”进行构建时,它警告说它不存在。

我也试过this中提到的-Phadoop-1 Spark 网站。但得到了同样的错误。
1.x 到 2.1.x hadoop-1

请让我知道我在这里缺少什么。

最佳答案

以下安装对我有用(也花了很多天来解决问题):

  • 在 EC2 集群上为 Hadoop 2.3 设置预构建 Spark 1.3.1
  • git 克隆 https://github.com/apache/incubator-zeppelin.git (日期:25.07.2015)
  • 通过以下命令安装了 zeppelin(属于 https://github.com/apache/incubator-zeppelin 上的说明):

    mvn clean package -Pspark-1.3 -Dhadoop.version=2.3.0 -Phadoop-2.3 -DskipTests
  • 通过“conf/zeppelin-site.xml”将端口更改为 8082(Spark 使用端口 8080)

  • 在此安装步骤之后,我的笔记本使用了 S3 文件:
    sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "xxx")
    sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey","xxx")
    val file = "s3n://<<bucket>>/<<file>>"
    val data = sc.textFile(file)
    data.first
    

    我认为在 Zeppelin 0.5.0 版中没有完全解决 S3 问题,所以克隆实际的 git-repo 为我做了。

    重要信息:这项工作仅适用于我使用 zeppelin spark-interpreter 设置 主=本地[*] (而不是使用 spark://master:7777)

    关于apache-spark - 为什么 Zeppelin notebook 无法连接到 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30884662/

    相关文章:

    hadoop - 使用YARN的Spark流应用程序配置

    pyspark - 在 Zeppelin Interpreter 中设置特定的 Python

    apache-spark - pySpark 使用键/值从 RDD 创建数据帧

    apache-spark - 无法拉取 zeppelin 服务器镜像

    apache-spark - 使用 pyspark 从 s3 读取/加载 avro 文件

    elasticsearch - Elasticsearch Interpreter无法连接到数据库

    amazon-web-services - 如何在 EMR 中引导期间配置 Zeppelin-env.sh

    apache-spark - 内存配置对于公平调度程序真的很重要吗?

    python - Apache Spark : How to create a matrix from a DataFrame?

    regex - 从 Spark 数据框中的字符串列中提取单词