Hadoop,Spark:java.lang.NoSuchFieldError:TOKEN_KIND

问题描述 投票:0回答:1

我想分享一个我最近遇到的有趣的错误:

Exception in thread "main" java.lang.NoSuchFieldError: TOKEN_KIND
at org.apache.hadoop.crypto.key.kms.KMSClientProvider$KMSTokenRenewer.handleKind(KMSClientProvider.java:166)
at org.apache.hadoop.security.token.Token.getRenewer(Token.java:351)
at org.apache.hadoop.security.token.Token.renew(Token.java:377)
at org.apache.spark.deploy.security.HadoopFSCredentialProvider$$anonfun$getTokenRenewalInterval$1$$anonfun$5$$anonfun$apply$1.apply$mcJ$sp(HadoopFSDelegationTokeProvider.scala:119)

我试图像这样将作业提交到Cloudera集群上的远程驱动程序主机:

spark = SparkSession.builder
   .master("yarn")
   .config("cluster")
   .config("spark.driver.host", "remote_driver_host")
   .config("spark.yarn.keytab", "path_to_pricnipar.keytab")
   .config("spark.yarn.principal", "principal.name") \
   .config("spark.driver.bindAddress", "0.0.0.0") \
   .getOrCreate()

[Cloudera群集上的Apache Spark和Hadoop版本分别为:2.3.0和2.6.0。

scala apache-spark hadoop kerberos
1个回答
0
投票

因此,问题的起因很微不足道,这是Spark本地二进制文件与远程Spark驱动程序版本不匹配的原因。在本地安装了spark 2.4.5,在Cloudera上安装了2.3.0,将版本与2.3.0对齐后,问题得以解决,并且spark作业成功完成。

© www.soinside.com 2019 - 2024. All rights reserved.