gpt4 book ai didi

scala - S3A 文件系统上的 Spark 历史服务器 : ClassNotFoundException

转载 作者:行者123 更新时间:2023-12-04 14:40:57 25 4
gpt4 key购买 nike

Spark 可以使用 Hadoop S3A 文件系统 org.apache.hadoop.fs.s3a.S3AFileSystem .通过将以下内容添加到 conf/spark-defaults.conf ,我可以让 spark-shell 登录到 S3 存储桶:

spark.jars.packages               net.java.dev.jets3t:jets3t:0.9.0,com.google.guava:guava:16.0.1,com.amazonaws:aws-java-sdk:1.7.4,org.apache.hadoop:hadoop-aws:2.7.3
spark.hadoop.fs.s3a.impl org.apache.hadoop.fs.s3a.S3AFileSystem
spark.eventLog.enabled true
spark.eventLog.dir s3a://spark-logs-test/
spark.history.fs.logDirectory s3a://spark-logs-test/
spark.history.provider org.apache.hadoop.fs.s3a.S3AFileSystem

Spark History Server 还从 conf/spark-defaults.conf 加载配置,但似乎没有加载 spark.jars.packages配置,并抛出 ClassNotFoundException :
Exception in thread "main" java.lang.ClassNotFoundException: org.apache.hadoop.fs.s3a.S3AFileSystem
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.spark.util.Utils$.classForName(Utils.scala:225)
at org.apache.spark.deploy.history.HistoryServer$.main(HistoryServer.scala:256)
at org.apache.spark.deploy.history.HistoryServer.main(HistoryServer.scala)

加载配置的Spark源码在 SparkSubmitArguments.scala中有所不同
并在 HistoryServerArguments.scala ,特别是 HistoryServerArguments 似乎没有加载包。

有没有办法添加 org.apache.hadoop.fs.s3a.S3AFileSystem对历史服务器的依赖?

最佳答案

做了一些更多的挖掘并弄清楚了。这是错误的:

  • S3A 所需的 JAR 文件可以添加到 $SPARK_HOME/jars (如 SPARK-15965 中所述)
  • 线
    spark.history.provider     org.apache.hadoop.fs.s3a.S3AFileSystem

    $SPARK_HOME/conf/spark-defaults.conf将造成
    Exception in thread "main" java.lang.NoSuchMethodException: org.apache.hadoop.fs.s3a.S3AFileSystem.<init>(org.apache.spark.SparkConf)

    异常(exception)。可以按照此 answer 中的建议安全删除该行.

  • 总结一下:

    我将以下 JAR 添加到 $SPARK_HOME/jars :
  • jets3t-0.9.3.jar(可能已经存在于您的预构建 Spark 二进制文件中,似乎与哪个 0.9.x 版本无关)
  • guava-14.0.1.jar(可能已经存在于您的预构建 Spark 二进制文件中,似乎与哪个 14.0.x 版本无关)
  • aws-java-sdk-1.7.4.jar(必须是 1.7.4)
  • hadoop-aws.jar(版本 2.7.3)(可能应该与 Spark 构建中的 Hadoop 版本匹配)

  • 并将这一行添加到 $SPARK_HOME/conf/spark-defaults.conf
    spark.history.fs.logDirectory     s3a://spark-logs-test/

    您首先需要一些其他配置来启用日志记录,但是一旦 S3 存储桶具有日志,这是历史服务器所需的唯一配置。

    关于scala - S3A 文件系统上的 Spark 历史服务器 : ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39906536/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com