一、环境准备
首先JDK要在1.8及以上;然后安装对应版本的zookeeper。
本文以kafka2.7.2
为例,关于如何找到kafka对应的zookeeper版本,参考我的这篇文章:如何确定kafka与zookeeper版本的对应关系。
1、安装Zookeeper3.5.9
Zookeeper下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz,
更多版本查看:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/。
1)解压zookeeper压缩包
tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz
2)复制并修改配置文件
# 进入到./zookeeper01/conf目录下
cd ./apache-zookeeper-3.5.9-bin/conf
# 复制配置文件
cp zoo_sample.cfg zoo.cfg
# 修改配置文件
vi zoo.cfg
配置文件内容如下:
#服务器对应端口号
clientPort=2181
# 数据快照文件所在路径,需要先创建
dataDir=/Users/zhouxin/software/apache-zookeeper-3.5.9-bin/data
3)创建数据快照文件夹
在上一步dataDir指定的目录下,创建相应目录
cd ../
# 创建数据快照文件夹
mkdir data
4)启动zookeeper01服务
cd ../bin
./zkServer.sh start
启动成功界面如下:
5)查看服务状态
./zkServer.sh status
Zookeeper实例的状态如下:
二、下载并安装Kafka2.7.2
官网下载路径:https://kafka.apache.org/downloads;
1)下载在kafka_2.12-2.7.2;
2)解压Kafka压缩包:
tar -zxvf kafka_2.12-2.7.2.tgz
3)修改KafkaServer配置文件:
1>> 进入kafka解压目录,找config文件夹下的server.properties文件:
cd kafka_2.12-2.7.2/config# 修改配置文件
vi server.properties
修改点如下:
# 设置kafka消息存储目录
log.dirs=/Users/zhouxin/software/kafka_2.12-2.7.2/data/kafka-logs
3)修改zookeeper配置文件:
找config文件夹下的zookeeper.properties;将其dataDir=/tmp/zookeeper
修改为和我们安装Zookeeper配置的存储路径:/Users/zhouxin/software/apache-zookeeper-3.5.9-bin/data
;
# 修改配置文件
vi zookeeper.properties
修改点如下:
dataDir=/Users/zhouxin/software/apache-zookeeper-3.5.9-bin/data
4)启动Kafka服务
1> Linux和Mac启动方式(前台启动):
cd ../bin
./kafka-server-start.sh ../config/server.properties
2> Window启动方式(前台启动):
cd ../bin/windows
./kafka-server-start.bat ../../config/server.properties
启动成功界面如下:
前台启动方式我们是不能关闭terminal的,我不想开着terminal,怎么办呢?后台启动撒!
1/ 后台启动
3> Linux和Mac启动方式(后台启动):
cd ../bin
./kafka-server-start.sh -daemon ../config/server.properties
windows上也一样,启动命令中加个-daemon
即可;
三、常用命令
1、创建topic
创建一个名为saint-test-topic、副本数为1的topic
cd kafka_2.12-2.7.2/bin# 创建一个名为saint-test-topic、副本数为1的topic
./kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic saint-test-topic
创建topic成功界面如下:
2、查看topic列表
./kafka-topics.sh --list --zookeeper localhost:2181
我只创建了一个topic,所以topic列表也就一个:
3、生产者生产消息到指定topic
1>> 开启Producer:
./kafka-console-producer.sh --broker-list localhost:9092 --topic saint-test-topic
开启完Producer之后:
2>> 发送消息:
4、消费者消息指定topic的消息
这里的消费规则为:
- 当前消费者作为消费组
consumer-group-1
的一员从saint-test-topic
主题中从offset头部开始消费消息:
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic saint-test-topic --group consumer-group-1 --from-beginning
消费到消息之后,消费者处于持续接收消息的状态;
5、查看kafka的broker集群配置:
1> 查看broker所有节点的配置:
./kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-default --describe
2> 查看某个broker节点(例如:0)的配置:
./kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-name 0 --describe