このページでは、E-MapReduce の Hadoop クラスターで Spark Streaming ジョブを実行し、Kafka クラスターのデータを処理する方法について説明します。

プログラミングリファレンス

E-MapReduce の Hadoop クラスターと Kafka クラスターは完全にオープンソースのソフトウェアをベースとしています。 このため、開発時に対応する公式ドキュメントを参照できます。

Spark Streaming ジョブへの Kerberos Kafka クラスターアクセス許可

E-MapReduce を使用すると、Kerberos 認証をベースとした Kafka クラスターを作成できます。 Hadoop クラスター内のジョブは、2 通りの方法で Kerberos Kafka クラスターにアクセスできます。

  • 非 Kerberos Hadoop クラスター : Kafka クラスターの Kerberos 認証用に kafka_client_jaas.conf ファイルを提供します。
  • Kerberos Hadoop クラスター : Kerberos クラスターをベースとしたクロスドメイン通信。 Hadoop クラスターの Kerberos 認証用に kafka_client_jaas.conf ファイルを提供します。

どちらの方法でも、ジョブ実行時に Kerberos 認証用の kafka_client_jaas.conf ファイルを提供することが求められす。

kafka_client_jaas.conf のファイル形式は以下のとおりです。
KafkaClient {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    storeKey=true
    serviceName="kafka"
    keyTab="/path/to/kafka.keytab"
    principal="kafka/emr-header-1.cluster-12345@EMR. 12345. COM";
};

keytab ファイルの取得方法の詳細は、『ユーザーガイド』「Kerberos 認証 (Kerberos authentication)」をご参照ください。

Spark Streaming ジョブへの Kerberos Kafka クラスターアクセス許可

Spark Streaming ジョブを実行して Kerberos Kafka クラスターにアクセスするときは、spark-submit コマンドラインパラメーターで必要に応じ kafka_client_jaas.conf ファイルと kafka.keytab ファイルを提供できます。
spark-submit --conf spark.driver.extraJavaOptions=-Djava.security.auth.login.config={{PWD}}/kafka_client_jaas.conf --conf spark.executor.extraJavaOptions=-Djava.security.auth.login.config={{PWD}}/kafka_client_jaas.conf --files /local/path/to/kafka_client_jaas.conf,/local/path/to/kafka.keytab --class xx.xx.xx.KafkaSample --num-executors 2 --executor-cores 2 --executor-memory 1g --master yarn-cluster xxx.jar arg1 arg2 arg3
kafka_client_jaas.conf ファイル内で、keytabファイルのパスは相対パスにする必要があります。 パスは必ず以下の形式で設定します。
KafkaClient {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    storeKey=true
    serviceName = "kafka"
    keyTab = "kafka.keytab"
    principal="kafka/emr-header-1.cluster-12345@EMR. 12345。 COM ";
};