Loading... # 消息中间件之Apache Kafka(二) ## 单机环境搭建 ### 准备工作 - JDK1.8+,配置JAVA_HOME - 配置主机名和IP映射 1. `vi /etc/hostname`,修改主机名,然后重启服务器 2. `v1 /etc/hosts`,添加主机名与IP的映射 - 关闭防火墙,也可以放行相关端口 - 安装并启动zookeeper,见[zookeeper搭建、PAXOS、ZAB及基本API](https://www.princelei.club/archives/293.html) ### 下载Kafka 下载地址 > http://kafka.apache.org/downloads ### 配置 下载之后解压,然后进入config目录,修改server.properties 修改如下内容 ``` listeners=PLAINTEXT://kafka01:9092 # 修改为对应的主机名 log.dirs=/var/kafka/kafka-logs # 日志文件保存地址 zookeeper.connect=kafka01:2181 # zookeeper 地址 ``` ### 启动Kafka 进入bin目录下,执行 ``` ./kafka-server-start.sh -daemon ../config/server.properties ``` daemon表示后台执行。启动之后使用JPS指令,查看是否有Kafka进程 ### 停止Kafka ``` ./kafka-server-stop.sh ``` ### 创建Topic ``` ./bin/kafka-topics.sh --bootstrap-server kafka01:9092 --create --topic topic01 --partitions 3 --replication-factor 1 ``` 创建一个名称为topic01的Topic,有3个分区,副本因子是1,表示数据只保存一份,注意,由于是单机版,没有其它服务器,副本因子只能是1,大于1会报错。 ### 查看Topic列表 ``` ./bin/kafka-topics.sh --bootstrap-server kafka01:9092 --list ``` ### Topic详情信息 ``` ./bin/kafka-topics.sh --bootstrap-server kafka01:9092 --describe --topic topic01 ``` ### 修改Topic ``` ./bin/kafka-topics.sh --bootstrap-server kafka01:9092 --alter --topic topic01 --partitions 2 ``` 注意分区数只能增加,不能减少。 ### 删除Topic ``` ./bin/kafka-topics.sh --bootstrap-server kafka01:9092 --delete --topic topic01 ``` ### 订阅 ``` ./bin/kafka-console-consumer.sh --bootstrap-server kafka01:9092 --topic topic01 --group group1 --property print.key=true --property print.value=true --property key.separator=, ``` 创建一个消费者,分组是group1,订阅topic01,`property print.key=true`表示打印key,`property print.value=true`打印value,`property key.separator=,`key与value之间用' `,` '分隔。 ### 生产 ``` ./bin/kafka-console-producer.sh --broker-list kafka01:9092 --topic topic01 ``` ### 查看消费组列表 ``` ./bin/kafka-consumer-groups.sh --bootstrap-server kafka01:9092 --list ``` ### 查看消费组的详情 ``` ./bin/kafka-consumer-groups.sh --bootstrap-server kafka01:9092 --describe --group group1 ``` ## 集群搭建 准备3台虚拟机分别配置hosts,添加: - 192.168.50.24 kafka01 - 192.168.50.25 kafka02 - 192.168.50.26 kafka03 ### 时间校准 在三台虚拟机中执行 ``` ntpdate cn.pool.ntp.org ``` ### 配置 集群配置与单机配置基本相同,不同的是zookeeper变成了集群。 ``` zookeeper.connect=kafka01:2181,kafka02:2181,kafka03:2181 ``` 然后每台需要配置不同的broker.id ``` # kafka01 broker.id=0 listeners=PLAINTEXT://kafka01:9092 # kafka02 broker.id=1 listeners=PLAINTEXT://kafka02:9092 # kafka03 broker.id=2 listeners=PLAINTEXT://kafka03:9092 ``` 然后在三台虚拟机分别启动zookeeper与Kafka。 操作方式与上面的也基本相同,不同的是指定bootstrap-server与borker-list时,指定多个,例如: ### 创建Topic ``` ./bin/kafka-topics.sh --bootstrap-server kafka01:9092,kafka02:9092,kafka03:9092 --create --topic topic01 --partitions 3 --replication-factor 1 ``` ### 生产 ``` ./bin/kafka-console-producer.sh --broker-list kafka01:9092,kafka02:9092,kafka03:9092 --topic topic01 ``` Last modification:July 8th, 2020 at 05:38 pm © 允许规范转载