Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Flink群集上的Kafka jaas验证失败_Java_Apache Kafka_Apache Flink_Apache Beam_Jaas - Fatal编程技术网

Java Flink群集上的Kafka jaas验证失败

Java Flink群集上的Kafka jaas验证失败,java,apache-kafka,apache-flink,apache-beam,jaas,Java,Apache Kafka,Apache Flink,Apache Beam,Jaas,我遇到了一个非常奇怪的问题 Could not find a "KafkaClient" entry in the JAAS configuration. System property "java.security.auth.login.config" is /etc/kafka/kafka_sink_jaas.conf 在单节点ApacheFlink集群上,当我使用ApacheBeamKafkaio消费来自kafka的记录时。JAAS文件包含“KafkaClient”,但Flink群集找不

我遇到了一个非常奇怪的问题

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

在单节点ApacheFlink集群上,当我使用ApacheBeamKafkaio消费来自kafka的记录时。JAAS文件包含“KafkaClient”,但Flink群集找不到该条目。有人知道原因吗?

我想建议你做一些尝试

设置卡夫卡选项

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")

希望这会有所帮助。

我已经解决了这个问题。这是由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

在本地运行Flink时,我使用了这个jaas配置文件。如Fred所述,以下选项在群集模式下不起作用

    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. 有没有办法避免这种情况?

当我在flink本地计算机上运行应用程序时,这个问题并不存在!所以我猜原因就要到弗林克星系团了!我已尝试了您的建议,但无法解决我的问题!kafka.keytab是kafka用户的keytab文件。如果使用您的keytab,则应设置security.kerberos.login.principal:MyUserId。并且security.kerberos.login.context仅具有客户端。