报错:(未解决)NoReplicaOnlineException: No replica in ISR for partition __consumer_offsets-8 is alive. Live brokers are: [Set(50, 51, 52)], ISR brokers are: [68]
报错背景:
CDH集成kafka插件之后,启动kafka时就报出此错误。
报错现象:
- -- ::, ERROR state.change.logger: [Controller id= epoch=] Initiated state change for partition __consumer_offsets- from OfflinePartition to OnlinePartition failed
- kafka.common.NoReplicaOnlineException: No replica in ISR for partition __consumer_offsets-8 is alive. Live brokers are: [Set(50, 51, 52)], ISR brokers are: [68]
- at kafka.controller.OfflinePartitionLeaderSelector.selectLeader(PartitionLeaderSelector.scala:)
- at kafka.controller.PartitionStateMachine.electLeaderForPartition(PartitionStateMachine.scala:)
- at kafka.controller.PartitionStateMachine.kafka$controller$PartitionStateMachine$$handleStateChange(PartitionStateMachine.scala:)
- at kafka.controller.PartitionStateMachine$$anonfun$triggerOnlinePartitionStateChange$.apply(PartitionStateMachine.scala:)
- at kafka.controller.PartitionStateMachine$$anonfun$triggerOnlinePartitionStateChange$.apply(PartitionStateMachine.scala:)
- at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$.apply(TraversableLike.scala:)
- at scala.collection.mutable.HashMap$$anonfun$foreach$.apply(HashMap.scala:)
- at scala.collection.mutable.HashMap$$anonfun$foreach$.apply(HashMap.scala:)
- at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:)
- at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:)
- at scala.collection.mutable.HashMap.foreach(HashMap.scala:)
- at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:)
- at kafka.controller.PartitionStateMachine.triggerOnlinePartitionStateChange(PartitionStateMachine.scala:)
- at kafka.controller.PartitionStateMachine.startup(PartitionStateMachine.scala:)
- at kafka.controller.KafkaController.onControllerFailover(KafkaController.scala:)
- at kafka.controller.KafkaController.elect(KafkaController.scala:)
- at kafka.controller.KafkaController$Reelect$.process(KafkaController.scala:)
- at kafka.controller.ControllerEventManager$ControllerEventThread$$anonfun$doWork$.apply$mcV$sp(ControllerEventManager.scala:)
- at kafka.controller.ControllerEventManager$ControllerEventThread$$anonfun$doWork$.apply(ControllerEventManager.scala:)
- at kafka.controller.ControllerEventManager$ControllerEventThread$$anonfun$doWork$.apply(ControllerEventManager.scala:)
- at kafka.metrics.KafkaTimer.time(KafkaTimer.scala:)
- at kafka.controller.ControllerEventManager$ControllerEventThread.doWork(ControllerEventManager.scala:)
- at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:)
报错原因:
主要信息:No replica in ISR for partition __consumer_offsets-8 is alive
信息翻译:ISR中没有用于分区__consumer_offsets-8的副本存活
根据网上的资料,可以初步分析原因是leader的选举出现了问题。
四种 leader 选举实现类及对应触发条件如下所示:
实现 | 触发条件 |
---|---|
OfflinePartitionLeaderSelector | leader 掉线时触发 |
ReassignedPartitionLeaderSelector | 分区的副本重新分配数据同步完成后触发的 |
PreferredReplicaPartitionLeaderSelector | 最优 leader 选举,手动触发或自动 leader 均衡调度时触发 |
ControlledShutdownLeaderSelector | broker 发送 ShutDown 请求主动关闭服务时触发 |
OfflinePartitionLeaderSelector Partition leader 选举的逻辑是:
- 如果 isr 中至少有一个副本是存活的,那么从该 Partition 存活的 isr 中选举第一个副本作为新的 leader,存活的 isr 作为新的 isr;
- 否则,如果脏选举(unclear elect)是禁止的,那么就抛出 NoReplicaOnlineException 异常;
- 否则,即允许脏选举的情况下,从存活的、所分配的副本(不在 isr 中的副本)中选出一个副本作为新的 leader 和新的 isr 集合;
- 否则,即是 Partition 分配的副本没有存活的,抛出 NoReplicaOnlineException 异常;
根据以上信息可知,kafka的副本有挂掉的,但是具体什么原因我无法定位。
报错解决:
如果是CDH报错,我的做法是将kafka的所以topic都给删除
1.使用命令删除topic:
kafka-topics.sh --delete --zookeeper localhost:2181 --topic AlarmHis
只是这样事实上并没有真正删Topic
2.进入/tmp/kafka-logs目录,删除文件名为test的文件夹
3.进入zookeeper的安装目录,再进入bin目录下,
使用命令启动zookeeper客户端 zookeeper-client,
再使用命令 ls /brokers/topics 查看所建的topic,
使用命令 rmr /brokers/topics/test。
删除完成之后关闭所有服务,重启计算机,启动集群。
此时CDH没有了报错,但是后来发现云主机中kafka的log文件里依然报错产生,暂时未能解决。
参考:https://www.colabug.com/3174494.html
报错:(未解决)NoReplicaOnlineException: No replica in ISR for partition __consumer_offsets-8 is alive. Live brokers are: [Set(50, 51, 52)], ISR brokers are: [68]的更多相关文章
- 在win2008 r2主域控制域上打开“组策略管理”报错“未打开组策略对对象。你可能没有合适的权限”
在win2008 r2主域控制域上打开“组策略管理”报错“未打开组策略对对象.你可能没有合适的权限” 打开组策略管理其它选项提示:找不到指定路径.之前做过的操作:取消域控主机上的共享目录sysvol和 ...
- 安装skype for business server组件 报错“未满足先决条件”和安装KB2982006补丁提示“此更新不适用于你的计算机”
安装skype for business server组件 报错“未满足先决条件” 上网经查询发现是没有安装KB2982006-x64 更新补丁 去官网上找这个补丁,发现这个补丁要热更新啥的,还要写邮 ...
- VS调试 启动vs报错--未启动IIS
VS调试 启动程序报错——未启动IIS Express Web服务 解决办法: 1.关闭VS. 2.删出项目文件下的".vs"文件. 3.重新启动解决方案. 4.编译,运行OK. ...
- Springboot数据库连接池报错的解决办法
Springboot数据库连接池报错的解决办法 这个异常通常在Linux服务器上会发生,原因是Linux系统会主动断开一个长时间没有通信的连接 那么我们的问题就是:数据库连接池长时间处于间歇状态,导致 ...
- window7下安装第三方包报错及解决
window7 64位下安装第三方包,,比如安装yaml的exe执行文件,会 报错及解决:python version 2.7(3.4) required,which was not found in ...
- pom.xml里有红叉报错的解决办法
pom.xml里有红叉报错的解决办法一: 1.把鼠标点在报的错上发现pom.xml报如下错误: Multiple annotations found at this line: - Failure t ...
- eclipes的Spring注解SequenceGenerator(name="sequenceGenerator")报错的解决方式
eclipes的Spring注解SequenceGenerator(name="sequenceGenerator")报错的解决方式 右键项目打开Properties—>JA ...
- Can't bind to local 8700 for debugger报错和解决
[2016-02-15 22:37:17 - ddms] Can't bind to local 8700 for debugger报错和解决 1.打开studio monitor是出错: Can't ...
- Loadrunner参数化连接oracle、mysql数据源报错及解决办法
Loadrunner参数化连接oracle.mysql数据源报错及解决办法 (本人系统是Win7 64, 两位小伙伴因为是默认安装lr,安装在 最终参数化的时候,出现连接字符串无法自动加载出来: 最 ...
随机推荐
- Eclipse中安装Spring IDE
====>在线安装 1.寻找Spring IDE插件更新地址:http://marketplace.eclipse.org/content/spring-ide 2.复制对应Eclipse版本的 ...
- SP1825 【FTOUR2 - Free tour II】
# \(SP1825\) 看到没有人用老师的办法,于是自己写一下思路 思路第一步:排除旧方法 首先这道题和\(4178\)不一样,因为那道题是计数,而这道题是求最值,最值有个坏处,就是对于来自相同子树 ...
- yaml文件
apiVersion: apps/v1beta1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: ...
- C# 字符串String相关
是否可以继承String类 不能,因为从定义上看String类是sealed类[密封]故不可以继承.当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承.若硬要写,则编译不通过 字符 ...
- 洛谷 P3143 [USACO16OPEN]钻石收藏家Diamond Collector 题解
P3143 [USACO16OPEN]钻石收藏家Diamond Collector 题目描述 Bessie the cow, always a fan of shiny objects, has ta ...
- python 之 字典常用操作
- UOJ#468. 【ZJOI2019】Minimax搜索 动态DP
原文链接www.cnblogs.com/zhouzhendong/p/UOJ468.html 前言 毒瘤题 题解 首先,将问题稍加转化,将"等于k"转化为"小于等于k&q ...
- Django重定向你是如何实现的?用的什么状态码?
使用HttpResponseRedirect redirect和reverse 状态码:302,301
- 比较实用的Java工具类
一. org.apache.commons.io.IOUtils closeQuietly:关闭一个IO流.socket.或者selector且不抛出异常,通常放在finally块 toString: ...
- 利用python的matplotlib处理计算数据
#!/usr/bin/python # -*- coding: UTF-8 -*- import numpy as np import matplotlib.pyplot as plt import ...