trouble-kafka
- TAGS: Trouble
ISR问题
现象
#显示rebalancing,在数据平衡 # ./kafka-consumer-groups.sh --describe --bootstrap-server localhost:9092 --describe --group ParserKafkaPipeline | grep -e ParserBody | sort Warning: Consumer group 'ParserKafkaPipeline' is rebalancing. #日志显示, ISR不满足最小设置需求 org.apache.kafka.common.errors.NotEnoughReplicasException: The size of the current ISR Set(0, 3, 5) is insufficient to satisfy the min.isr requirement of 4 for partition __consumer_offsets-37 #导致无法消费
解决
min.insync.replicas=1 #将参数值由4改为默认值1 #该参数用于控制ISR集合的最小副本数量,保证最小副本要满足要求 min.insync.replicas Type: int Default: 1 Valid Values: [1,...] Importance: high Update Mode: cluster-wide #动态更新模式 read-only :需要重启代理才能更新 per-broker :可以为每个经纪人动态更新 cluster-wide :可以作为集群范围内的默认值动态更新。也可以更新为每个经纪商的测试值。 #动态更新 bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-default --alter --add-config min.insync.replicas=1
brorker id异常
问题现象
- 机器查看负载40左右,且服务器无法登录,但可以ping通
- 事务任务出现问题
- 异常broker id 占用副本资源
问题修复
将所有事务相关的topic数据迁到别的机器。服务恢复正常。
cd /usr/hdp/3.1.0.0-78/kafka # 1. 先整理一个topic的json文件 a.json: #格式:{"topics": [{"topic": "xxx"}], "version":1} tn=yzcrm echo '{"topics": [{"topic": "'$tn'"}], "version":1}' >a.json # 2. 生成预执行计划: #注意点:--broker-list 为要重平衡到哪些broker id上 bin/kafka-reassign-partitions.sh --zookeeper 172.18.50.179:2181 --topics-to-move-json-file a.json --broker-list "1007,1008,1009,1011,1012,1013,1014,1015,1016,1017" --generate # 修改生成的计划 # 3. 执行数据重平衡: bin/kafka-reassign-partitions.sh --zookeeper 172.18.50.179:2181 --reassignment-json-file a-1.json --execute # 4. 查看平衡进展状态: bin/kafka-reassign-partitions.sh --zookeeper 172.18.50.179:2181 --reassignment-json-file a-1.json --verify
副本数
问题描述
kafka集群节点挂掉致数据缺失
问题原因 default.replication.factor 默认值为1,副本数为1,会有单点故障
解决:
default.replication.factor 3 默认创建topic的副本数。也可通过 –replication-factor,在创建的时候指定。应改为3
#动态修改 bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-default --alter --add-config default.replication.factor=3 #查看 bin/kafka-configs.sh --describe --bootstrap-server localhost:9092 --entity-type brokers #动态更新模式 read-only :需要重启代理才能更新 per-broker :可以为每个经纪人动态更新 cluster-wide :可以作为集群范围内的默认值动态更新。也可以更新为每个经纪商的测试值。 如 default.replication.factor Type: int Default: 1 Valid Values: Importance: medium Update Mode: read-only #重启才能更新
参考:brokerconfig