Я давно борюсь с этим вопросом и отчаянно ищу помощь.
Контекст
У меня есть толстая банкаотправлено spark-submit
менеджеру ресурсов YARn.Аутентификация YARN управляется протоколом Kerberos, для которого у меня есть действительный принципал и файл keytab.Ранее Keytab был проверен на корректность.
Менеджер ресурсов YARN и весь кластер работают на Cloudera на серверах Linux.Моя заявка должна быть отправлена с Windows Server.
Я поместил свой файл keytab в C: \ Kerberos \ filename.
Чтобы включить Spark для автоматического создания заявки Kerberos, я хочу передатьkeytab и принципал при отправке.Я делаю это, помещая следующие конфигурации в файл spark-defaults.conf
:
- spark.yarn.keytab = C: \ Kerberos \ filename
- spark.yarn.principal = user @домен
выпуск
происходят две вещи:
в описанной мной ситуации, когда начинается отправка, я получаюсообщение об успешном входе в систему, но к тому времени, когда контекст Spark запускается и переходит в YARN, я получаю No FileSystem for scheme: C
, что заставляет меня думать, что оно интерпретирует C
как префикс, а не как root.
если я попытаюсь file:///C/Kerberos/filename
, я сразу получу исключение для файла, который не найден.Это вызвано проверкой в SparkSubmit.scala
(проверено исходный код для версии 2.2 - той, которую я использую), которая никогда не будет работать с URI, подобным file:///
Как же я должен указать путь к файлу keytab?Я могу только догадываться, что это зависит от Windows Server, являющегося отправителем