Eug*_*ene 1 hadoop ceph apache-spark
我正在做一些关于spark_with_hadoop2.7(2.4.3),hadoop(3.2.0)和Ceph luminous的组合的事情。当我尝试使用spark访问ceph时(例如,spark-sql在shell上启动),出现如下异常:
INFO impl.MetricsSystemImpl: s3a-file-system metrics system started
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.security.ProviderUtils.excludeIncompatibleCredentialProviders(Lorg/apache/hadoop/conf/Configuration;Ljava/lang/Class;)Lorg/apache/hadoop/conf/Configuration;
at org.apache.hadoop.fs.s3a.S3AUtils.getAWSAccessKeys(S3AUtils.java:740)
at org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider.<init>(SimpleAWSCredentialsProvider.java:58)
at org.apache.hadoop.fs.s3a.S3AUtils.createAWSCredentialProviderSet(S3AUtils.java:600)
Run Code Online (Sandbox Code Playgroud)
对于NoSuchMethodError,这很可能是因为根据how-do-i-fix-a-nosuchmethoderror编译的类版本与运行的类版本不同。
要访问,
实际上使用了Cephaws相关的jaraws-java-sdk-bundle-1.11.375.jar及其hadoop-aws-3.2.0.jar下的文件。$HADOOP_HOME/share/hadoop/tools/lib我做了以下操作:
1、将这两个jar复制到$SPARK_HOME/jars
2、修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh添加以下语句:
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/tools/lib/*
通过执行上述步骤,我可以启动 hdfs 来访问 ceph,例如,我可以用来hdfs dfs -ls列出 ceph 存储桶下的文件夹。它证明与aws相关的jar工作正常。(正如我的理解)。
但是为什么当我调用 Spark 时会抛出有关 aws s3a 的异常?