私は長い間この問題に苦しんでおり、必死に助けを求めています。
環境
spark-submit
YARn リソース マネージャーに提出するファット jar があります。YARN 認証は、有効なプリンシパルとキータブ ファイルを持っている Kerberos プロトコルによって管理されます。Keytab は以前に有効であることがテストされていました。
YARN リソース マネージャーとクラスター全体は、Linux サーバー上の Cloudera で実行されます。アプリケーションを Windows Server から送信する必要があります。
keytab ファイルを C:\Kerberos\filename に置きました。
Spark が Kerberos チケットを自動的に作成できるようにするために、送信時に keytab とプリンシパルを渡したいと考えています。これらの次の構成をspark-defaults.conf
ファイルに入れることでそれを行っています。
- spark.yarn.keytab = C:\Kerberos\ファイル名
- spark.yarn.principal = ユーザー@ドメイン
問題
次の 2 つのことが起こります。
私が説明した状況では、送信が開始されるとログイン成功メッセージが表示されますが、Spark コンテキストが開始されて YARN に移動するまでにが表示され、ルートではなくプレフィックスとして
No FileSystem for scheme: C
解釈されていると思われます。C
試してみる
file:///C/Kerberos/filename
と、すぐにファイルが見つからないという例外が発生します。これは、チェックインSparkSubmit.scala
(バージョン 2.2 のソース コードをチェック - 私が使用しているもの) が原因であり、次のような URI では決して機能しません。file:///
キータブファイルのパスを指定するにはどうすればよいですか? これは、サブミッターである Windows Server に多少依存していると推測できます