[英]spark kafka security kerberos
我嘗試使用安全模式的kafka(0.9.1)。 我會用Spark讀取數據,所以我必須將JAAS conf文件傳遞給JVM。 我用這個cmd開始我的工作:
/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)
我認為spark不會在jvm中注入參數Djava.security.auth.login.conf !!
此問題的主要原因是您提到了錯誤的屬性名稱。 它應該是java.security.auth.login.config
而不是-Djava.security.auth.login.conf
。 此外,如果您使用keytab文件。 確保在spark-submit
使用--files
參數使所有執行程序都可以使用它。 如果您使用的是kerberos票,請確保使用屬性SPARK_YARN_USER_ENV
在所有執行KRB5CCNAME
上設置SPARK_YARN_USER_ENV
。
如果您使用的是舊版本的spark 1.6.x或更早版本。 然后有一些已知的問題與火花,這種集成將無法工作,那么你必須編寫自定義接收器。
對於spark 1.8及更高版本,您可以在此處查看配置
如果您需要創建自定義接收器,您可以看到這一點
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.