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

高吞吐的目录

  • 1、基础理论
    • 1.1、什么是消息队列
    • 1.2、消息队列的两种模式
    • 1.3、高可用原理
  • 2、Kafka概述
  • 3、主题和分区
  • 4、数据存储原理
  • 5、生产数据的可靠性
    • 5.1、ack
    • 5.2、ISR
  • 附录

1、基础理论

1.1、什么是消息队列

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

1.2、消息队列的两种模式

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

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

发布/订阅模式(消费者消费数据之后,队列上的数据不会被马上清除)
Python工程师的大数据之路(6c)Kafka理论知识_第1张图片

1.3、高可用原理

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

工作模式
Python工程师的大数据之路(6c)Kafka理论知识_第2张图片

2、Kafka概述

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

架构图
Python工程师的大数据之路(6c)Kafka理论知识_第3张图片

英文名 译名 说明
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

3、主题和分区

一个主题下可以有多个分区;分区有序,主题不一定有序
Python工程师的大数据之路(6c)Kafka理论知识_第4张图片

消费者组是逻辑上的一个订阅者,由多个消费者组成
Python工程师的大数据之路(6c)Kafka理论知识_第5张图片
各个分区可以被消费者并行消费

1个消费者可以消费多个分区
1个分区只能有1个消费者
Python工程师的大数据之路(6c)Kafka理论知识_第6张图片
建议 某主题的分区数=订阅该主题的消费者组的消费者数

一台服务器有Broker,一个集群由多个Broker组成
Python工程师的大数据之路(6c)Kafka理论知识_第7张图片

一个Topic可以分布到多个Broker

4、数据存储原理

Kafka将 生产者发送的消息 暂存到硬盘
Python工程师的大数据之路(6c)Kafka理论知识_第8张图片

下面使用命令查看具体的文件夹和文件

1、把segment改小,使得容易产生大量segment

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

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

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

3、生产数据(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表示不限

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

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

Python工程师的大数据之路(6c)Kafka理论知识_第9张图片

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

ll topicA-1

Python工程师的大数据之路(6c)Kafka理论知识_第10张图片

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

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

Python工程师的大数据之路(6c)Kafka理论知识_第11张图片

5、生产数据的可靠性

5.1、ack

  • 英文全称:acknowledgement character
  • 译名:命令正确应答

应答等级
Python工程师的大数据之路(6c)Kafka理论知识_第12张图片

5.2、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. 启动(电脑)

你可能感兴趣的:(大数据(下))