Не удалось проверить Kafka jaas на кластере Flink - PullRequest
0 голосов
/ 04 ноября 2018

Я столкнулся с очень странной проблемой,

Could not find a "KafkaClient" entry in the JAAS configuration. System property "java.security.auth.login.config" is /etc/kafka/kafka_sink_jaas.conf

на одном узле кластера Apache Flink, когда я использую запись из kafka с использованием Apache Beam KafkaIO. Файл JAAS содержит «KafkaClient», но кластер Flink не может найти запись. Кто-нибудь знает причину, вызванную?

Ответы [ 3 ]

0 голосов
/ 07 ноября 2018

Я решил эту проблему. Это связано с настройкой кластера flink kerberos. Просто нужно настроить некоторые конфигурации на flink-conf.yaml, чтобы он работал нормально!

Настройки ниже:

security.kerberos.login.use-ticket-cache: false 
security.kerberos.login.keytab: /etc/kafka/kafka.keytab
security.kerberos.login.principal: kafka@HADOOP.COM
security.kerberos.login.contexts: Client,KafkaClient
0 голосов
/ 03 июля 2019

Во время работы Flink локально я использовал этот файл конфигурации jaas. Ниже не работает в режиме кластера, как упомянуто Фредом.

    KafkaClient {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="MyUserId"
    password="MyPwd";
    };

security.kerberos.login.use-ticket-cache: false 
security.kerberos.login.keytab: /etc/kafka/kafka.keytab
security.kerberos.login.principal: kafka@HADOOP.COM
security.kerberos.login.contexts: Client,KafkaClient

Если мы используем настройки Kerberos, это правильно? security.kerberos.login.principal: MyUserId

Также для создания файла keytab я использовал klist. Кажется, всегда добавляется доменное имя с пользователем, например, MyUserId@somedomain.com. Есть ли способ избежать этого?

0 голосов
/ 04 ноября 2018

Я хотел бы предложить вам несколько вещей, чтобы попробовать.

Набор KAFKA_OPTS

export KAFKA_OPTS = "- Djava.security.auth.login.config = / etc / kafka / kafka_sink_jaas.conf"

Добавить следующее к вашему коду

System.setProperty("java.security.auth.login.config", "/etc/kafka/kafka_sink_jaas.conf")
System.setProperty("java.security.krb5.conf", "/etc/krb5.conf")
System.setProperty("sun.security.krb5.debug", false)
System.setProperty("javax.security.auth.useSubjectCredsOnly", "false")

Надеюсь, это поможет.

...