加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – S3A FileSystem上的Spark History Server:ClassNotFou

发布时间:2020-12-16 18:51:57 所属栏目:安全 来源:网络整理
导读: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,
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)

例外.该线路可以按照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存储桶具有日志,这是历史服务器所需的唯一配置.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读