![](https://img-blog.csdnimg.cn/1305aeb398fb441b848a8309eae06670.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Kafka
文章平均质量分 72
Kafka基础操作
Alienware^
喜欢专研Java,Scala,Python,数据库,以及大数据框架系列知识。希望通过不断的学习,记录自己的点点滴滴。
展开
-
Kafka3.0 新特性 Kafka-Kraft 模式
Kafka-Kraft (keruafute)左图为 Kafka 现有架构,元数据在 zookeeper 中,运行时动态选举 controller,由controller 进行 Kafka 集群管理。右图为 kraft 模式架构(实验性),不再依赖 zookeeper 集群,而是用三台 controller 节点代替 zookeeper,元数据保存在 controller 中,由 controller 直接进行 Kafka 集群管理。这样做的好处有以下几个:1)再次解压一份 kafka 安装包2)重命名为原创 2022-06-05 22:19:21 · 1030 阅读 · 1 评论 -
Kafka3.0 Eagle 监控
Kafka-Eagle 框架可以监控 Kafka 集群的整体运行情况,在生产环境中经常使用。Kafka-Eagle 的安装依赖于 MySQL,MySQL 主要用来存储可视化展示的数据。如果集群中之前安装过 MySQL 可以跨过该步。MySQL安装链接1)关闭 Kafka 集群2)修改/opt/module/kafka/bin/kafka-server-start.sh 命令中修改如下参数值:为注意:修改之后在启动 Kafka 之前要分发之其他节点Kafka-Eagle 安装官网:https://原创 2022-06-05 17:05:52 · 737 阅读 · 0 评论 -
Kafka3.0 消费者事务与数据积压
重复消费:已经消费了数据,但是 offset 没提交。漏消费:先提交 offset 后消费,有可能会造成数据的漏消费。如果想完成Consumer端的精准一次性消费,那么需要Kafka消费端将消费过程和提交offset过程做原子绑定。此时我们需要将Kafka的offset保存到支持事务的自定义介质(比 如MySQL)。1)如果是Kafka消费能力不足,则可以考虑增加Topic的分区数,并且同时提升消费组的消费者数量,消费者数 = 分区数。(两者缺一不可)2)如果是下游的数据处理不及时:提高每批次拉取的数量。原创 2022-06-05 09:51:47 · 566 阅读 · 0 评论 -
Kafka3.0 Offset 消费方式
默认是 latest。当 Kafka 中没有初始偏移量(消费者组第一次消费)或服务器上不再存在当前偏移量时(例如该数据已被删除),该怎么办?(1)earliest:自动将偏移量重置为最早的偏移量,–from-beginning。(2)latest(默认值):自动将偏移量重置为最新偏移量。(3)none:如果未找到消费者组的先前偏移量,则向消费者抛出异常。需求:在生产环境中,会遇到最近消费的几个小时数据异常,想重新按照时间消费。例如要求按照时间消费前一天的数据,怎么处理?代码如下:...原创 2022-06-05 09:36:09 · 466 阅读 · 0 评论 -
Kafka3.0 提交offset方式
Kafka0.9版本之前,consumer默认将offset保存在Zookeeper中从0.9版本开始,consumer默认将offset保存在Kafka一个内置的topic中,该topic为__consumer_offsets之所以保存在Kafka内置的topic中,是因为如果offset保存在zookeeper中,会产生大量的网络通信,从而效率低下。__consumer_offsets 主题里面采用 key 和 value 的方式存储数据。key 是 group.id+topic+分区号,value 就原创 2022-06-04 23:54:01 · 639 阅读 · 0 评论 -
Kafka3.0 消费者 生产经验
2)Range 分区分配策略案例(1)修改主题 first 为 7 个分区。(2)复制 CustomConsumer 类(CustomConsumer类链接 ),创建 CustomConsumer2。这样可以由三个消费者CustomConsumer、CustomConsumer1、CustomConsumer2 组成消费者组,组名都为“test”,同时启动 3 个消费者。(3)启动 CustomProducer 生产者(CustomProducer普通异步发送即可,随后将循环中的5改成500),发送原创 2022-06-04 23:23:00 · 176 阅读 · 0 评论 -
Kafka3.0 消费者API
1)需求:创建一个独立消费者,消费 first 主题中数据。2)编写代码独立消费者案例(订阅分区)1)需求:创建一个独立消费者,消费 first 主题 0 号分区的数据。2)实现步骤消费者组案例1)需求:测试同一个主题的分区数据,只能由一个消费者组中的一个消费。2)案例实操复制一份基础消费者的代码(复制订阅主题代码),在 IDEA 中同时启动,即可启动同一个消费者组中的两个消费者。在控制台自行查看即可,...原创 2022-06-04 22:56:28 · 262 阅读 · 0 评论 -
Kafka3.0 消费者工作流程
1)pull(拉)模 式:consumer采用从broker中主动拉取数据。Kafka采用这种方式。2) push(推)模式:Kafka没有采用这种方式,因为由broker决定消息发送速率,很难适应所有消费者的消费速率。例如推送的速度是50m/s,Consumer1、Consumer2就来不及处理消息。pull模式不足之处是,如 果Kafka没有数据,消费者可能会陷入循环中,一直返回空数据Consumer Group(CG):消费者组,由多个consumer组成。形成一个消费者组的条件,是所有消费者的g原创 2022-06-04 22:24:59 · 678 阅读 · 0 评论 -
Kafka3.0 Broker 高效读写数据
1)Kafka 本身是分布式集群,可以采用分区技术,并行度高2)读数据采用稀疏索引,可以快速定位要消费的数据3)顺序写磁盘Kafka 的 producer 生产数据,要写入到 log 文件中,写的过程是一直追加到文件末端,为顺序写。官网有数据表明,同样的磁盘,顺序写能到 600M/s,而随机写只有 100K/s。这与磁盘的机械机构有关,顺序写之所以快,是因为其省去了大量磁头寻址的时间。4)页缓存 + 零拷贝技术零拷贝:Kafka的数据加工处理操作交由Kafka生产者和Kafka消费者处理。Kafka原创 2022-06-04 18:09:00 · 193 阅读 · 0 评论 -
Kafka3.0 Broker 文件存储
1)Topic 数据的存储机制2)index 文件和 log 文件详解说明:日志存储参数配置Kafka 中默认的日志保存时间为 7 天,可以通过调整如下参数修改保存时间。Kafka 中提供的日志清理策略有 delete 和 compact 两种。1)delete 日志删除:将过期数据删除思考:如果一个 segment 中有一部分数据过期,一部分没有过期,怎么处理?答案1:看所有数据是否超过7天,超过7天就删掉。不超过7天就保留,通俗就是不求同年同月同日生,但求同年同月同日四答案2:看日志大小,如果超过设置原创 2022-06-04 17:57:23 · 484 阅读 · 0 评论 -
Kafka3.0 Broker 生产经验
正常情况下,Kafka本身会自动把Leader Partition均匀分散在各个机器上,来保证每台机器的读写吞吐量都是均匀的。但是如果某 些broker宕机,会导致Leader Partition过于集中在其他少部分几台broker上,这会导致少数几台broker的读写请求压力过高,其他宕机的broker重启之后都是follower partition,读写请求很低,造成集群负载不均衡。在生产环境当中,由于某个主题的重要等级需要提升,我们考虑增加副本。副本数的增加需要先制定计划,然后根据计划执行。1)创建原创 2022-06-04 10:01:46 · 247 阅读 · 0 评论 -
Kafka3.0 副本
1)Kafka 副本作用:提高数据可靠性。2)Kafka 默认副本 1 个,生产环境一般配置为 2 个,保证数据可靠性;太多副本会增加磁盘存储空间,增加网络上数据传输,降低效率。3)Kafka 中副本分为:Leader 和 Follower。Kafka 生产者只会把数据发往 Leader,然后 Follower 找 Leader 进行同步数据。4)Kafka 分区中的所有副本统称为 AR(Assigned Repllicas)。AR = ISR + OSR,ISR,表示和 Leader 保持同步的 F原创 2022-06-04 09:38:27 · 1452 阅读 · 0 评论 -
Kafka3.0 Broker 工作流程
1)启动 Zookeeper 客户端。2)通过 ls 命令可以查看 kafka 相关信息。建议画图,或是在虚拟机中,实践操作,实践方式为,停掉集群中,某一台机器的kafka,而后在zk中观察其变化。原创 2022-06-02 10:36:41 · 268 阅读 · 0 评论 -
Kafka3.0数据有序 / 数据乱序
单分区内数据有序:在kafka 1.x 版本之前,需要配置在1.x 版本之后,如果没有开启幂等性,则开启幂等性之后数据乱序当启动幂等性时,服务端会缓存发来的最近五个数据,无论如何都会保证最近5个数都是有序的。但假如说,我们遇到了大量的乱序数据,其实我们可以考虑在kafka的下游,用Flink的 Watermark机制去做。原创 2022-06-01 22:29:57 · 345 阅读 · 0 评论 -
Kafka3.0 Producer 生产经验
从如下方面去设置• batch.size:批次大小,默认16k• linger.ms:等待时间,修改为5-100ms• compression.type:压缩snappy• RecordAccumulator:缓冲区大小,修改为64m代码设置:数据可靠性可靠性总结:acks=0,生产者发送过来数据就不管了,可靠性差,效率高;acks=1,生产者发送过来数据Leader应答,可靠性中等,效率中等;acks=-1,生产者发送过来数据Leader和ISR队列里面所有Follwer应答,可靠性高,效率低;原创 2022-06-01 18:46:14 · 338 阅读 · 0 评论 -
Kafka3.0生产者分区
1)便于合理使用存储资源,每个Partition在一个Broker上存储,可以把海量的数据按照分区切割成一块一块数据存储在多台Broker上。合理控制分区的任务,可以实现负载均衡的效果。2)提高并行度,生产者可以以分区为单位发送数据;消费者可以以分区为单位进行消费数据。由上图可知,可以自行在ProducerRecord类中去测试需求:例如我们实现一个分区器实现,发送过来的数据中如果包含 huanhuan,就发往 0 号分区,包含 hao,就发往 1 号分区。不包含上述两个数据,就发往2号分区实现步骤:原创 2022-06-01 16:56:04 · 379 阅读 · 0 评论 -
Kafka3.0同步发送API
同步案例图:异步案例图:同步发送API ,只需要在异步的基础上,添加get()方法即可原创 2022-06-01 11:46:07 · 302 阅读 · 0 评论 -
Kafka3.0异步发送API
1)需求:创建 Kafka 生产者,采用异步的方式发送到 Kafka Broker导入依赖代码示例:测试:在hadoop103 下输入消费者命令在idea执行代码,查看回调函数会在 producer 收到 ack 时调用,为异步调用,该方法有两个参数,分别是元数据信息(RecordMetadata)和异常信息(Exception),如果 Exception 为 null,说明消息发送成功,如果 Exception 不为 null,说明消息发送失败。基于异步代码,示例如下:整体代码如下:测试后,i原创 2022-06-01 11:15:59 · 218 阅读 · 0 评论 -
Kafka3.0 生产者消息发送流程
消息发送过程中,涉及了两个线程。main线程和Sender线程,main线程中创建双端队列 RecordAccumulator ,Sender线程是将双端队列 (RecordAccumulator)中的消息,拉取到 Broker。main 线程下的 Producer 中,调用 send方法 ,拦截器(可选可不选),序列化器,分区器,分区器中包含双端队列,默认32MB,分区中数据每一个批次大小默认为16kb batch.size = 16kb ,linger.ms 如果数据迟迟未达到batch.si原创 2022-05-31 22:21:26 · 222 阅读 · 0 评论 -
Kafka3.0 安装 和 常规使用
文章目录集群部署集群启停脚本Kafka 命令行操作主题命令行操作生产者命令行操作消费者命令行操作集群部署官方下载地址:http://kafka.apache.org/downloads.html1)解压安装包[root@hadoop102 software]$ tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module/2)修改解压后的文件名称[root@hadoop102 module]$ mv kafka_2.12-3.0.0/ kafka3)进入到/o原创 2022-03-08 21:31:09 · 2902 阅读 · 0 评论 -
Kafka3.0 概述
文章目录Kafka定义传统消息队列的应用场景缓冲/削峰解耦异步通信消息队列的两种模式点对点模式发布/订阅模式Kafka基础架构Kafka定义传统定义:是一个分步式基于发布/订阅模式的消息队列(Message Queue),主要应用大数据实时处理领域。发布/订阅:消息的发布者不会直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接受感兴趣的消息Kafka最 新定义 :Kafka是 一个开源的分布式事件流平台 (Event Streaming Platform),被数千家公司用于高性能数据原创 2022-03-08 21:09:36 · 159 阅读 · 0 评论 -
Kafka基础笔记——从小白到入门(二)
这里写目录标题Kafka APIProducer API消息发送流程异步发送 API同步发送 APIKafka APIProducer API消息发送流程Kafka 的 Producer 发送消息采用的是异步发送的方式。在消息发送的过程中,涉及到了两个线程——main 线程和 Sender 线程,以及一个线程共享变量——RecordAccumulator。main 线程将消息发送给 RecordAccumulator,Sender 线程不断从 RecordAccumulator 中拉取消息发送到原创 2020-08-14 17:36:54 · 128 阅读 · 0 评论 -
Kafka基础笔记——从小白到入门(一)
文章目录Kafka 概述定义消息队列传统消息队列的应用场景消息队列的两种模式Kafka 基础架构Producers的概念broker的概念Message组成partion中的每条Message包含以下三个属性:Consumers的概念Kafka 快速入门安装部署集群规划jar 包下载集群部署Kafka 命令行操作Kafka 架构深入Kafka 工作流程及文件存储机制Kafka 生产者分区策略数据可靠性保证Exactly Once 语义Kafka 消费者消费方式分区分配策略offset 的维护消费者组案例Ka原创 2020-08-13 16:26:50 · 340 阅读 · 0 评论