《Kafka系列》Kafka常见问题处理记录

这篇具有很好参考价值的文章主要介绍了《Kafka系列》Kafka常见问题处理记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kafka常见问题处理记录

一、kafka创建topic失败, Replication factor: 1 larger than available brokers: 0

1.创建语句如下所示,按照习惯在添加zookeeper参数的时候,指定了zxy:2181/kafka,但是却创建失败,Error while executing topic command : Replication factor: 1 larger than available brokers: 0.

[root@zxy bin]# kafka-topics.sh --create --topic tp1 --zookeeper zxy:2181/kafka --partitions 3 --replication-factor 1
Error while executing topic command : Replication factor: 1 larger than available brokers: 0.
[2023-03-27 17:15:46,605] ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 1 larger than available brokers: 0.
 (kafka.admin.TopicCommand$)

2.检查各个broker的server.properties文件

发现在配置参数的时候,zookeeper.connect指定的是zxy:2181,zxy:2182,zxy:2183

[root@zxy config]# cat server01.properties
broker.id=1
port=9091
listeners=PLAINTEXT://localhost:9091
log.dirs=/zxy/apps/kafkaCluster/kafkaLog01
zookeeper.connect=zxy:2181,zxy:2182,zxy:2183

3.指定zookeeper参数为zxy:2181,创建成功

[root@zxy bin]# kafka-topics.sh --create --topic tp1 --zookeeper zxy:2181 --partitions 3 --replication-factor 1
Created topic "tp1".

二、服务器Cannot allocate memory

问题:在使用服务器中遇到内存无法分配到问题导致启动不了Kafka
思路一:根据查找方法,最后将vm.overcommit_memory设为1,但是对我这个问题没有太大帮助

管理员下三种方案
1.编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p使配置文件生效
2.sysctl vm.overcommit_memory=1
3.echo 1 > /proc/sys/vm/overcommit_memory,然后sysctl –p永久生效

思路二:然后通过修改为kafka分配的内存,还是没有解决问题

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi

修改为

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"
fi

思路三:最后想到zookeeper已经启动了,是不是因为它分配的内存太多了,减少为zookeeper分配的内存

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"
fi

三、Offset Explorer连接Kafka问题集合,(Timeout expired while fetching topic metadata),(Uable to find any brokers)

1. Timeout expired while fetching topic metadata

1.Offset Explorer配置好zookeeper的连接地址后

timeout expired while fetching topic metadata,kafka,kafka,java,分布式

2.在查看Topics的时候,报错Timeout expired while fetching topic metadata

timeout expired while fetching topic metadata,kafka,kafka,java,分布式

3.排查发现应该是kafka的server.properties文件中的advertised.listeners问题

  • 修改前是

    advertised.listeners=PLAINTEXT://localhost:9091
    
  • 修改后

    advertised.listeners=PLAINTEXT://:9091
    

4.修改好配置文件后,重启Kafka即可

2.Uable to find any brokers

1.重新连接后,又遇到Uable to find any brokers问题,访问不到的原因是,Offset Explorer访问Kafka的时候,是因为Kafka tool是通过主机名访问的,所以要在windows的hosts文件中配置上Kafka服务器的IP映射,配置目录在C:\Windows\System32\drivers\etc

timeout expired while fetching topic metadata,kafka,kafka,java,分布式

2.打开C:\Windows\System32\drivers\etc,修改配置文件hosts,添加Kafka主机的映射关系

C:\Windows\System32\drivers\etc\hosts

125.262.96.387	zxy

3.断开连接后,在AdvancedBootstrap servers处配置好Kafka服务,重新连接即可

timeout expired while fetching topic metadata,kafka,kafka,java,分布式

4.重新连接后,即可以看到已经可以正常看到Topics了

timeout expired while fetching topic metadata,kafka,kafka,java,分布式

四、kafka数据到hudi丢失数据问题

1.报错问题


Caused by: java.lang.IllegalStateException: Cannot fetch offset 196 (GroupId: spark-kafka-source-6f1df211-fdcb-4bcc-813d-55c4f9661c9d-1732697149-executor, TopicPartition: news-0).
Some data may have been lost because they are not available in Kafka any more; either the
 data was aged out by Kafka or the topic may have been deleted before all the data in the
 topic was processed. If you don't want your streaming query to fail on such cases, set the
 source option "failOnDataLoss" to "false".

        at org.apache.spark.sql.kafka010.InternalKafkaConsumer$.org$apache$spark$sql$kafka010$InternalKafkaConsumer$$reportDataLoss0(KafkaDataConsumer.scala:642)
        at org.apache.spark.sql.kafka010.InternalKafkaConsumer.org$apache$spark$sql$kafka010$InternalKafkaConsumer$$reportDataLoss(KafkaDataConsumer.scala:448)
        at org.apache.spark.sql.kafka010.InternalKafkaConsumer$$anonfun$get$1.apply(KafkaDataConsumer.scala:269)
        at org.apache.spark.sql.kafka010.InternalKafkaConsumer$$anonfun$get$1.apply(KafkaDataConsumer.scala:234)
        at org.apache.spark.util.UninterruptibleThread.runUninterruptibly(UninterruptibleThread.scala:77)
        at org.apache.spark.sql.kafka010.InternalKafkaConsumer.runUninterruptiblyIfPossible(KafkaDataConsumer.scala:209)
        at org.apache.spark.sql.kafka010.InternalKafkaConsumer.get(KafkaDataConsumer.scala:234)
  • 翻译结果

    最终应用程序状态:失败,exitCode:15,(原因:用户类引发异常:org.apache.spark.sql.streaming.StreamingQueryException:由于阶段失败而中止作业:阶段2.0中的任务0失败4次,最近的失败:阶段2.0中的任务0.3丢失(TID 5,hadoop,executor 1):java.lang.IllegalStateException:无法获取偏移量196(GroupId:spark-kafka-source-e2868915-6d7a-4aef-99a8-3d1c5ef45147-1732697149-executor,主题分区:news-0)。
    一些数据可能已经丢失,因为它们在卡夫卡不再可用;要么是数据被卡夫卡过时了,要么是主题在处理完主题中的所有数据之前被删除了。如果您不希望流式查询在这种情况下失败,请将源选项“failOnDataLoss”设置为“false”。

2.根据提示添加配置文件 -> option(“failOnDataLoss”,“false”)

//5.读取Kafka源数据
        val df: DataFrame = spark.readStream.format("kafka")
            .option("kafka.bootstrap.servers", params.brokerList)
            .option("subscribe", params.topic)
            .option("startingOffsets", "latest")
            .option("kafka.consumer.commit.groupid", "action-log-group01")
            .option("failOnDataLoss","false")
            .load()

tips:认为添加这个配置不太妥当,但尚未找到适宜的方法
哪位博主知道的,希望可以指点指点文章来源地址https://www.toymoban.com/news/detail-768340.html

到了这里,关于《Kafka系列》Kafka常见问题处理记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kafka常见问题QA(六)

    6.1 无消息丢失如何配置 producer 调用方式 (1)网络抖动导致消息丢失,Producer 端可以进行重试。 (2)消息大小不合格,可以进行适当调整,符合 Broker 承受范围再发送。 不要使用 producer.send(msg),而要使用 producer.send(msg, callback)。记住,一定要使用带有回调通知的 send 方法。

    2024年02月11日
    浏览(33)
  • 八、Kafka时间轮与常见问题

    Kafka中存在大量的延时操作。 1、发送消息-超时+重试机制 2、ACKS 用于指定分区中必须要有多少副本收到这条消息,生产者才认为写入成功(延时 等) Kafka并没有使用JDK自带的Timer或者DelayQueue来实现延迟的功能,而是基于时间轮自定义了一个用于实现延迟功能的定时器(Syst

    2024年02月15日
    浏览(25)
  • Git常见问题与使用实际问题记录。

    git stash 是 Git 版本控制系统提供的一个命令,用于临时保存当前工作目录的修改。当您在进行代码开发时,可能会遇到需要暂时切换到其他分支或处理其他任务的情况,但又不想提交当前的修改。这时,您可以使用 git stash 命令来保存这些修改,以便稍后恢复并继续工作。

    2024年02月04日
    浏览(45)
  • flink开发常见问题 —— flink-kafka 依赖版本冲突问题

    由于 flink / kafka 的版本不断更新,创建项目的时候就应当考虑清楚这几个依赖库的版本问题,尽可能地与实际场景保持一致,比如服务器上部署的 kafka 是哪个版本,flink 是哪个版本,从而确定我们需要开发的是哪个版本,并且在真正的开发工作开始之前,应当先测试一下保证

    2024年02月07日
    浏览(42)
  • zookeeper 常见问题处理

    调整jvm参数 创建文件调整: 验证: 堆设置:

    2024年02月08日
    浏览(33)
  • JumpServer 常见问题处理

    官网地址:JumpServer - 开源堡垒机 - 官网 在线电话:400-052-0755 技术支持:JumpServer 技术咨询 本篇文章主要说明使用JumpServer堡垒机时遇到的各种小问题,这些可能是操作不当、系统环境、资产环境等各类原因导致的。本文划分了几个篇章,对常见问题进行整理总结,希望能对使

    2024年02月09日
    浏览(26)
  • Rabbitmq 常见问题处理

    Rabbitmq queue NaN status code 如下图: 参考文章 原因分析: Queue在mear数据库中存,但在队列列表中并不存在,所以才会存在该问题,并且是在RabbitMQ做了镜像集群的时候才会出现这样的情况。 解决 删除队列再重建。或者重启镜像机器服务。

    2024年02月09日
    浏览(30)
  • minio常见问题处理

    持续更新中。。。 问题现象:minio集群启动失败日志提示不能使用root分区 问题原因:minio集群时,数据目录不能和root根文件系统在同一个磁盘,需要使用单独的磁盘,否则启动失败。 问题现象: 后端服务调用minio客户端上传文件失败,message = The difference between the request tim

    2024年02月12日
    浏览(45)
  • CentOs 8 常见问题处理

    可见网卡已经新增了 网卡新增了之后需要给网卡添加一个网络(即:该网卡需要连接到的网络的配置信息) 参数:con-name 网络连接的名称一张网卡可以连接很多网络,每个网络都有单独且在本机是唯一的名字 参数:ifname 网卡的名称,就是你这个网络是基于哪张网卡创建的。

    2024年02月14日
    浏览(33)
  • MySQL常见问题处理(三)

    夕阳留恋的不是黄昏,而是朝阳 上一章简单介绍了MySQL数据库安装(二), 如果没有看过, 请观看上一章 复制内容来源链接: https://blog.csdn.net/weixin_48927364/article/details/123556927 以 管理员身份 打开 cmd窗口 ,停止mysq服务,即输入以下命令,回车 继续输入以下命令,回车 注意不要关

    2024年02月14日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包