3
我尝试在安全模式下使用kafka(0.9.1)。我会用Spark读取数据,所以我必须将JAAS conf文件传递给JVM。我用这个CMD开始我的工作:spark kafka security kerberos
/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
我仍然有同样的错误:
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在jvm中!
从个人的经验,命令行选项可能会或可能不取决于工作方式Spark被编译。您是否尝试在'$ SPARK_HOME/conf/spark-defaults.conf'中设置'spark.executor.extraJavaOptions'? –
顺便说一句,你是否尝试以本地模式运行代码,只有'spark.driver.extraJavaOptions'? –
我从spark.driver.extraJavaOptions开始,所以它是正确的选项。我认为卡夫卡的身份验证不在执行者身上,而是在驱动程序中。 –