Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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 卡夫卡无法使用组协调员_Java_Apache Kafka - Fatal编程技术网

Java 卡夫卡无法使用组协调员

Java 卡夫卡无法使用组协调员,java,apache-kafka,Java,Apache Kafka,在向kafka写入主题时,出现错误:偏移提交失败: 2016-10-29 14:52:56.387 INFO [nioEventLoopGroup-3-1][org.apache.kafka.common.utils.AppInfoParser$AppInfo:82] - Kafka version : 0.9.0.1 2016-10-29 14:52:56.387 INFO [nioEventLoopGroup-3-1][org.apache.kafka.common.utils.AppInf

在向kafka写入主题时,出现错误:
偏移提交失败

2016-10-29 14:52:56.387 INFO [nioEventLoopGroup-3-1][org.apache.kafka.common.utils.AppInfoParser$AppInfo:82] - Kafka version : 0.9.0.1
2016-10-29 14:52:56.387 INFO [nioEventLoopGroup-3-1][org.apache.kafka.common.utils.AppInfoParser$AppInfo:83] - Kafka commitId : 23c69d62a0cabf06
2016-10-29 14:52:56.409 ERROR [nioEventLoopGroup-3-1][org.apache.kafka.clients.consumer.internals.ConsumerCoordinator$DefaultOffsetCommitCallback:489] - Offset commit failed.
org.apache.kafka.common.errors.GroupCoordinatorNotAvailableException: The group coordinator is not available.
2016-10-29 14:52:56.519 WARN [kafka-producer-network-thread | producer-1][org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater:582] - Error while fetching metadata with correlation id 0 : {0085000=LEADER_NOT_AVAILABLE}
2016-10-29 14:52:56.612 WARN [pool-6-thread-1][org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater:582] - Error while fetching metadata with correlation id 1 : {0085000=LEADER_NOT_AVAILABLE}
当使用命令创建一个新主题时,它是确定的

./kafka-topics.sh --zookeeper localhost:2181 --create --topic test1 --partitions 1 --replication-factor 1 --config max.message.bytes=64000 --config flush.messages=1
这是使用Java的生产者代码:

public void create() {
        Properties props = new Properties();
        props.clear();
        String producerServer = PropertyReadHelper.properties.getProperty("kafka.producer.bootstrap.servers");
        String zookeeperConnect = PropertyReadHelper.properties.getProperty("kafka.producer.zookeeper.connect");
        String metaBrokerList = PropertyReadHelper.properties.getProperty("kafka.metadata.broker.list");
        props.put("bootstrap.servers", producerServer);
        props.put("zookeeper.connect", zookeeperConnect);//声明ZooKeeper
        props.put("metadata.broker.list", metaBrokerList);//声明kafka broker
        props.put("acks", "all");
        props.put("retries", 0);
        props.put("batch.size", 1000);
        props.put("linger.ms", 10000);
        props.put("buffer.memory", 10000);
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        producer = new KafkaProducer<String, String>(props);
    }
public void create(){
Properties props=新属性();
props.clear();
字符串producerServer=PropertyReadHelper.properties.getProperty(“kafka.producer.bootstrap.servers”);
字符串zookeeperConnect=PropertyReadHelper.properties.getProperty(“kafka.producer.zookeeper.connect”);
字符串metaBrokerList=PropertyReadHelper.properties.getProperty(“kafka.metadata.broker.list”);
props.put(“bootstrap.servers”,producerServer);
道具。放置(“zookeeper.connect”,ZooKeeporConnect)//声明动物园管理员
put(“metadata.broker.list”,metaBrokerList)//声明卡夫卡经纪人
道具放置(“阿克斯”、“全部”);
道具放置(“重试”,0);
道具放置(“批量大小”,1000);
道具放置(“linger.ms”,10000);
道具放置(“缓冲区内存”,10000);
put(“key.serializer”、“org.apache.kafka.common.serialization.StringSerializer”);
put(“value.serializer”、“org.apache.kafka.common.serialization.StringSerializer”);
制作人=新卡夫卡制作人(道具);
}

哪里错了?

我们在生产中也遇到了同样的问题。代码在很长一段时间内工作正常,突然我们遇到了这个异常


我们分析代码中没有问题。所以我们要求部署团队重新启动zookeeper。重新启动它解决了问题

查看日志,问题在于集群可能没有连接到节点,而节点是zookeeper中已知的给定主题的唯一副本

您可以使用给定的命令进行检查:
kafka-topics.sh——描述——zookeeper本地主机:2181——主题测试1

或使用卡夫卡卡特:
kafkacat-L-b本地主机:9092

示例结果:

Metadata for all topics (from broker 1003: localhost:9092/1003):
 1 brokers:
  broker 1003 at localhost:9092
 1 topics:
  topic "topic1" with 1 partitions:
    partition 0, leader -1, replicas: 1001, isrs: , Broker: Leader not available
如果您有单节点群集,则代理id(1001)应与topic1分区的前导相匹配。
但正如您所看到的,唯一已知的topic1副本是1001,它现在不可用,因此不可能在不同的节点上重新创建topic

问题的根源可能是自动生成代理id(如果您没有指定
broker.id
或将其设置为
-1
)。
然后在启动代理(同一个代理)时,您可能会收到与以前不同的代理id,并且与zookeeper中标记的id不同(这就是为什么分区删除会有所帮助,但这不是生产解决方案的原因)

解决方案可能是将节点配置中的broker.id值设置为固定值-根据文档,应该在生产环境中执行:
broker.id=1

如果一切正常,你应该收到这样的东西:

Metadata for all topics (from broker 1: localhost:9092/1001):
 1 brokers:
  broker 1 at localhost:9092
 1 topics:
  topic "topic1" with 1 partitions:
    partition 0, leader 1, replicas: 1, isrs: 1
卡夫卡文献:
我也面临类似的问题。问题是,当您启动Kafka代理时,有一个属性与之关联,“Kafka\u偏移量\主题\复制\因子”。如果使用单节点群集,请确保将此属性设置为值“1”。因为它的默认值是3。这个改变解决了我的问题。(可以检查Kafka.properties文件中的值)
注意:我使用的是confluent kafka版本4.0.0的基本映像(confluent Inc/cp kafka:4.0.0)

您好,您必须保持代码的kafka副本和复制因子相同


对我来说,我保留3个作为副本,3个作为复制因子。

我的解决方案是,我必须确保
KAFKA\u advised\u HOST\u NAME
是服务器的正确IP地址。

有解决方案吗?我有一样的。为了我的一个topik。我不能删除它。我有同样的问题,这个答案为我解决了。此答案应标记为已接受。vishal akkalkote和fgakk均正确!设置offset.topic.replication.factor=1使GroupCoordinator现在可用,消费者可以按预期工作。这样做似乎很危险?为什么不希望在偏移量上进行复制?@PaulPraet原型制作、测试、演示等@PaulPraet使用单个节点在本地轻松尝试几件事