kafka集群搭建与使用
1. kafka下载和依赖
-
官网下载地址:[KAFKA]: http://kafka.apache.org/downloads.html
-
下载kafka_2.11-0.8.2.2.tgz 依赖编译环境JDK7+
2.解压和配置
-
tar -zxvf kafka_2.11-0.8.2.2.tgz
-
cd kafka_2.11-0.8.2.2
-
kafka目录结构和说明
-
bin 操作kafka的可执行脚本,也包含windows下bat脚本
-
config 配置文件所在目录
-
libs 依赖库目录
-
logs 服务日志数据目录
-
-
配置zookeeper(假设已经搭建了zookeeper服务)
-
cd kafka_2.11-0.8.2.2
-
vim config/server.properties
- 修改属性zookeeper.connect=ip1:2181,ip2:2181
- 说明:默认元数据信息存储在zk的consumer目录下,如果需要指定可zookeeper.connect=ip1:2181,ip2:2181/kafka
-
-
kafka 主要的四个配置:broker.id、log.dir、zookeeper.connect、port
-
broker.id 节点唯一ID标识,设置为自然数(从0开始递增即可)
-
log.dir log数据路径指定 默认路径:/tmp/kafka-logs
- 可指定磁盘 如:/opt/kafka/kafka-logs
-
zookeeper.connect 所依赖的zk服务连接地址
-
port kafka server端口,默认9092
-
log.retention.hours=168 说明kafka上元数据的保存时间 可以看做是TTL
-
其他参数可根据业务需求自行调试优化,可参考[Kafka Doc]:http://kafka.apache.org/documentation.html 说明
-
-
节点分发,组建kafka集群服务
- scp kafka_2.11-0.8.2.2 目录到其他节点
3.kafka server服务启动与停止
-
启动服务:
bin/kafka-server-start.sh config/server.properties &
或
bin/kafka-server-start.sh -daemon config/server.properties
-
停止服务:
bin/kafka-server-stop.sh
或ps aux | grep kafka | awk '{print $2}' | xargs kill -9
4.kafka服务使用说明
-
创建topic
-
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 5 --topic test
- 说明: 创建了一个topic名字为:test replication为:2 partitions为:5
-
-
验证topic是否创建成功
-
bin/kafka-topics.sh --list --zookeeper localhost:2181
- 说明:列出集群中已经创建的所以topic
-
-
查看topic属性情况:
-
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
- 说明: 可查看topic 的分区和副本信息
-
-
命令行生产数据测试:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
-
命令行消费数据测试:
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic test
-
修改topic参数:
bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic test --partitions 8
说明:增加 topic test的分区数量,kafka目前只接受分区数量增加,不支持减少,请合理慎重设置。
-
删除topic
./kafka-topics.sh --zookeeper localhost:2181 --delete --topic test
- 说明:topic 删除功能启动 需要server.properties 中设置:
delete.topic.enable=true 重启kafka才会生效。 - 此时并没有完全删除只是把相应topic的状态改为marked for deletion
- 永久删除某个topic及数据:
删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录
删除zookeeper "/brokers/topics/"目录下相关topic节点
cd zookeeper安装目录
bin/zkCli.sh
ls /brokers/topics/test
rmr /brokers/topics/test
rmr /admin/delete_topics/test
-------------- 更多高级玩法和扩展请看后续分解 -----------------