0

很长一段时间以来,我一直在为这件事而苦苦挣扎,我正在绝望地寻求帮助。

语境

我有一个要提交spark-submit给 YARn 资源管理器的胖 jar。YARN 身份验证由 Kerberos 协议管理,为此我有一个有效的主体和一个 keytab 文件。Keytab 之前已被测试为有效。

YARN 资源管理器和整个集群在 Linux 服务器上的 Cloudera 上运行。我的应用程序需要从 Windows Server 提交。

我已将密钥表文件放在 C:\Kerberos\filename 中。

为了使 Spark 能够自动创建 Kerberos 票证,我想在提交时传递 keytab 和 principal。我通过将以下配置放入spark-defaults.conf文件中来做到这一点:

  • spark.yarn.keytab = C:\Kerberos\文件名
  • spark.yarn.principal = user@domain

问题

发生两件事:

  • 在我描述的情况下,当提交开始时,我收到一条登录成功消息,但是当 Spark 上下文启动并转到 YARN 时,我收到一个No FileSystem for scheme: C,这让我认为它被解释C为前缀而不是根。

  • 如果我尝试file:///C/Kerberos/filename,我会立即得到一个找不到文件的异常。这是由签入引起的SparkSubmit.scala(检查了2.2 版的源代码- 我正在使用的那个),它永远不会与类似的 URI 一起使用file:///

我到底应该如何指定 keytab 文件的路径?我只能猜测这在某种程度上取决于 Windows Server 作为提交者

4

0 回答 0