Pet*_*sky 6 history scala amazon-s3 apache-spark
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
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
用于加载配置的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
Run Code Online (Sandbox Code Playgroud)
在$SPARK_HOME/conf/spark-defaults.conf
会引起
Exception in thread "main" java.lang.NoSuchMethodException: org.apache.hadoop.fs.s3a.S3AFileSystem.<init>(org.apache.spark.SparkConf)
Run Code Online (Sandbox Code Playgroud)
例外.如本答案所示,可以安全地删除该行.
总结一下:
我将以下JAR添加到$SPARK_HOME/jars
:
并添加此行 $SPARK_HOME/conf/spark-defaults.conf
spark.history.fs.logDirectory s3a://spark-logs-test/
Run Code Online (Sandbox Code Playgroud)
您需要一些其他配置才能首先启用日志记录,但是一旦S3存储桶具有日志,这是历史服务器所需的唯一配置.
归档时间: |
|
查看次数: |
1951 次 |
最近记录: |