KerberosでSparkジョブを実行する
Kerberosが有効になっているDataStax Enterpriseデータベースに対してSparkジョブを実行できます。
Kerberosが有効になっているDataStax Enterpriseデータベースに対してSparkジョブを実行できます。 Kerberosスキームの定義 を行うことで、SparkをDSEデータベースに接続します。Sparkコンポーネントは相互に認証されません。
Sparkジョブを開始する前にkinit
コマンドを使用して認証します。
Kerberos認証を使用して、SparkランチャーはKerberos認証情報でDSEに接続し、DSEにデリゲーション・トークンを生成するように要求します。SparkドライバーとSparkエグゼキューターは、デリゲーション・トークンを使用してクラスターに接続します。
アプリケーションの終了後、デリゲーション・トークンはキャンセルする必要があります。クライアント・モードでアプリケーションを実行した場合、この操作は自動的に行われます。ユーザーがアプリケーションを停止すると、トークンはキャンセルされます。ただし、アプリケーションをクラスター・モードでデプロイした場合は、アプリケーションが最終的に停止した後、ユーザーがデリゲーション・トークンを手動でキャンセルする必要があります。アプリケーションがクラスター・モードで起動されている場合、デリゲーション・トークンをキャンセルするための正確なコマンドがDSEのコンソールに出力されます。
手順
-
Kerberosチケットではなく、JAASを使用している場合、JAAS構成ファイルを作成する必要があります。このファイルのデフォルトの場所は、
$USER_HOME/.java.login.config
です。JAAS構成ファイルが別の場所にある場合、java.security.auth.login.config
オプションをファイルの場所に設定して、その場所を指定する必要があります。たとえば、ジョブを送信するため環境変数に
java.security.auth.login.config
を設定するには、JAAS構成ファイルを指すようにSPARK_SUBMIT_OPTS
環境変数を設定します。export SPARK_SUBMIT_OPTS='-Djava.security.auth.login.config=/path/jaas.config'
-
KerberosでJAAS構成ファイルを使用するには、
kerberos.use.config.file
オプションをtrue
に設定する必要があります。 -
また、
kerberos.client.reference.name
オプションもDseClient
に設定する必要があります。例を次に示します。$ dse spark -Dkerberos.use.config.file=true -Dkerberos.client.reference.name=DseClient
JAAS構成ファイルの例を以下に示します。
DseClient { com.sun.security.auth.module.Krb5LoginModule required ... };