⏳环境:window10、CentOs7、VMware15.5
📃专栏:基础知识篇(Kafka)
🎯选自:大数据开发
本专栏:主要说明一些注意点和大致步骤,不涉及具体的安装步骤,具体安装步骤网上教程很多,大家可以自行去搜索。后续有空的话,也会补全具体步骤。
kafka的配置
1.(这里以需求为3个kafka节点为例)准备3台虚拟机(hadoop1为操作机,hadoop2、hadoop3、hadoop4则为kafka安装节点机)
2.在hadoop2上安装kafka,并修改文件配置,然后,scp配置至其他两个节点;
3.配置服务端和消费端:
3.1 hadoop2建立Topic,启动生产者节点;
3.2 另一个节点启动消费者节点,监听hadoop2数据变化情况;
知识点
1.消息队列:点对点(P2P)、发布订阅(Pub/Sub).
2.什么是kafka:发布订阅类型
高吞吐量:数据放在磁盘,但是利用磁盘的顺序读写速度超过内存的随机读取特性。
3.Kafka主要用在实时计算领域,可以和Flume、Spark、Flink等框架结合在一起使用。
存储策略
两大法宝:分段+索引
Topic >> Partitions >> Segment(往后添加,不满直接添加,满则创建新片段后添加)
容错机制
1.当kafka集群的一个Broker节点宕机,会出现什么现象?
影响不大,就集群会重新选举leader节点。
-----|-----
2.当kafka集群新增一个Broker节点,会出现什么现象?
Zookeeper会自动识别,并在适当的机会选择此节点提供Leader服务。
-----|-----
3.新启动的节点不会是任何分区的Leader,怎么重新均匀分配?
默认自动均匀配置策略,开启配置,auto.leader.rebalance.enable=True;
问题
1.Kafka的数据是存储在磁盘中的,为什么可以满足每秒百万级别消息的生产和消费?
虽说kafka数据存储在磁盘中的,但是他利用磁盘的顺序读写速度超过内存的随机读取特性,实现了高吞吐量的特性。
2.如何保证Kafka数据不丢失?从生产者和消费者两方面进行分析
生产者:
总结以上,可以得知生产者在推送消息时,依靠的是ISR、ACK机制、以及三种语义来达到不同情况的消息准确性。
所以总的过程应该是这样的: producer 向指定的 topic和partition发送数据, topic 的每个 partition 收到producer 发送的数据后,(下一步是等待ISR的follower同步完成,这一步会根据ack的参数配置[0,1,-1],确定具体的ack返回时机),该分区的leader向 producer 发送 ack(acknowledgement: 确认收到),如果producer 收到 ack, 就会进行下一轮的发送,否则重新发送数据。
消费者:
通过offset commit 来保证数据的不丢失,kafka自己记录了每次消费的offset数值,下次继续消费的时候,会接着上次的offset进行消费
3.Kafka如何保持数据一致性和可靠性?
(1)数据一致性的定义:
(2)可靠性是指:
(3)如何保证数据的可靠性: