安装环境
kafka的运行需要jdk、kafka的安装包,首先需要下载对应的安装包,此处就以jdk1.8为例
jdk环境安装
- 解压jdk的安装包
tar zxvf jdk-8u281-linux-x64.tar.gz
- 修改环境变量
sudo vim ~/.bashrc
在文件的末尾加上以下内容
export JAVA_HOME=/opt/jdk1.8.0_281 ## 这里要注意目录要换成自己解压的jdk 目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
使环境变量马上生效
source ~/.bashrc
- 验证jdk是否安装成功
java -version
kafka环境安装
1.解压kafka的安装包
tar zxvf kafka-
- kafka需要使用到 Zookeeper,因此需要先启动Zookeeper的服务,进入kafka的安装目录下:
bin/zookeeper-server-start.sh config/zookeeper.properties
- 在启动了Zookeeper之后,可以运行以下命令启动kafka
bin/kafka-server-start.sh config/server.properties
停止kafka运行命令如下:
bin/kafka-server-stop.sh config/server.properties
kafka常见命令
- 创建一个名字为test的主题,并且只使用单个分区
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
相关可选参数
参数 | 描述 | 例子 |
---|---|---|
--bootstrap-server 指定kafka服务 | 指定连接到的kafka服务; 如果有这个参数,则 --zookeeper可以不需要 | --bootstrap-server localhost:9092 |
--zookeeper | 弃用, 通过zk的连接方式连接到kafka集群; | --zookeeper localhost:2181 或者localhost:2181/kafka |
--replication-factor | 副本数量,注意不能大于broker数量;如果不提供,则会用集群中默认配置 | --replication-factor 3 |
--partitions | 分区数量,当创建或者修改topic的时候,用这个来指定分区数;如果创建的时候没有提供参数,则用集群中默认值; 注意如果是修改的时候,分区比之前小会有问题 | --partitions 3 |
--replica-assignment | 副本分区分配方式;创建topic的时候可以自己指定副本分配情况; | --replica-assignment BrokerId-0:BrokerId-1:BrokerId-2,BrokerId-1:BrokerId-2:BrokerId-0,BrokerId-2:BrokerId-1:BrokerId-0 ; 这个意思是有三个分区和三个副本,对应分配的Broker; 逗号隔开标识分区;冒号隔开表示副本 |
--config <String: name=value> | 用来设置topic级别的配置以覆盖默认配置;只在--create 和--bootstrap-server 同时使用时候生效; 可以配置的参数列表请看文末附件 | 例如覆盖两个配置 --config retention.bytes=123455 --config retention.ms=600001 |
--command-config <String: command 文件路径> | 用来配置客户端Admin Client启动配置,只在--bootstrap-server 同时使用时候生效; | 例如:设置请求的超时时间 --command-config config/producer.proterties ; 然后在文件中配置 request.timeout.ms=300000 |
- 查看主题命令
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
查询单个主题:
bin/kafka-topics.sh --topic test --bootstrap-server localhost:9092 --describe --exclude-internal
批量查询Topic(正则表达式匹配,查询所有Topic)
bin/kafka-topics.sh --topic ".*?" --bootstrap-server localhost:9092 --describe --exclude-internal
- 测试topic生产和消费消息
发送消息:
bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
消费消息:
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
- 动态调整kafka某个topic下的分区partitions数量
在Kafka消费组中,要求消费者组中的消费者实例个数不能超过分区的数量,否则会出现部分消费者闲置的情况发生。所以当我们增加消费者数量时,对应可能需要调整分区数量
bin/kafka-topics.sh --alter --bootstrap-server localhost:9092 --topic Test-22 --partitions 3
上述命令将分区数量调整为3。注意:分区数量只能增加不能减少
5.查看topic详情命令
bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic test2