kafka实战

kafka实战

下载

官网下载

安装

1. 解压安装包

tar -zxvf kafkaXXXX

broker.id=0 --在集群内唯一
num.partitions = --每个主题的分区数量,默认是1,可以增加分区的数量但不能减少分区的数量
default.replication.factor=2 --消息备份副本数,默认为1,即不进行备份
listeners --socket的监听地址
log.dir = kakfa2.0.0/kafka-log --kafka消息数据的存储位置
zookeeper = centos01:2181,centos02:2181 --zookeeper连接
3. 发送安装文件到其他节点
scp -r /opt/modules/kafka-2.0.0 hadoop@centos02:/opt/modules/ # --记得变更broker.id

启动

4. 启动zk集群
在每台机上执行zkServer.sh start
5. 启停kfka集群
在每台机上执行 
bin/kafka-server-start.sh -daemon config/server.properties
(bin/kafka-server-start.sh  config/server.properties &
)
关闭 :bin/kafka-server-stop.sh stop

使用

topic

创建topic

bin/kafka-topics.sh --create --zookeeper centos01:2181,centos02:2181,centos03:2181 --replication-factor 2 --partitions 2 --topic topictest

查看topic
bin/kafka-topics.sh --list --zookeeper centos01:2181
--查看主题的详情
bin/kafka-topics.sh --describe --zookeeper centos01:2181 --topic topictest

    Topic:topictest	PartitionCount:2	ReplicationFactor:2	Configs:
	Topic: topictest	Partition: 0	Leader: 0	Replicas: 0,1	Isr: 0,1
	Topic: topictest	Partition: 1	Leader: 1	Replicas: 1,2	Isr: 1,2
topic :主题名称
PartitionCount:分区数量
ReplicationFactor:副本数量
Partition:分区编号
Leader:领导者副本所在的broker,这里指安装kafka集群时所设置的broker.id
Replicas:分区副本所在的broker,指安装kafka集群时所设置的broker.id
Isr:ISR列表中的副本所在的broker(包括领导者副本),同样指安装kafka集群时所设置的broker.id
删除topic
彻底删除Kafka中的topic

1、删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录

### 
2、Kafka 删除topic的命令是:

 
 ./bin/kafka-topics  --delete --zookeeper 【zookeeper server】  --topic 【topic name】

 如果kafaka启动时加载的配置文件中server.properties没有配置delete.topic.enable=true,那么此时的删除并不是真正的删除,而是把topic标记为:marked for deletion

 你可以通过命令:./bin/kafka-topics --zookeeper 【zookeeper server】 --list 来查看所有topic
 
 此时你若想真正删除它,可以如下操作:

 (1)登录zookeeper客户端:命令:./bin/zookeeper-client

 (2)找到topic所在的目录:ls /brokers/topics

 (3)找到要删除的topic,执行命令:rmr /brokers/topics/【topic name】即可,此时topic被彻底删除。
 
 
另外被标记为marked for deletion的topic你可以在zookeeper客户端中通过命令获得:ls /admin/delete_topics/【topic name】,

如果你删除了此处的topic,那么marked for deletion 标记消失

zookeeper 的config中也有有关topic的信息: ls /config/topics/【topic name】暂时不知道有什么用
​```
总结:

彻底删除topic:

 1、删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录

 2、如果配置了delete.topic.enable=true直接通过命令删除,如果命令删除不掉,直接通过zookeeper-client 删除掉broker下的topic即可。

producer

创建生产者
bin/kafka-console-producer.sh --broker-list centos01:9092,centos02:9092,centos03:9092 --topic topictest

consumer

创建消费者
bin/kafka-console-consumer.sh --bootstrap-server centos01:9092,centos02:9092,centos03:9092 --topic topictest

bin/kafka-console-consumer.sh --bootstrap-server centos01:9092,centos02:9092,centos03:9092 --topic test5
查看消费者
kafka-consumer-groups.sh  --bootstrap-server centos01:9092 --list
比如:
[hadoop@centos01 bin]$ kafka-consumer-groups.sh  --bootstrap-server centos01:9092 --list
console-consumer-81436
test
console-consumer-42456
reportMonitorZYXCXJoin
reportMonitorRule
reportMonitorZYXCXRule
reportMonitorZYXCXbase

查看消费者组的消费情况
kafka-consumer-groups.sh  --bootstrap-server centos01:9092 --group  reportMonitorZYXCXbase --describe

比如:
[hadoop@centos01 bin]$ kafka-consumer-groups.sh  --bootstrap-server centos01:9092 --group reportMonitorZYXCXbase --describe
Consumer group 'reportMonitorZYXCXbase' has no active members.

TOPIC                   PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID     HOST            CLIENT-ID
bg_worklog_entry_result 1          10165           10165           0               -               -               -
bg_worklog_entry_result 0          10165           10165           0               -               -               -
[hadoop@centos01 bin]$ 

注意

kafka规定,同一个分区内的消息只能被同一个消费者组中的一个消费者消费。而本例中的两个消费者正是同属于一个消费者组,且主题topictest有两个分区,所以需要两个消费者才能各自按序消费。

  1. 同一个消费者组内,消费者数量不能多于分区数量,否则多出的消费者不能消费消息。
  2. 如果需要全局都按顺序消费消息,可以通过给一个主题设置一个分区的方法实现,但这也意味着一个消费者组只能有一个消费者。或者指定需要按顺序的数据指定同一个key

kafka术语

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值