首页 > 解决方案 > Spark - GSSException:未提供有效凭据(机制级别:找不到任何 Kerberos tgt)

问题描述

我正在尝试在集群模式下运行火花作业,它抛出以下异常:-

java.io.IOException:org.apache.hadoop.security.authentication.client.AuthenticationException:GSSException:未提供有效凭据(机制级别:找不到任何 Kerberos tgt)

但我的工作在客户端模式下运行良好。任何人都可以提出一些解决方案吗?

标签: scalaapache-spark

解决方案


这听起来像您的 Kerberos 凭据没有分发到工作程序节点。

在从 1.x 和 2.x 升级 Spark 版本后,我们遇到了同样的问题,发现使用较新的版本时,Spark 本身会负责密钥表的分发。为此,我们必须提供参数--principal--keytab通过spark-submit命令。

Spark 文档中有一个很好的关于 Kerberos 的部分。此外,它还提到了一些关于Long-running Applications 的内容。

Spark 支持在 YARN 模式下运行时为这些应用程序自动创建新令牌。需要使用和参数通过spark-submit命令将 Kerberos 凭据提供给 Spark 应用程序。--principal--keytab

提供的 keytab 将通过 Hadoop 分布式缓存复制到运行 Application Master 的机器上。因此,强烈建议至少对 YARN 和 HDFS 进行加密保护。

Kerberos 登录将使用提供的凭据定期更新,并将创建新的受支持的委托令牌。


推荐阅读