大数据面试葵花宝典之Kafka进阶

Posted 一只在路上的猿子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据面试葵花宝典之Kafka进阶相关的知识,希望对你有一定的参考价值。

大数据面试-------Kafka进阶

一、Kafka的设计时什么样呢?

答:1、kafka将消息以topic为单位进行归纳
2、将向kafka topic发布消息的程序称为 producers (生产者)
3、将预定 topics 并消费消息的程序称为 consumer (消费者)
4、Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker 经理
5、producers 通过网络将消息发送到kafka 集群,集群向消费者提供信息

二、数据传输的事务定义有哪三种?

答:数据传输的事务定义通常有以下三种级别:
1、最多一次:消息不会被重复发送,最多被传输一次,但也有可能一次不传输
2、最少一次:消息不会被漏发送,最少被传输一次,但也有可能被重复传输、
3、精确的一次:不会漏传输也不会重复传输,每个消息都被传输一次而且仅仅被传输一次,只是大家所期望的

三、Kafka判断一个节点是否还活着有那两个条件?

答:1、节点必须可以维护和Zookeeper的连接,Zookeeper通过心跳机制检查每个节点的连接
2、如果节点时个 follower,他必须能及时的同步leader的写操作,延时不能太久

四、producer生产者是否直接将数据发送到broker的leader主节点?

答:producer生产者直接将数据发送到broker的leader(主节点),不需要在多个节点进行分发,
为了帮助producer做到这点,所有的kafka节点都可以及时的告知:哪些节点是活动的,目标
topic目标分区的leader在哪,这样producer就可以直接将消息发送到目的地了

五、Kafka consumer消费者是否可以消费指定分区消息?

答:Kafka consumer消费消息时,向broker(中间人)发出“fetch”(拉取)请求去消费特定分区的消息,
consumer指定消息在日志中的偏移量(offset),就可以消费从这个位置开始的消息,
customer拥有了offset(补偿)的控制权,可以向后回滚去重新消费之前的消息,这是很有意义的

六、Kafka消息是采用Pull模式,还是Push模式?

答:生产者使用push(推)模式将消息发布到Broker,消费者使用pull(拉)模式从Broker订阅消息
优缺点:
push模式很难适应消费速率不同的消费者,如果push的速度太快,容易造成消费者拒绝服务或网络阻塞;
如果push的速度太慢,容易造成消费者性能浪费,但是采用pull的方式也有一个缺点,就是当Broker没有
消息时,消费者会陷入不断的轮询中,为了避免这点,kafka有参数可以让消费者阻塞知道是否有新消息到达。

七、Kafka存储在硬盘的消息格式是什么?

答:消息由一个固定长度的头部和可变长度的字节数组组成。头部包含一个版本号和CRC32效验码
1、消息长度:4bytes
2、版本号:1byte
3、CRC效验码:4bytes
4、具体的消息:n bytes

八、Kafka高效文件存储设计特点?

答:1、kafka把topic(kafka单位)中一个parition(分区)大文件分成多个小文件段,通过小文件段,就容易定期清除
或删除已经消费完的文件减少磁盘占用。
2、通过索引信息可以快速定位message(消息)和确定response(响应)的最大大小
3、通过index元数据全部映射到memory,可以避免segment file 的IO磁盘操作
4、通过索引文件稀疏存储,可以大幅降低index(指数)文件元数据占用空间大小

九、Kafka与传统消息系统之间有三个关键区别?

答:1、Kafka持久化日志,这些日志可以被重复读取和无限期保留
2、Kafka是一个分布式系统:它以集群的方式运行,可以灵活伸缩,在内部通过复制数据
3、提升容错能力和高可用性
4、Kafka支持实时的流式处理

十、partition(分区)的数据如何保存到硬盘?

答:1、topic中的多个partition以文件夹得形式保存到broker,每个分区序号从0递增,且消息有序
2、Partition文件下游很多segment(xxx.index,xxx.log)
3、segment文件里的大小和配置文件大小一致可以根据要求修改,默认为1G
4、如果大小大于1G时,会滚动一个新的segment并且以上一个segment最后一条消息的偏移量命名

十一、Kafka的ack机制

答:request.required.acks有三个值 0 1 -1
0:生产者不会等待broker的ack,这个延迟最低但是存储的保证最弱当server挂掉的时候就会丢数据
1:服务端会等待ack值leader副本确认接收到消息后发送ack但是如果leader挂掉后
他不确保是否复制完成新leader也会导致数据丢失
-1:同样在1的基础上服务端会等所有的follower的副本受到数据后才会收到leader发出的ack,这样数据不会丢失

十二、Kafka的消费者如何消费数据

答:消费者每次消费数据的时候,消费者都会记录消费的物理偏移量(offset)的位置
等到下次消费时,他会接着上次位置继续消费

十三、消费者负载均衡策略

答:一个消费者组中的一个分片对应一个消费者成员,他能保证每个消费者成员都能访问,
如果组中成员太多会有空闲的成员

十四、数据有序

答:1、一个消费者组里它的内部是有序的
2、消费者组与消费者组之间是无序的

十五、Kafka生产数据时数据的分组策略

答: 1、生产者决定数据产生到集群的那个partition(分区)中
2、每条消息都是以(key,value)格式
3、key是由生产者发送数据传入
4、所以生产者(key)决定了数据产生到集群哪个partition(分区)

以上是关于大数据面试葵花宝典之Kafka进阶的主要内容,如果未能解决你的问题,请参考以下文章

2022年最强大数据面试宝典(全文50000字,建议收藏)

2022年最强大数据面试宝典(全文50000字)

2022年最强大数据面试宝典(全文50000字)

2022年最强大数据面试宝典(全文50000字)

大数据面试宝典 第一篇 Hadoop 面试题

大数据面试重点之kafka