【问题标题】:spark kafka security kerberos火花卡夫卡安全kerberos
【发布时间】:2016-09-25 20:32:15
【问题描述】:

我尝试在安全模式下使用 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!!

【问题讨论】:

  • 根据个人经验,命令行选项可能有效也可能无效,具体取决于 Spark 的编译方式。您是否尝试将spark.executor.extraJavaOptions 硬设置为$SPARK_HOME/conf/spark-defaults.conf
  • 顺便说一句,您是否尝试在本地模式下运行代码,只使用spark.driver.extraJavaOptions
  • 我从 spark.driver.extraJavaOptions 开始,所以它是正确的选择。我认为kafka的身份验证是在Driver中而不是在executors中。
  • 这取决于 - 在local 模式下,执行程序与驱动程序在同一进程中运行,因此它们继承了 JAAS 配置和 Kerberos 票证(我猜某些“执行程序”选项并没有得到一致的尊重)。另一方面,在 YARN / MESOS 模式下,执行程序在不同的机器上运行,并且需要他们自己的配置(以及他们自己的 scala/python 代码来引导对 Kafka 的身份验证
  • 我在使用 yarn-client 进行测试时遇到了同样的问题。我认为 spark.executor.extraJavaOptions 是在我们从 yarn cluster 开始时使用的?

标签: security apache-spark apache-kafka


【解决方案1】:

此问题的主要原因是您提到了错误的属性名称。它应该是java.security.auth.login.config 而不是-Djava.security.auth.login.conf。此外,如果您使用的是 keytab 文件。确保使用spark-submit 中的--files 参数使其在所有执行程序上可用。如果您使用的是 kerberos 票证,请确保使用属性 SPARK_YARN_USER_ENV 在所有执行程序上设置 KRB5CCNAME

如果您使用的是旧版本的 spark 1.6.x 或更早版本。那么 Spark 存在一些已知问题,即这种集成将无法正常工作,那么您必须编写自定义接收器。

spark 1.8及以后的,可以看配置here

如果您需要创建自定义接收器,您可以查看this

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2016-08-03
    • 2018-09-15
    • 2018-02-24
    • 2018-08-13
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    相关资源
    最近更新 更多