Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Kafka transactionLog在NotEnoughReplicasException中失败,尽管配置正确。

Kafka transactionLog在NotEnoughReplicasException中失败,尽管配置正确。
EN

Stack Overflow用户
提问于 2018-05-03 09:06:46
回答 7查看 9.3K关注 0票数 3

在我们的单节点开发环境中,卡夫卡的读取失败,我遇到了问题。

我们运行的是一个单节点kafka实例,以及一个单节点的-因为这是一个dev env,所以我们并不真正关心复制。

我们使用Kafka作为Akka持久性的事件存储。当我们试图读取消息时(即使是从一个空的主题),就会引发NotEnoughReplicasException

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[2018-05-03 16:57:00,880] ERROR [ReplicaManager broker=0] Error processing append operation on partition __transaction_state-7 (kafka.server.ReplicaManager)
org.apache.kafka.common.errors.NotEnoughReplicasException: Number of insync replicas for partition __transaction_state-7 is [1], below required minimum [2]
[2018-05-03 16:57:00,889] INFO [Transaction State Manager 0]: TransactionalId akka-journal-message-AkkaJavaSpring-4 append transaction log for TxnTransitMetadata(producerId=6000, producerEpoch=0, txnTimeoutMs=60000, txnState=Empty, topicPartitions=Set(), txnStartTimestamp=-1, txnLastUpdateTimestamp=1525366620855) transition failed due to COORDINATOR_NOT_AVAILABLE, resetting pending state from Some(Empty), aborting state transition and returning COORDINATOR_NOT_AVAILABLE in the callback (kafka.coordinator.transaction.TransactionStateManager)

我已经配置了以下设置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"min.insync.replicas": 1
"offsets.topic.replication.factor": 1
"transaction.state.log.replication.factor": 1
"transaction.state.log.min.isr" : 1

它在启动时登录的配置的输出中得到确认:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[2018-05-03 16:33:34,381] INFO KafkaConfig values: 
    ...snip...
    min.insync.replicas = 1
    num.io.threads = 8
    num.network.threads = 3
    num.partitions = 1
    ...snip...
    transaction.state.log.load.buffer.size = 5242880
    transaction.state.log.min.isr = 1
    transaction.state.log.num.partitions = 50
    transaction.state.log.replication.factor = 1
    transaction.state.log.segment.bytes = 104857600

但是,查询__transactionLog主题似乎报告了它的min.insync.replicas设置为2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/bin/kafka-topics --zookeeper zookeeper:2181 --describe

Topic:__transaction_state       PartitionCount:50       ReplicationFactor:1     Configs:segment.bytes=104857600,unclean.leader.election.enable=false,compression.type=uncompressed,cleanup.policy=compact,min.insync.replicas=2
        Topic: __transaction_state      Partition: 0    Leader: 0       Replicas: 0     Isr: 0
        Topic: __transaction_state      Partition: 1    Leader: 0       Replicas: 0     Isr: 0
        Topic: __transaction_state      Partition: 2    Leader: 0       Replicas: 0     Isr: 0
        Topic: __transaction_state      Partition: 3    Leader: 0       Replicas: 0     Isr: 0

我使用Kafka 1.0.0,如日志中所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 INFO Kafka version : 1.0.0-cp1 (org.apache.kafka.common.utils.AppInfoParser)

造成这种情况的原因是什么,防止出现这些异常的正确配置是什么?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2018-05-04 01:54:35

上面发布的配置结果证明是正确的。

但是,当主题是最初创建的时,Zookeeper实例被错误地配置了,而重放日志中的消息似乎会抛出错误。

删除实例并从error重新启动解决了错误

票数 3
EN

Stack Overflow用户

发布于 2020-06-14 17:22:09

与删除动物园管理员实例并重新启动不同的是,我建议将主题的min.insync.replicas ( __transaction_state__transactionLog (或者如果有其他的)减少到1,这可以通过使用kafka-configs.sh实用工具来实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bin/kafka-configs.sh --bootstrap-server [host]:[port] --alter --entity-type topics --entity-name __transaction_state --add-config min.insync.replicas=1

使用min.insync.replicas = 2对主题执行此操作。当主题的insync副本的值降至1时,Kafka将再次检查主题的min副本应该等于配置中设置的值的条件,这一次生产者将能够写入主题,而不会出现任何问题。

票数 2
EN

Stack Overflow用户

发布于 2018-05-03 09:16:19

尝试将复制因子设为2,这可能是因为主题分区的同步副本低于min.insync.replicas。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50160474

复制
相关文章
CDP中Kafka配置
Kafka的功能很像发布/订阅消息系统,但具有更高的吞吐量、内置分区、复制和容错能力。对于大规模消息处理应用程序来说,Kafka是一个很好的解决方案。它通常与Apache Hadoop和Spark Streaming一起使用。
大数据杂货铺
2020/12/08
9410
kafka插入失败
org.springframework.kafka.core.KafkaProducerException: Failed to send; nested exception is org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for zhaochaotest-0: 30031 ms has passed since batch creation plus linger time     at org.springframework.kafka.core.KafkaTemplate$1.onCompletion(KafkaTemplate.java:365)     at org.apache.kafka.clients.producer.internals.ProducerBatch.completeFutureAndFireCallbacks(ProducerBatch.java:204)     at org.apache.kafka.clients.producer.internals.ProducerBatch.done(ProducerBatch.java:187)     at org.apache.kafka.clients.producer.internals.Sender.failBatch(Sender.java:627)     at org.apache.kafka.clients.producer.internals.Sender.sendProducerData(Sender.java:287)     at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:238)     at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:163)     at java.lang.Thread.run(Thread.java:745) Caused by: org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for zhaochaotest-0: 30031 ms has passed since batch creation plus linger time
Java架构师必看
2021/08/09
2.2K0
Gradle依赖方式——Lombok在Gradle中的正确配置姿势
写过java的都知道,lombok几乎在项目中处于不可或缺的一部分,但是lombok在Gradle的项目中配置并非人人都知道。
Zack说码
2019/08/05
12.7K0
Kafka kafka在windows下的安装与配置
1.测试环境.................................................................................................................
授客
2020/07/16
1.9K0
Kafka中Topic级别配置
  配置topic级别参数时,相同(参数)属性topic级别会覆盖全局的,否则默认为全局配置属性值。
保持热爱奔赴山海
2021/05/08
1.2K0
在Go中如何正确重试请求
我们平时在开发中肯定避不开的一个问题是如何在不可靠的网络服务中实现可靠的网络通信,其中 http 请求重试是经常用的技术。但是 Go 标准库 net/http 实际上是没有重试这个功能的,所以本篇文章主要讲解如何在 Go 中实现请求重试。
luozhiyun
2022/09/21
2K0
在Go中如何正确重试请求
Protobuf在Cmake中的正确使用
Protobuf是google开发的一个序列化和反序列化的协议库,我们可以自己设计传递数据的格式,通过.proto文件定义我们的要传递的数据格式。例如,在深度学习中常用的ONNX交换模型就是使用.proto编写的。我们可以通过多种前端(MNN、NCNN、TVM的前端)去读取这个.onnx这个模型,但是首先你要安装protobuf。
老潘
2023/10/19
1.7K0
Protobuf在Cmake中的正确使用
Schema Registry在Kafka中的实践
众所周知,Kafka作为一款优秀的消息中间件,在我们的日常工作中,我们也会接触到Kafka,用其来进行削峰、解耦等,作为开发的你,是否也是这么使用kafka的:
xdd
2022/12/13
3K0
Schema Registry在Kafka中的实践
图片加载失败的正确处理[通俗易懂]
对于这样一段代码来讲,如果该图片加载成功,那么界面上会显示图片,如果由于一些原因导致图片加载失败,会出现这样的图标。
全栈程序员站长
2022/08/23
2.4K0
图片加载失败的正确处理[通俗易懂]
【死磕Sharding-jdbc】---最大努力型事务
在分布式数据库的场景下,相信对于该数据库的操作最终一定可以成功,所以通过最大努力反复尝试送达操作。
用户1655470
2018/07/24
5590
【死磕Sharding-jdbc】---最大努力型事务
在 Kubernetes 中通过 Apache Kafka 插件远程处理 Kafka 启动程序
当前版本的 Remoting over Apache Kafka plugin 远程处理需要用户手动配置整个系统,包括 zookeeper 、 kafka 和远程处理代理。它也不支持动态代理配置,因此很难实现具有伸缩性的扩展。我的项目旨在解决两个问题:1. 提供 Apache-Kafka 集群的现成解决方案。2. Kubernetes 集群中的动态代理配置。
LinuxSuRen
2019/11/14
8080
数据库中间件 Sharding-JDBC 源码分析 —— 事务(一)之BED
本文主要基于 Sharding-JDBC 1.5.0 正式版 1. 概述 2. 最大努力送达型 3. 柔性事务管理器 3.3.1 创建柔性事务 3.1 概念 3.2 柔性事务配置 3.3 柔性事务 4. 事务日志存储器 4.1 #add() 4.2 #remove() 4.3 #findEligibleTransactionLogs() 4.4 #increaseAsyncDeliveryTryTimes() 4.5 #processData() 5. 最大努力送达型事务监听器 6. 最大努力送达型异步作业
芋道源码
2018/03/02
1.6K0
数据库中间件 Sharding-JDBC 源码分析 —— 事务(一)之BED
在springboot中对kafka进行读写操作
只需要在dependencies中增加 spring-kafka的配置即可。完整效果如下:
冬天里的懒猫
2020/08/03
3.1K0
时间轮在Netty、Kafka中的应用
时间轮是一个高性能、低消耗的数据结构,它适合用非准实时,延迟的短平快任务,例如心跳检测。在Netty、Kafka、Zookeeper中都有使用。
大数据真好玩
2022/12/05
1.4K0
时间轮在Netty、Kafka中的应用
EasyGBS在Win系统服务运行中,配置文件写入失败该如何解决?
随着国家倡导平安城市、智慧城市的建设,视频监控能力建设也成为智慧城市安防建设的重要环节。EasyGBS是基于国标GB/T28181协议的视频云服务平台,可提供的视频能力包括:实时直播、视频录像、语音对讲、云存储、检索及回放、告警上报、平台级联、语音对讲、云台控制等。
TSINGSEE青犀视频
2022/09/15
1.1K0
kafka 集群配置_kafka集群原理
kafka是一个高吞吐的分布式消息队列系统。特点是生产者消费者模式,先进先出(FIFO)保证顺序,自己不丢数据,默认每隔7天清理数据。消息列队常见场景:系统之间解耦合、峰值压力缓冲、异步通信。
全栈程序员站长
2022/09/27
1.2K0
在PHP中strpos函数的正确使用方式
首先简单介绍下 strpos 函数,strpos 函数是查找某个字符在字符串中的位置,这里需要明确这个函数的作用,这个函数得到的是位置。 如果存在,返回数字,否则返回的是 false。 而很多时候我们拿这个函数用来判断字符串中是否存在某个字符,一些同学使用的姿势是这样的 // 判断‘沈唁志博客’中是否存在‘博客’这个词 if (strpos('沈唁志博客', '博客')) { // 如果存在执行此处代码 echo '存在'; }else{ // 如果不存在执行此处代码 e
沈唁
2018/05/24
5.2K0
在springmvc中配置jedis:
主要学习https://github.com/thinkgem/jeesite。一下代码均参考于此并稍作修改。 1.jedis 首先,需要添加jedis: <!--jedis--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.0</version> </dependency> 2.applicationContext-jedis.xml
Ryan-Miao
2018/03/13
2.7K0
Kafka日志配置
在server.properties中配置了log.dirs值,表示kafka数据的存放目录,而非Kafka的日志目录。
程裕强
2022/05/06
9260
Kafka Broker配置
kafka大于等于v0.10 名称 描述 类型 默认 有效值 重要程度 zookeeper.connect 以hostname:port的形式指定ZooKeeper连接字符串,其中host和port是ZooKeeper服务器的主机和端口。为了使得单个ZooKeeper机器宕机时通过其他ZooKeeper节点进行连接,你也可以以hostname1:port1,hostname2:port2,hostname3:port3的形式指定多个,提高可用性。也可以将ZooKeeper chroot路径作为其ZooKee
友儿
2022/09/13
5810

相似问题

配置单元-> Kafka:插入配置单元kafka集成外部表失败

131

Doctest失败,尽管输出正确

22

nginx神秘错误尽管配置正确

14

iOS中的Firebase :尽管配置似乎正确,但CFNetwork SSLHandshake还是失败了。

10

在Kafka配置中选择正确的清理策略

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文