hadoop - Apache Spark history-server 如何引用 Amazon S3?

标签 hadoop apache-spark amazon-s3

[版本]
Apache Spark 2.2.0
Hadoop 2.7

我想设置 Apache Spark 历史服务器。
位于 Amazon S3 中的 Spark 事件日志。
我可以在 S3 中保存日志文件,但无法从历史服务器读取。

Apache Spark 安装在 /usr/local/spark
所以,$SPARK_HOME/usr/local/spark

$ cd /usr/local/spark/sbin
$ sh start-history-server.sh

出现以下错误

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:335)
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:230)
....

我的 spark-defaults.conf 在下面

spark.hadoop.fs.s3a.impl org.apache.hadoop.fs.s3a.S3AFileSystem
spark.history.provider org.apache.hadoop.fs.s3a.S3AFileSystem
spark.history.fs.logDirectory s3a://xxxxxxxxxxxxx
spark.eventLog.enabled true
spark.eventLog.dir s3a://xxxxxxxxxxxxxxx

我将这 2 个 jar 文件安装在 /usr/local/spark/jars/

aws-java-sdk-1.7.4.jar
hadoop-aws-2.7.3.jar

但错误是一样的。

怎么了?

最佳答案

请在 spark-defaults.conf 文件中添加以下内容,然后重试。

spark.driver.extraClassPath :/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/* : spark.executor.extraClassPath:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:

关于hadoop - Apache Spark history-server 如何引用 Amazon S3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48419110/

相关文章:

hadoop - 用于分布式数据存储的 Hadoop 或 Spark 连接器如何运作?

maven - 如何将 proto3 与 Hadoop/Spark 一起使用?

hadoop - 对多个作业使用相同的 JavaSparkContext 以防止在 spark 驱动程序初始化时使用时间

amazon-s3 - 在任务启动期间从安全位置检索应用程序配置

ruby-on-rails - Rails 4,回形针,Amazon S3配置Amazon路径

eclipse - 使用运行对话框 (F11) 在 Eclipse 中的远程集群上启动 Hadoop Map Reduce 作业

Hadoop 导入数据 - 正确的 ETL 方法

hadoop - 测量 Hadoop 中每个节点的整个映射阶段的持续时间

amazon-s3 - CloudFront提供的CSS文件未呈现

hadoop - 配置多个 OpenTSDB 以使用单个 HBase 后端