大数据开发 --- Kafka

本文介绍了Kafka的基本配置,包括在多节点环境下的部署,以及其作为发布订阅型消息队列的高吞吐量特性。Kafka利用磁盘顺序读写实现高性能,并在容错机制上,如Broker节点宕机或新增时,能自动调整。此外,提到了Kafka的数据存储策略和如何保证数据不丢失,涉及生产者的ISR、ACK机制和消费者的offsetcommit。

⏳环境: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)如何保证数据的可靠性:

### Kafka大数据平台上的运维 #### 日常运维工作 完成Kafka集群的日常运维工作包括但不限于上线、日常监控、问题定位以及脚本开发。这些操作对于确保Kafka作为消息队列系统的稳定性和高效运行至关重要[^4]。 #### 监控与告警设置 为了保障Kafka集群健康运转,需建立完善的监控体系。这一体系应覆盖多个方面,如Broker状态、Topic指标、Consumer Group偏移量等。通过配置合理的阈值触发告警机制,在异常情况发生时能够及时通知相关人员采取措施[^1]。 #### 故障排查流程 当遇到故障时,可以遵循如下几个方向来进行诊断: - **日志分析**:查看Kafka Broker的日志文件,寻找错误提示或警告信息; - **性能瓶颈检测**:利用JVM工具集(jstat, jmap)检查是否存在内存泄漏等问题;也可以借助于操作系统层面命令(top, iostat),评估磁盘I/O压力大小; - **网络连通性验证**:确认Producer和Consumer能否正常连接至指定Brokers端口,并保持良好通信质量。 #### 性能调优建议 针对不同场景下的应用特点实施针对性优化策略: - 对于高吞吐量写入负载,适当增加Partition数量可提高并行度从而加快数据传输速度; - 调整`log.segment.bytes`, `retention.ms`参数控制单个Log Segment大小及过期时间,平衡存储空间占用率同历史记录保留期限之间的关系; - 如果发现频繁GC现象,则考虑调整堆外内存分配比例或是启用G1收集器等方式缓解此状况[^2]。 ```bash # 查看Kafka broker的状态 sudo systemctl status kafka # 使用kafkacat工具测试生产者发送消息 echo "test message" | kafkacat -b localhost:9092 -t test_topic -P # 检查消费者组滞后情况 /usr/hdp/current/kafka-broker/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group-name ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值