Hadoop, Spark: java.lang.NoSuchFieldError: TOKEN_KIND
Hadoop, Spark: java.lang.NoSuchFieldError: TOKEN_KIND
我想分享我最近遇到的一个有趣的错误:
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$$anonfun$$anonfun$apply.apply$mcJ$sp(HadoopFSDelegationTokeProvider.scala:119)
我试图像这样在 Cloudera 集群上将作业 spark2 提交到远程驱动程序主机:
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。
所以问题的原因很简单,它是 spark 本地二进制文件与远程 spark 驱动程序版本不匹配。
我在本地安装了 spark 2.4.5,而在 Cloudera 上安装的是 2.3.0,在将版本调整为 2.3.0 后,问题得到解决并且 spark 作业成功完成。
我想分享我最近遇到的一个有趣的错误:
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$$anonfun$$anonfun$apply.apply$mcJ$sp(HadoopFSDelegationTokeProvider.scala:119)
我试图像这样在 Cloudera 集群上将作业 spark2 提交到远程驱动程序主机:
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。
所以问题的原因很简单,它是 spark 本地二进制文件与远程 spark 驱动程序版本不匹配。 我在本地安装了 spark 2.4.5,而在 Cloudera 上安装的是 2.3.0,在将版本调整为 2.3.0 后,问题得到解决并且 spark 作业成功完成。