博主闭关两个多月,查阅了数百万字的大数据资料,结合自身的学习和工作经历,总结了大厂高频面试题,里面涵盖几乎所有我见到的大数据面试题目。
《大厂高频面试题系列》目前已总结4篇文章,且在持续更新中✍。文中用最直白的语言解释了Hadoop、Hive、Kafka、Flume、Spark等大数据技术和原理,细节也总结的很到位,是不可多得的大数据面试宝典,强烈建议收藏,祝大家都能拿到心仪的大厂offer🏆。下面是相关的系列文章:
- 💗Hadoop💗:57道hadoop大厂高频面试题
- 💗Hive💗:31道Hive大厂高频面试题
- 💗Flume💗:15道Flume大厂高频面试题
文章目录
-
- 1. 请介绍一下kafka是什么
- 2. 请说明Kafka的基础架构
- 3. Kafka的常用操作指令
- 4. Kafka的文件存储机制
- 5. Kafka新建的分区会在哪个目录下创建
- 6. Kafka的分区策略
- 7. kafka的数据可靠性保证
- 8. Kafka的Exactly Once语义
- 9. 消息是采用Pull模式,还是Push模式
- 10. Kafka的分区分配策略有哪些
- 11. Kafka的哪些设计让它有如此高的性能
- 12. Zookeeper在Kafka中的作用
- 13. 当你使用kafka-topics.sh创建了一个topic之后,Kafka背后会执行什么逻辑
- 14. Kafka Producer的消息发送流程
- 15. Kafka Consumer的offset维护(提交)方式
- 16. 消费者如何能从Kafka得到准确的信息
- 17. 你用Kafka监控(Kafka Eagle)哪些东西
- 18. Kafka中的ISR、OSR、AR又代表什么
- 19. LEO、HW、LSO、LW等分别代表什么
- 20. Kafka中是怎么体现消息顺序性的
- 21. 消费组中的消费者个数如果超过topic的分区会怎么样
- 22. 消费者提交消费位移时提交的是当前消费到的最新消息的offset还是offset+1
- 23. 有哪些情形会造成重复消费或者漏消费
- 24. Kafka 分区数可以增加或减少吗,为什么
- 25. Kafka有内部的topic吗?有什么作用?
- 26. Kafka中有哪些地方需要选举,这些地方的选举策略又有哪些?
- 27. 失效副本是指什么?有那些应对措施?
- 28. kafka整合flume的方式有哪些?
- 29. 请简述下你在哪些场景下会选择 Kafka?
- 30. Kafka创建Topic时如何将分区放置到不同的Broker中?
- 31. 谈一谈 Kafka 的再均衡
- 32. Kafka 有哪些特点?
- 33. Kafka 有哪些缺点?
- 34. 传统的消息传递方法有哪些?
- 35. Kafka相对于传统的消息传递方法有什么优势?
- 36. Kafka 消费者是否可以消费指定分区消息?
- 37. Kafka 新旧消费者的区别?
- 38. Kafka服务器一次能接收到的最大信息是多少?
- 39. 从Kafka读取数据后,数据会自动删除吗
- 40. Spark如何消费Kafka的数据
1. 请介绍一下kafka是什么
Kafka是一个分布式的基于发布/订阅模式的消息队列,使用Scala编写,主要应用于大数据实时处理领域。离线场景一般是结合flume进行使用。
2. 请说明Kafka的基础架构
(1)Producer :消生产者,就是向kafka中发送消息(写入消息)
(2)consumer: 消费者,向kafka中拉取消息进行消费
(3)Consumer Group (CG):消费者组,由多个consumer组成。消费者组。消费者组中有多个消费者,一般是一个消费者组消费一个topic,消费者组中的所有的消费者就可以各自消费对应的分区数据就可以了。
一般group中的consumer的个数和Topic的分区数相等。如果group中的consumer大于Topic的分区数,多余的消费者不会工作。 如果group中的consumer小于Topic的分区数,则需要一个consumer去消费多个分区。
(4)broker: kafka的节点,partition数据就是保存在broker上面
(5)Topic(主题) :在工作中一般是一个业务一个主题,好处就是数据分类之后比较好处理。
topic是逻辑上的概念,而partition是物理上的概念,parrtition才是真正存储数据的。
(6)Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。这样做有2个好处(即分区的原因):
- 实现数据的分布式存储
- 提高并行度以及吞吐量
(7)Replica:副本,提高partition的数据的高可用。一个topic的每个分区都有若干个副本,其中包含一个leader和若干个follower。
(8)leader:每个分区多个副本的“主”,生产者向partition中写入消息的时候也是向leader写入,消费者消费partition数据的时候是找leader消费。
(9)follower:每个分区多个副本中的“从”,实时从leader中同步数据,保持和leader数据的同步。leader发生故障时,某个follower会成为新的leader。
(10)offset:用来标识消费者上次消费到了partition的哪条数据(每个消费者都有自己的offset)
3. Kafka的常用操作指令
(1)创建topic
kafka-topic.sh --create --topic topic名称 --partitions 分区数 --replication-factor 副本数 --bootstrap-server borker节点:端口<9092>
说明:
--create 表示是创建topic
--bootstrap-server 根据输入的broker来找到kafka集群
注意: 副本数不能不要大于kafka集群的borker个数(多余的副本没什么用)
--partitions --replication-factor 这两个参数在创建topic的时候可以不用写,默认值都是1
样例:
kafka-topics.sh --create --topic first --bootstrap-server wxler1:9092,wxler2:9092 --partitions 3 --replication-factor 3
(2)查看kafka集群所有的topic
kafka-topic.sh --list --bootstrap-server borker节点:端口<9092>
(3)查看某一个topic的信息
kafka-topic.sh --describe --topic topic名称 --bootstrap-server borker节点:端口<9092>
说明:
可以查看的信息包含topic的分区数、副本数、leader在哪个broker上。follwer在哪些broker节点上。ISR列表
样例:
[wxler@wxler1 ~]$ kafka-topics.sh --describe --bootstrap-server wxler1:9092,wxler2:9092 --topic first
Topic: first PartitionCount: 3 ReplicationFactor: 3 Configs: segment.bytes=1073741824
Topic: first Partition: 0 Leader: 3 Replicas: 3,1,2 Isr: 3,1,2
Topic: first Partition: 1 Leader: 1 Replicas: 1,2,3 Isr: 1,2,3
Topic: first Partition: 2 Leader: 2 Replicas: 2,3,1 Isr: 2,3,1
(4)修改topic(只能够修改topic的分区,而且是只能增加分区,不能够减少分区)
kafka-topic.sh --alter --topic topic名称 --partitions 分区数 --bootstrap-server borker节点:端口<9092>
(5)模拟生产者
kafka-console-producer.sh --topic topic名称 --broker-list borker节点:端口<9092>
(6)模拟消费者
kafka-console-consumer.sh --topic topic名称 --bootstrap-server borker节点:端口<9092>
(7)查看kafka数据
kafka-dump-log.sh --files kafka数据文件 --print-data-log