文章目录

  • 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版本

kafka_exporter是安装在kafka机器上吗_大数据

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

kafka_exporter是安装在kafka机器上吗_hadoop_02

kafka_exporter是安装在kafka机器上吗_学习_03

kafka_exporter是安装在kafka机器上吗_kafka_04

(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

kafka_exporter是安装在kafka机器上吗_kafka_05

使环境变量生效:

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

kafka_exporter是安装在kafka机器上吗_学习_06

2.2 Kafka 命令行操作

(1)查看当前服务器中的所有 topic

bin/kafka-topics.sh --zookeeper hadoop102:2181 --list

kafka_exporter是安装在kafka机器上吗_学习_07

(2)创建 topic

bin/kafka-topics.sh --zookeeper hadoop102:2181 --create --replication-factor 3 --partitions 1 --topic topic_test

选项说明:

  • –topic 定义 topic 名
  • –replication-factor 定义副本数
  • –partitions 定义分区数

kafka_exporter是安装在kafka机器上吗_hadoop_08

(3)删除 topic

bin/kafka-topics.sh --zookeeper hadoop102:2181 --delete --topic topic_test

kafka_exporter是安装在kafka机器上吗_kafka_09

**注意:需要 server.properties 中设置 delete.topic.enable=true 否则只是标记删除。**这点在前面已经设置过了。

(4)发送消息

bin/kafka-console-producer.sh --broker-list hadoop102:9092 --topic first

kafka_exporter是安装在kafka机器上吗_大数据_10

(5)消费消息

bin/kafka-console-consumer.sh --zookeeper hadoop102:2181 --topic first

kafka_exporter是安装在kafka机器上吗_big data_11

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