5.在 dataDir 中构建对应的 myid 以及对应的id文件
2.修改Kafka目录内的config目录内的server.properties文件
注意,zookeeper和kafka都需要具备jdk环境,需要至少三台虚拟机
一、zookeeper集群的搭建
1.修改主机名以及hosts映射文件
进入hosts文件,添加以下内容,zknode1(名字)可自由配置
2.下载zookeeper
官网地址:Apache ZooKeeper
3.解压tar包
mkdir /opt/zookeeper
mv apache-zookeeper-3.5.10-bin.tar.gz /opt/zookeeper
cd /opt/zookeeper
tar -zxvf apache-zookeeper-3.5.10-bin.tar.gz
4.修改配置文件
/opt/zookeeper/zookeeper/conf
mv zoo_sample.cfg zoo.cfg
在zoo.cfg文件的末尾添加以下内容
server.1=zknode1:2888:3888
server.2=zknode2:2888:3888
server.3=zknode3:2888:3888
我们可以把他看作是四个部分:
server.1 的 1 含义:配置的myid,相当于一个身份标示。(意思就是说第一台机器叫1号)。
zknode1 含义:主机地址,由于之前我们在hosts文件中做了配置,所以可以直接用自定义的“域名”替换。
第一个 2888:Leader与Follower通信的端口号。
第二个 3888:Leader服务器挂了,用于选举的通信端口号。
然后修改数据文件目录的存放位置(dataDir)
5.在 dataDir 中构建对应的 myid 以及对应的id文件
echo "1" > /opt/zookeeper/zk3.5.10/dataDir/myid
其他两台机器也是如此配置
6.启动zookeeper
./zkServer.sh start
其他两台机器也要启动,否则集群无法正常运行
运行成功后检查zookeeper状态
./zkServer.sh status
发现有两台机器为Mode: follower,另一台机器为Mode: leader,则证明集群搭建成功
二、kafka集群的搭建
1.kafka的下载与部署
官网地址:kafka
上传至虚拟机上后,创建目录存放kafka文件
mkdir /export/server
tar -zxvf kafka_2.12-2.4.1.tgz -C /export/server/ #解压
ln -s /export/server/kafka_2.12-2.4.1 /export/server/kafka #创建软连接
2.修改Kafka目录内的config目录内的server.properties
文件
cd /export/server/kafka/config
# 指定broker的id
broker.id=1
# 指定 kafka的绑定监听的地址
listeners=PLAINTEXT://zknode1:9092
# 指定Kafka数据的位置
log.dirs=/export/server/kafka/data
# 指定Zookeeper的三个节点
zookeeper.connect=zknode1:2181,zknode2:2181,zknode3:2181
其他两台机器同样按照上述操作,需要注意的点是broker.id=1, listeners=PLAINTEXT://zknode1:9092,要记得修改
3.启动kafka
启动之前要确保zookeeper已经成功启动了
nohup ./bin/kafka-server-start.sh ./config/server.properties &
三、kafka命令
启动后要进行测试确保kafka能够正常运行
./kafka-topics.sh --zookeeper zknode1:9092 --list | 查看主题 |
---|---|
./kafka-topics.sh --zookeeper zknode1:9092 --create --partitions 1 --topic mytopic | 创建主题 |
./kafka-topics.sh --zookeeper zknode1:2181 --describe --topic first | 查看某个topic的详情 |
./kafka-topics.sh --zookeeper zknode1:2181 --delete --topic test | 删除topic |
./kafka-topics.sh --zookeeper zknode1:2181 --alter --topic test --partitions 3 | 修改分区数 |
./kafka-console-producer.sh --broker-list zknode1:9092 --topic test | 生产者发送消息 |
./kafka-console-consumer.sh --bootstrap-server zknode1:9092 --topic test --from-beginning | 消费者读取信息 |
./kafka-consumer-groups.sh --bootstrap-server zknode1:9092 --list | 查看消费者列表 |
./kafka-consumer-groups.sh --bootstrap-server zknode1:9092 --describe | 查看消费者详情 |
./kafka-consumer-groups.sh --bootstrap-server zknode1:9092 --describe --group | 查看消费组详情 |
./kafka-consumer-groups.sh --bootstrap-server 10.1.1.2:9092 --describe --all-groups | 查看所有消费组详情 |
./kafka-consumer-groups.sh --bootstrap-server zknode1:9092 --describe --group --members | 查询消费者成员信息 |
问题
1.kafka启动后发现报一个提示内存不足的失败错误:Java HotSpot(TM) 64-Bit Server VM warning: INFO,或者就是启动后又挂掉。
#进入到kafka-server-start.sh中编辑:(也有可能配置不在这个文件中)
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" #修改为
export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"
也可以修改虚拟机的内存,以达到正常启动的目的
2.zookeeper服务连接超时导致端口起不来
zookeeper.connection.timeout.ms=40000#修改配置文件