文章目录
- 2. Kafka安装部署及命令行操作
- 2.1 安装部署
- 2.1.1 集群规划
- 2.1.2 jar 包下载
- 2.1.3 集群部署
- 2.2 Kafka 命令行操作
2. Kafka安装部署及命令行操作
2.1 安装部署
2.1.1 集群规划
前提条件:准备hadoop102、hadoop103和hadoop104三台服务器或者虚拟机,并分别提前安装好zookeeper。zookeeper安装的传送门:
2.1.2 jar 包下载
https://kafka.apache.org/downloads.html
选择0.11.0版本
2.1.3 集群部署
将下载的压缩包上传至hadoop102主机的/opt/software路径下。
(1)解压安装包
tar -zxvf kafka_2.11-0.11.0.0.tgz -C /opt/module/
(2)修改解压后的文件名称为kafka
mv kafka_2.11-0.11.0.0/ kafka
(3)在/opt/module/kafka 目录下创建 logs 文件夹
mkdir logs
(4)进入config目录修改配置文件
vi server.properties
#broker 的全局唯一编号,不能重复
broker.id=2
#删除 topic 功能使能
delete.topic.enable=true
#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘 IO 的现成数量
num.io.threads=8
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#kafka 运行日志存放的路径
log.dirs=/opt/module/kafka/logs
#topic 在当前 broker 上的分区个数
num.partitions=1
#用来恢复和清理 data 下数据的线程数量
num.recovery.threads.per.data.dir=1
#segment 文件保留的最长时间,超时将被删除
log.retention.hours=168
#配置连接 Zookeeper 集群地址
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181
(5)配置环境变量
我的环境变量都放在/etc/profile.d/my_env.sh下,也有习惯放在/etc/profile中的,这个根据习惯修改。
sudo vim /etc/profile.d/my_env.sh
添加下列环境变量:
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
使环境变量生效:
source /etc/profile
(6)在/opt/module目录下分发安装包
前提是配置了xsync,传送门:
xsync kafka/
分发之后在其他两台机器上也要配置kafka的环境变量并使其生效。
(7)分别在 hadoop103 和 hadoop104 上修改配置文件/opt/module/kafka/config/server.properties 中的 broker.id=3、broker.id=4。broker.id机器的唯一标识,不能重复。
(8)启动集群命令(三台机器都要执行)
bin/kafka-server-start.sh -daemon config/server.properties
(9)关闭集群命令(三台机器都要执行)
bin/kafka-server-stop.sh stop
(10)kafka群起和停止脚本
#! /bin/bash
case $1 in
"start"){
for i in hadoop102 hadoop103 hadoop104
do
echo " --------启动 $i Kafka-------"
ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
done
};;
"stop"){
for i in hadoop102 hadoop103 hadoop104
do
echo " --------停止 $i Kafka-------"
ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh "
done
};;
esac
2.2 Kafka 命令行操作
(1)查看当前服务器中的所有 topic
bin/kafka-topics.sh --zookeeper hadoop102:2181 --list
(2)创建 topic
bin/kafka-topics.sh --zookeeper hadoop102:2181 --create --replication-factor 3 --partitions 1 --topic topic_test
选项说明:
- –topic 定义 topic 名
- –replication-factor 定义副本数
- –partitions 定义分区数
(3)删除 topic
bin/kafka-topics.sh --zookeeper hadoop102:2181 --delete --topic topic_test
**注意:需要 server.properties 中设置 delete.topic.enable=true 否则只是标记删除。**这点在前面已经设置过了。
(4)发送消息
bin/kafka-console-producer.sh --broker-list hadoop102:9092 --topic first
(5)消费消息
bin/kafka-console-consumer.sh --zookeeper hadoop102:2181 --topic first
bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic first
bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic first
–from-beginning:会把主题中以往所有的数据都读取出来。
(6)查看某个 Topic 的详情
bin/kafka-topics.sh --zookeeper hadoop102:2181 --describe --topic first
(7)修改分区数
bin/kafka-topics.sh --zookeeper hadoop102:2181 --alter --topic first --partitions 6