Kafka的数据存储结构及命令行操作

一、Kafka的数据存储结构

由于生产者生产的消息会不断追加到log文件末尾,为防止log文件过大导致数据定位效率低下,Kafka采取了分片和索引机制,将每个partition分为多个segment。每个segment对应两个文件:“.index”文件和“.log”文件。这些文件位于一个文件夹下,该文件夹的命名规则为:topic名称-分区序号

例如,test这个topic有三个分区,则其对应的文件夹为test-0,test-1,test-2。

index和log文件以当前segment的第一条消息的offset命名。

“.index”文件存储大量的索引信息,“.log”文件存储大量的数据,索引文件中的元数据指向对应数据文件中message的物理偏移地址。

二、命令行操作

1、topic操作

(1)创建topic

bin/kafka-topics.sh --zookeeper linux01:2181,linux02:2181,linux03:2181 --create --replication-factor 3 --partitions 3 --topic test

创建topic(手动指定副本的存储位置),这是会自动判断要创建的topic分区数和副本数

bin/kafka-topics.sh --create --topic test --zookeeper linux01:2181 --replica-assignment 0:1,1:2

参数解释:

--replication-factor  副本数量

--partitions 分区数量

--topic topic名称

(2)查看当前系统中的所有topic

bin/kafka-topics.sh --zookeeper linux01:2181,linux02:2181,linux03:2181 --list

(3)删除topic

bin/kafka-topics.sh --zookeeper linux01:2181,linux02:2181,linux03:2181 --delete --topic test

(4)查看某个topic的详情

bin/kafka-topics.sh --zookeeper linux01:2181,linux02:2181,linux03:2181 --describe --topic test

(5)修改分区数

bin/kafka-topics.sh --zookeeper linux01:2181 --alter --topic test --partitions 5

只支持增加分区,不支持减少分区,原因是减少分区时,涉及数据的转移,日志段的合并和拼接,代价太大

2、命令行producer

bin/kafka-console-producer.sh --broker-list linux01:9092,linux02:9092,linux03:9092 --topic test

>hello word

>kafka

>nihao

​​​​​​​3、命令行Consumer

  1. 消费消息

bin/kafka-console-consumer.sh --bootstrap-server  linux01:9092,linux02:9092,linux03:9092  --from-beginning --topic test

# 指定要消费的分区,和要消费的起始offset

bin/kafka-console-consumer.sh --bootstrap-server linux01:9092,linux02:9092,linux03:9092 --topic doit14 --offset 2 --partition 0

4、​​​​​​​配置管理 kafka-configs

kafka-configs.sh 脚本是专门用来对配置进行操作的,这里的操作是运行状态修改原有的配置,以此可以达到动态变更的目;

kafka-configs.sh 脚本包含:变更alter、查看describe 这两种指令类型。同使用 kafka-topics.sh 脚本变更配置一样,增、删、改的行为都可以看做变更操作,不过kafka-configs. sh 脚本不仅可支持操作主题相关的配置,还支持操 broker 、用户和客户端这3个类型的配置。

kafka-configs.sh 脚本使用 entity-type 参数来指定操作配置的类型,并且使 entity-name参数来指定操作配置的名称

比如查看topic的配置可以按如下方式执行:

bin/kafka-configs.sh zookeeper doitedu01: 2181  --describe  --entity-type topics  --entity-name tpc_2

比如查看broker的动态配置可以按如下方式执行:

bin/kafka-configs.sh zookeeper doitedu01: 2181  --describe  --entity-type brokers  --entity-name 0 --zookeeper doitedu01:2181

entity-type和entity-name的对应关系

示例:添加topic级别参数

bin/kafka-configs.sh --zookeeper localhost:2181 --alter --entity-type topics --entity-name tpc_2  --add-config cleanup.policy=compact , max.message.bytes=10000

使用 kafka-configs.sh 脚本来变更( alter )配置时,会在 ZooKeeper 中创建一个命名形式为:

/config/<entity-type>/<entity name >的节点,并将变更的配置写入这个节点

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值