簡體   English   中英

spark kafka security kerberos

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM