kafka安装及命令使用

2,005 阅读2分钟

kafka下载,下载地址
kafka依赖zookeeper,安装kafka集群前需要先安装好zookeeper集群。
安装示例
三台机器:node01、node02、node03
zookeeper集群以安装完毕,可以通过zkServer.sh status查看zk机器是否启动成功

zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/mashibing/zookeeper-3.6.1/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower

kafka配置文件修改
在kafka_2.12-2.1.0/config目录下,修改server.properties配置文件:

node01:
broker.id=0
listeners=PLAINTEXT://node01:9092
log.dirs=/var/kafka-logs
zookeeper.connect=node01:2181,node02:2181,node03:2181/kafka

node02:
broker.id=1
listeners=PLAINTEXT://node02:9092
log.dirs=/var/kafka-logs
zookeeper.connect=node01:2181,node02:2181,node03:2181/kafka

node03:
broker.id=2
listeners=PLAINTEXT://node03:9092
log.dirs=/var/kafka-logs
zookeeper.connect=node01:2181,node02:2181,node03:2181/kafka

在/etc/profile文件中把kafka的bin目录加入到path,方便命令使用。

export KAFKA_HOME=/opt/ningcg/kafka_2.12-2.1.0
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$KAFKA_HOME/bin

通过kafka-server-start.sh server.properties命令启动三台机器上的kafka
启动完成后,通过ls /kafka 命令可以看到kafka在zk上存储的信息

ls /kafka
[admin, brokers, cluster, config, consumers, controller, controller_epoch, isr_change_notification, latest_producer_id_block, log_dir_event_notification]

ls /kafka/brokers/ids
[0, 1, 2]

kafka相关命令:

创建topic:
kafka-topics.sh --zookeeper node01:2181,node02:2181,node03:2181/kafka --create --topic test007 --partitions 2 --replication-factor 2

查询topic:
kafka-topics.sh --zookeeper node01:2181,node02:2181,node03:2181/kafka --list

查看topic描述信息:
kafka-topics.sh --zookeeper node01:2181,node02:2181,node03:2181/kafka --describe --topic test007
Topic:test007	PartitionCount:2	ReplicationFactor:2	Configs:
	Topic: test007	Partition: 0	Leader: 2	Replicas: 2,0	Isr: 2,0
	Topic: test007	Partition: 1	Leader: 0	Replicas: 0,1	Isr: 0,1
        
消费消息:
kafka-console-consumer.sh --bootstrap-server node01:9092,node02:9092,node02:9092 --topic test007 --group ningcg

生产消息:
kafka-console-producer.sh --broker-list node03:9092 --topic test007

查看所有的消费组:
kafka-consumer-groups.sh --bootstrap-server node01:9092 --list

消费组信息:
kafka-consumer-groups.sh --bootstrap-server node01:9092 --describe --group test

消费消息可以指定不同的消费组,不同的消费组之间消费消息互不影响。

image.png 同一消费组之间,同一条消息只会被消费组内的一个成员消费。

image.png

消费组信息:

image.png

消息最终是落到topic对应的分区上的,如果消息没有顺序上的约束的话,可以水平扩展(动态增加partition)。如果消息有不同的分类,且需要同类的消息有序,可以设定消息的key(K、V类消息),kafka会把相同key类型的消息打到同一分区中。