小言_互联网的博客

Python工程师的大数据之路(6c)Kafka理论知识

309人阅读  评论(0)

1、基础理论

1.1、什么是消息队列

  • Message Queue
  • 消息的传输过程中保存消息的容器
  • 应用场景:程序解耦、异步消息、流量削锋…

1.2、消息队列的两种模式

点对点模式(消费者主动拉取数据,拉取成功后删除队列上的数据)

一个消息 只能有一个消费者可以消费

发布/订阅模式(消费者消费数据之后,队列上的数据不会被清除)

1.3、高可用原理

  • High Availability
  • 目标:减少停工时间
  • 策略:消除单点故障

工作模式

2、Kafka概述

  • 属于消息队列
  • 分布式的
  • 基于发布/订阅模式
  • 主用于大数据实时处理

架构图

英文名 译名 说明
Producer 生产者 生产消息
Consumer 生产者 消费消息
Consumer Group 消费者组 由多个Consumer组成
是逻辑上的一个订阅者
Broker 经纪人 一台kafka服务器就是一个Broker
一个集群由多个Broker组成
一个Broker可以容纳多个topic的partition
Topic 主题 可以理解为一个存放消息的逻辑上的队列
一个topic可以分布到多个Broker
Partition 分区 一个topic可以分存多个partition
每个partition是一个有序的队列
Replica 复制品 数据副本
leader 首领 对接生产者和消费者
follower 追随者 实时同步leader的数据
leader故障时,某follower会成为新的leader

一个主题下可以有多个分区;分区有序,主题不一定有序

消费者组是逻辑上的一个订阅者,由多个消费者组成

各个分区可以被消费者并行消费

1个消费者可以消费多个分区
1个分区只能有1个消费者

建议 某主题的分区数=订阅该主题的消费者组的消费者数

一台服务器有Broker,一个集群由多个Broker组成

一个Topic可以分布到多个Broker

3、数据存储原理

0、修改segment大小

vi $KAFKA_HOME/config/server.properties
log.segment.bytes=102400

1、创建分区,两个副本,三个分区

kafka-topics.sh \
--zookeeper hadoop100:2181/kafka \
--create \
--replication-factor 2 \
--partitions 3 \
--topic topicA

2、生产数据(Kafka内置的生产者,可用于压测)

kafka-producer-perf-test.sh --topic topicA \
--num-records 4000 --record-size 1024 \
--producer-props bootstrap.servers=hadoop100:9092 --throughput -1
参数 说明
--num-records 写多少个数据
--record-size 每个数据多大(单位:byte)
--producer-props 指定数据写到哪个集群
--throughput 写数据速率限制,-1表示不限

3、查看数据目录下名为topicA的主题

ls $KAFKA_HOME/logs | grep topicA
ssh hadoop101 'ls $KAFKA_HOME/logs | grep topicA'
ssh hadoop102 'ls $KAFKA_HOME/logs | grep topicA'

4、查看分区(文件夹)内的文件

ll topicA-1

5、查看索引文件以及偏移量(offset)

kafka-dump-log.sh --print-data-log --files 00000000000000000000.index

6、以上内容总结

4、生产数据的可靠性

什么是ack
英文全称:acknowledgement character
译名:命令正确应答

应答等级

什么是ISR
全称:in-sync replica set
leader同步到一定程度的 follower
长期没同步的 follower将被踢出 ISR
leader挂掉后就从 ISR中选举新 leader
kafka-topics.sh --describe --topic topicA --bootstrap-server hadoop100:9092

查看主题信息,如:分区数、领导者、追随者、Isr……

附录

en 🔉 cn
acknowledgement əkˈnɑːlɪdʒmənt n. 承认;确认;感谢
replica ˈreplɪkə n. 复制品,仿制品;摹本
bootstrap ˈbuːtstræp n. (靴筒后的)靴襻;[计] 引导程序;vt. 启动(电脑)

转载:https://blog.csdn.net/Yellow_python/article/details/116275463
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场