2016-08-08 7 views
3

kafka(0.9.1)をセキュアモードで使用しようとしています。私はSparkでデータを読むので、JAASのconfファイルをJVMに渡す必要があります。spark kafka security kerberos

Caused by: java.lang.IllegalArgumentException: You must pass java.security.auth.login.config in secure mode. 
    at org.apache.kafka.common.security.kerberos.Login.login(Login.java:289) 
    at org.apache.kafka.common.security.kerberos.Login.<init>(Login.java:104) 
    at org.apache.kafka.common.security.kerberos.LoginManager.<init>(LoginManager.java:44) 
    at org.apache.kafka.common.security.kerberos.LoginManager.acquireLoginManager(LoginManager.java:85) 
    at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:55) 

私は火花がDjava.security.auth.login.confパラメータを注入していないと思う:

/opt/spark/bin/spark-submit -v --master spark://master1:7077 \ 
    --conf "spark.executor.extraJavaOptions=-Djava.security.auth.login.conf=kafka_client_jaas.conf" \ 
    --files "./conf/kafka_client_jaas.conf,./conf/kafka.client.1.keytab" \ 
    --class kafka.ConsumerSasl ./kafka.jar --topics test 

が、私はまだ同じエラーを持っている:私は私の仕事を開始するには、このCMDを使用しますjvmで!

+0

を見ることができますカスタムレシーバーを作成する必要があります火花が集められました。 '$ SPARK_HOME/conf/spark-defaults.conf'に' spark.executor.extraJavaOptions'をハード設定しようとしましたか? –

+0

そして、あなたは 'spark.driver.extraJavaOptions'だけでローカルモードでコードを実行しようとしましたか? –

+0

私はspark.driver.extraJavaOptionsで始まったので、正しいオプションです。私はkafkaの認証がエグゼクティブの方ではなく、Driverにあると思います。 –

答えて

1

この問題の主な原因は、間違ったプロパティ名が記載されていることです。 java.security.auth.login.configであり、-Djava.security.auth.login.confではありません。また、キータブファイルを使用している場合。 --files引数を使用してすべてのエグゼキュータで​​を使用できるようにしてください。ケルベロスチケットを使用している場合は、SPARK_YARN_USER_ENVというプロパティを使用してすべてのエグゼキュータでKRB5CCNAMEを設定してください。

古いバージョンのspark 1.6.x以前を使用している場合。この統合がうまくいかない場合、カスタム受信機を作成する必要があるという点でいくつかの既知の問題があります。スパーク1.8の場合

以降では、コンフィギュレーションhere

を見ることができ包みなさい、あなたがコマンドラインオプションがよく、または途中に応じて動作しない場合があり、個人的な経験から、this

関連する問題