我想和大家分享一下我最近遇到的一个有趣的错误:
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)
我尝试spark2向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集群上的apachespark和hadoop版本分别是:2.3.0和2.6.0。
1条答案
按热度按时间vecaoik11#
所以问题的原因很简单,就是spark本地二进制文件与远程spark驱动程序版本不匹配。我在本地安装了spark 2.4.5,在cloudera上是2.3.0,在将版本调整到2.3.0之后,问题解决了,spark作业成功完成。