您的位置:首页 > 其它

KAFKA安装____基本命令使用____及OFFSET和索引机制

2020-07-14 06:13 411 查看

KAFKA的安装及配置

开源网站下载
http://kafka.apache.org/downloads/kafka_2.12-2.5.0.tgz

解压后配置文件的修改



KAFKA的启动
首先确认zk集群已经启动,然后bin目录启动KAFKA
Sh kafka-server-start.sh …/config/server.properties

控制台打印这种日志,说明KAFKA启动成功

KAFKA启动前后在zookeeper上的结点

TOPIC的介绍

在逻辑上可以被认为是一个queue;
用于对消息进行分类;
每一条消息都必须对应一个主题,而每一个主题中可以存放多条消息;
每一个topic会包含一个或者多个分区,分区对应于磁盘上的一个或多个目录,目录个数取决于Partitions 的配置;

  • 创建topic
    sh kafka-topics.sh --create --zookeeper yangjjhost:2181 --replication-factor 1 --partitions 1 --topic music

    Topic创建完,
    在/usr/soft/kafka/kafka_2.11-1.0.0/logs(bin/server.properties文件中log.dirs配置)下多出了一个和topic有关的music目录

    yangjjhost:2181表示连接zk结点
    Partitions N:表示该topic有N个分区目录。若N % 集群结点个数 == 0,分区目录会均等创建,N % 集群结点个数 != 0,分区目录不均等创建。
    例如有yangjjhost和yangjjhost02两台KAFKA集群结点,执行命令sh kafka-topics.sh --create --zookeeper yangjjhost:2181 --replication-factor 1 --partitions 6 --topic gif


    replication-factor M:表示该topic创建M(M<=集群中结点个数)个副本,N个分区目录在M台KAFKA结点上分别有相同的一份。
  • 插看所有的topic
    sh kafka-topics.sh --list --zookeeper yangjjhost:2181
  • 删除topic
    sh kafka-topics.sh --delete --zookeeper yangjjhost:2181 --topic picture

produce的介绍

  • 消息放入jpg主题
    sh kafka-console-producer.sh --broker-list yangjjhost:9092 --topic jpg

consumer的介绍

  • 消费者从jpg主题拉取消息
    sh kafka-console-consumer.sh --zookeeper yangjjhost:2181 --topic jpg --from-beginning

Consumer group的介绍

用消费者组的方式消费消息,会从上次处理完的位置,继续处理下一条消息,保证同一消费者从Kafka中不会重复消费数据。

  • 创建消费者组
    sh kafka-console-consumer.sh --bootstrap-server yangjjhost:9092,yangjjhost02:9092 --topic jpg --new-consumer
  • 查看消费者所属消费组
    sh kafka-consumer-groups.sh --bootstrap-server yangjjhost:9092 --list --new-consumer

OFFSET机制

采用消费组模式消费消息,就开启了KAFKA的OFFSET机制,此时在/usr/soft/kafka/kafka_2.11-1.0.0/logs目录下,发现多了50个OFFSET文件


  • Consumer在从broker读取消息后,可以选择commit,该操作会在Kakfa中保存该Consumer在该Partition中读取的消息的offset
  • Consumer下一次再读该Partition时会从下一条开始读取
  • 通过这一特性可以保证同一消费者从Kafka中不会重复消费数据
  • 若要计算message在哪个offset文件,可以通过组名的hash值对50取余计算。例如:“console-consumer-2084”.hashCode() % 50
  • 计算得出,消费者读取消息的位置为offset-33

索引机制

  • 在/usr/soft/kafka/kafka_2.11-1.0.0/logs(config/server.properties文件logs.dir属性配置的路径)
    下有00000000000000000000.index 和 00000000000000000000.log目录(00000000000000000000为该数据文件中第一条消息的偏移量)。这是因为KAFKA不仅采用了OFFSET机制,还运用了索引机制

  • KAFKA将数据文件分段,每段放在一个单独的数据文件里,名称以该段最小偏移量命名,例如00000000000000000000.log。每个数据文件都会有一个与之对应的索引文件,例如00000000000000000000.index。00000000000000000000.log和00000000000000000000.index合起来称为一个Segment。

  • Index文件采用稀疏存储的方式,每隔一定字节的数据建立一条索引。这样避免了索引文件占用过多的空间,从而可以将索引文件保留在内存中。但缺点是没有建立索引的Message也不能一次定位到其在数据文件的位置,从而需要做一次二分法查找,以便快速定位到message的位置。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: