kafka
kafka工作机制介绍
永不落后于人
永远相信美好的事情即将发生
展开
-
Kafka压力测试与机器数量计算
说明 用Kafka官方自带的脚本,对Kafka进行压测。Kafka压测时,可以查看到哪个地方出现了瓶颈(CPU,内存,网络IO)。一般都是网络IO达到瓶颈。kafka-consumer-perf-test.shkafka-producer-perf-test.shKafka Producer压力测试$KAFKA_HOME/bin/kafka-producer-perf-test.sh -原创 2021-04-06 16:14:41 · 252 阅读 · 0 评论 -
SparkStreaming消费kafka中的数据(0.10版本kafka)
自动维护offsetkafka0.10版本,topic的offset会维护在kafka的一个系统主题中:也就是__consumer_offsets中。代码import org.apache.kafka.clients.consumer.{ConsumerConfig, ConsumerRecord}import org.apache.kafka.common.serialization.StringDeserializerimport org.apache.spark.SparkConfim原创 2021-03-31 10:41:41 · 225 阅读 · 0 评论 -
Spark Streaming消费kafka的数据(0.8版本kafka)
导入依赖<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming-kafka-0-8_2.11</artifactId> <version>2.1.1</version></dependency>Receiver连接方式在kafka-0.8的版本,offset维护在zookeeper原创 2021-03-30 15:47:22 · 366 阅读 · 0 评论 -
Kafka面试题
1.Kafka中的ISR、AR、OSR分别代表什么?ISR:一个分区leader和leader保持同步的follower的集合。AR:分区所有的副本。OSR:因为故障,暂时被踢出ISR的follower。2.Kafka中的HW、LEO等分别代表什么?HW:High Watermark,所有保持同步的副本中最小的offset。LEO:Log End Offset,所有副本的最新的ofset。3.Kafka中是怎么体现消息顺序性的?kafka每个分区内,每条消息都有offset,所以只能保证分区原创 2021-02-28 10:12:47 · 364 阅读 · 0 评论 -
Kafka监控框架:Kafka-manager的配置与使用
下载kafka-manager链接:https://pan.baidu.com/s/18oYJfYnp7FCOq8jXnYDyew提取码:debl解压,配置conf目录下的application.confkafka-manager.zkhosts=“kafka-manager-zookeeper:2181”修改为:kafka-manager.zkhosts=“hadoop01:2181,hadoop02:2181,hadoop03:2181”其中hadoop01、hadoop02、hadoop原创 2021-02-28 09:01:49 · 370 阅读 · 0 评论 -
Flume对接Kafka(Kafka Channel)实例
a1.sources = r1a1.channels = c1a1.sinks = k1a1.sources.r1.type = execa1.sources.r1.command = tail -F /opt/module/hive/logs/hive.loga1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannela1.channels.c1.kafka.bootstrap.servers = hadoop01:90原创 2021-02-27 23:55:22 · 309 阅读 · 0 评论 -
Kafka自定义拦截器链
拦截器一:为消息添加指定前缀package com.aura.interceptor;import org.apache.kafka.clients.producer.ProducerInterceptor;import org.apache.kafka.clients.producer.ProducerRecord;import org.apache.kafka.clients.producer.RecordMetadata;import java.util.Map;/** * @au原创 2021-02-27 23:14:49 · 122 阅读 · 0 评论 -
Kafka手动提交offset到自定义存储介质代码实现
package com.aura.consumer;import org.apache.kafka.clients.consumer.ConsumerRebalanceListener;import org.apache.kafka.clients.consumer.ConsumerRecord;import org.apache.kafka.clients.consumer.ConsumerRecords;import org.apache.kafka.clients.consumer.Kafk原创 2021-02-27 20:24:47 · 245 阅读 · 0 评论 -
Zookeeper在Kafka中的作用
Kafka集群中有一个broker会被选举为Controller,负责监控集群broker的上下线,所有topic的分区副本策略和leader的选举。Controller的所有监控工作都是通过Zookeeper来完成的。原创 2021-02-26 13:53:33 · 122 阅读 · 0 评论 -
Kafka为什么这么快?
顺序写磁盘Kafka的Producer生产的数据,一直追加到log文件的末端,为顺序写,减少了磁盘寻址的时间。应用Pagecache高速缓冲区Kafka的数据是持久化到Pagecache高速缓冲区中的。会有以下几点好处:1)I/O Schedule会将连续的小块写组装成大块写,从而提高性能。2)I/O Schedule会将一些写操作重新排序好,减少磁头的移动时间。3)充分利用所有的空闲内存。4)读操作可以直接作用在Pagecache上,如果读数据的速率和写数据的速率相当,可以不经过磁盘交换数.原创 2021-02-26 13:45:31 · 64 阅读 · 0 评论 -
Kafka副本故障处理机制
一个分区的leader和所有的follower组成一个ISR集合。当follower发生故障时,会将该follower临时踢出ISR,直至follower恢复后,follower会从本地获取上次记录的HW,将log文件高于HW的都截取掉。重新向leader同步数据,直到该follower的LEO大于等于该分区的HW,即追上leader,就会重新加入ISR。当leader发生故障时,会在ISR中重新选举一个leader,为了保证数据的一致性,其他follower会将log文件中高于HW的部分截取掉,再.原创 2021-02-26 12:58:57 · 642 阅读 · 0 评论 -
Kafka如何保证数据不重复?
在Kafka0.11的版本,实现了Exactly Once语义。什么是Exactly Once?当ack设置为-1时,可以保证Producer到Server的数据不丢失,但是不能保证数据的不重复,即 At Least Once语义。当ack设置为0时,可以保证Producer到Server的数据不重复,但是不能保证数据不丢失,即 At Most Once语义。对于一些比较重要的数据,我们下游在处理数据时,即希望数据不丢失也不重复。在Kafka0.11的版本之前,我们只可以保证数据不丢失,在下游处理数原创 2021-02-26 11:46:38 · 721 阅读 · 0 评论 -
Kafka如何确保生产者消息的可靠性?
Kafka为了确保producer的消息能可靠的发送到topic,topic的每个分区接收到producer的消息后,都会向producer返回 ack 确认收到。如果producer收到ack,就发送下一条消息,否则重新发送。发送ack的时机Kafka为了保证数据不丢失,每个分区的数据都有其对应的副本。副本所在节点会通过向Zookeeper注册,抢占leader,其他副本则为follower。每个分区的leader和follower组成一组ISR(in-sync replica set )集合。原创 2021-02-26 11:06:03 · 259 阅读 · 0 评论 -
Kafka生产者的分区策略
分区原因**方便在集群中的扩展。**每个分区都可以调整,适应其所在的节点,每个Topic会分为多个分区,所以整个集群就可以适应任意大小的数据。**提高并发。**以partition为单位进行读写。分区策略生产者要发送的消息封装成ProducerRecord对象。根据api我们可以看到分区策略共有3种。指定分区号。 producer的分区就是指定的分区号。没有分区号但是指定了key。 producer的分区号由key的hash值 % 分区数量来决定。没有分区号也没有key。 第一次调用时原创 2021-02-26 09:58:25 · 581 阅读 · 0 评论 -
Kafka数据存储机制
Kafka中的消息是根据Topic进行分类的。生产者生产数据,消费者消费数据,都是面向topic。Topic是逻辑上的概念,分区是物理上的概念,分区规则为“topic名称+分区名”。每个分区中都对应一个log文件,该文件就是生产者生产的数据。生产者生产的数据会不断的追加到log文件末尾。为了防止log文件过大,导致数据定位效率过低,Kafka采用了分片和索引机制。每个log文件在达到一定的大小后(默认1G),都被物理上切分为多个Segment,每个Segment都有其对应的log文件、index索..原创 2021-02-25 15:20:13 · 211 阅读 · 0 评论