Kafka的安装
需要安装环境内有JDK环境,Zookeeper可以自己安装,也可以使用Kafka自带的集成zookeeper
解压并改名
安装文件放到Linux系统内后解压进行改名
tar -zxvf kafka_2.11-2.0.0.tgz
mv kafka_2.11-2.0.0 kafka211
配置文件server.properties
进入kafka目录内的 config文件内,进入server.properties文件
vi ./server.properties
从打开的文件内找到以下几条参数,并对应修改
broker.id=0
advertised.listeners=PLAINTEXT://192.168.146.222:9092
log.dirs=/root/software/kafka211/kafka-logs
zookeeper.connect=192.168.146.222:2181
并且在文件最后一行新增以下内容:
delete.topic.enable=true
如果是集群的话, broker.id为对应本机的id,zookeeper.connect为对应所有集群的全部ip地址加端口,用逗号分隔
配置环境变量
vi /etc/profile
添加kafka的环境变量如下:
export KAFKA_HOME=/root/software/kafka211
export PATH=$PATH:$KAFKA_HOME/bin
配置完成后记得一定要 source一下
启动
Kafka的启动分为两个步骤,需要先启动zookeeker,才能启动Kafka
启动Zookeeper
zkServer.sh start
启动成功会有 QuorumPeerMain 进程
可以输入命令查看启动状态
zkServer.sh status
因为我测试使用的是伪分布式,所以最后一行显示 Mode: standalone 为启动成功
如果是集群的话,则显示为一个leader 和多个follower
启动Kafka
后台启动
kafka-server-start.sh -daemon /root/software/kafka211/config/server.properties
另一种启动方式:
nohup kafka-server-start.sh /root/software/kafka211/config/server.properties >kafka.log 2>&1
出现对应的进程则为启动成功
常用命令汇总
关闭kafka
kafka-server-stop.sh 或者直接kill
查看kafka队列
kafka-topics.sh --zookeeper 192.168.146.222:2181 --list
删除kafka 队列
kafka-topics.sh --zookeeper 192.168.146.222:2181 --delete --topic 队列名
创建kafka队列 需要同时设置队列名 、分区数量和副本数量(副本数量必须小于等于集群机器数量)
kafka-topics.sh -zookeeper 192.168.146.222:2181 --create --topic mydemo --partitions 1 --replication-factor 1
查看主题详情
kafka-topics.sh --zookeeper 192.168.146.222:2181 --describe --topic mydemo
生产消息到 mydemo
kafka-console-producer.sh --topic mydemo --broker-list 192.168.146.222:9092
消费消息 从mydemo
kafka-console-consumer.sh --topic mydemo --bootstrap-server 192.168.146.222:9092 --from-beginning
查看队列消息数量
kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list 192.168.146.222:9092 --topic mydemo -time -1 --offsets 1
生产者模式和消费者模式
生产者模式即为输入
消费者模式即为输出
生产者模式进入代码:
kafka-console-producer.sh
--topic mydemo
--broker-list 192.168.146.222:9092
消费者模式进入代码:
kafka-console-consumer.sh
--topic mydemo
--bootstrap-server 192.168.146.222:9092
--from-beginning
同时打开两个连接,一个进入生产者模式,另一个进入消费者模式,那么当在生产者模式下输入数据时, 消费者模式下会同步显示出内容
总结
Kafka可以让合适的数据以合适的形式出现在合适的地方。它的做法是提供消息队列,让生产者往队列的末尾添加数据,让多个消费者从队列里面依次读取数据然后自行处理。
简单总结来说,Kafka对于日常的使用作用可以概况为两点:解耦和消峰