KerberosでSparkジョブを実行する

Kerberosが有効になっているDataStax Enterpriseデータベースに対してSparkジョブを実行できます。

Kerberosが有効になっているDataStax Enterpriseデータベースに対してSparkジョブを実行できます。 Kerberosスキームの定義 を行うことで、SparkをDSEデータベースに接続します。Sparkコンポーネントは相互に認証されません。

Sparkジョブを開始する前にkinitコマンドを使用して認証します。

Kerberos認証を使用して、SparkランチャーはKerberos認証情報でDSEに接続し、DSEにデリゲーション・トークンを生成するように要求します。SparkドライバーとSparkエグゼキューターは、デリゲーション・トークンを使用してクラスターに接続します。

アプリケーションの終了後、デリゲーション・トークンはキャンセルする必要があります。クライアント・モードでアプリケーションを実行した場合、この操作は自動的に行われます。ユーザーがアプリケーションを停止すると、トークンはキャンセルされます。ただし、アプリケーションをクラスター・モードでデプロイした場合は、アプリケーションが最終的に停止した後、ユーザーがデリゲーション・トークンを手動でキャンセルする必要があります。アプリケーションがクラスター・モードで起動されている場合、デリゲーション・トークンをキャンセルするための正確なコマンドがDSEのコンソールに出力されます。

手順

  1. 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'
  2. KerberosでJAAS構成ファイルを使用するには、kerberos.use.config.fileオプションをtrueに設定する必要があります。
  3. また、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
           ...
    };