Kafka 基本使用

1、安装部署

1.1、集群规划

hadoop103
hadoop104
hadoop105
zk
zk
zk
kafka
kafka
kafka

 1.2、安装&配置

下载地址 https://kafka.apache.org/downloads.html

解压安装包,重命名安装路径

[hui@hadoop103 software]$ tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module/
[hui@hadoop103 module]$ mv kafka_2.12-3.0.0 kafka

kafka 基础配置 粗体部分是需要特别注意的地方

[hui@hadoop103 config]$ vim server.properties
#broker的全局唯一编号,不能重复,只能是数字。
broker.id=0
#处理网络请求的线程数量
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运行日志(数据)存放的路径,路径不需要提前创建,kafka自动帮你创建,可以配置多个磁盘路径,路径与路径之间可以用","分隔
log.dirs=/opt/module/kafka/datas
#topic在当前broker上的分区个数
num.partitions=1
#用来恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1
#每个topic创建时的副本数,默认时1个副本
offsets.topic.replication.factor=1
#segment文件保留的最长时间,超时将被删除
log.retention.hours=168
#每个segment文件的大小,默认最大
1Glog.segment.bytes=1073741824
#检查过期数据的时间,默认5分钟检查一次是否数据过期
log.retention.check.interval.ms=300000
#配置连接Zookeeper集群地址(在zk根目录下创建/kafka,方便管理)
zookeeper.connect=hadoop103:2181,hadoop104:2181,hadoop105:2181/kafka

 分发安装文件

[hui@hadoop103 module]$ sxync.sh kafka/

注意分发完后记得修改104 105 上的 broker.id 集群内不能重复

[hui@hadoop104 ~]$ less /opt/module/kafka/config/server.properties 
broker.id=1
[hui@hadoop105 ~]$ less /opt/module/kafka/config/server.properties 
broker.id=2

 环境变量配置

[hui@hadoop103 ~]$ vim /etc/profile
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

分发环境变量& source

[hui@hadoop103 ~]$ /home/hui/bin/sxync.sh /etc/profile
[hui@hadoop103 module]$ source /etc/profile
[hui@hadoop104 module]$ source /etc/profile
[hui@hadoop105 module]$ source /etc/profile

1.3、群起脚本

zookeeper 群起

#!/bin/sh

case $1 in
"start"){

  for i in hui@hadoop103 hui@hadoop104 hui@hadoop105
  do
  echo ------------------- $i  --------------
         ssh $i 'source /etc/profile && /opt/module/zookeeper-3.4.10/bin/zkServer.sh start'
  done
};;

"stop"){

for i in hui@hadoop103 hui@hadoop104 hui@hadoop105
        do
    echo ------------------- $i  --------------
        ssh $i 'source /etc/profile && /opt/module/zookeeper-3.4.10/bin/zkServer.sh stop'
        done
};;

esac

kafka 群起

[hui@hadoop103 bin]$ cat kk.sh 
#!/bin/sh
case $1 in
"start")
        for i in hadoop103 hadoop104 hadoop105
        do
        echo "---- start $i kafka ---"
        ssh $i "source /etc/profile && /opt/module/kafka/bin/kafka-server-start.sh  -daemon /opt/module/kafka/config/server.properties "
        done
;;
"stop")
        for i in hadoop103 hadoop104 hadoop105
        do
        echo "---- stop $i kafka ---"
        ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh  "
        done
;;
esac

注意:停止Kafka集群时,一定要等Kafka所有节点进程全部停止后再停止Zookeeper集群。因为Zookeeper集群当中记录着Kafka集群相关信息,Zookeeper集群一旦先停止,Kafka集群就没有办法再获取停止进程的信息,只能手动杀死Kafka进程了。

2、Kafka 命令行操作

kafka 基础架构

 2.1、topic 命令

查看操作主题命令参数

[hui@hadoop103 kafka]$ bin/kafka-topics.sh 

 

 应用举例

 查看多有topic 

[hui@hadoop103 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop103:9092 --list

创建topic

[hui@hadoop103 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop103:9092 --create --topic first --partitions 1 --replication-factor 1
Created topic first 

 选项说明

  1. --topic first 创建 topci 名称是 first
  2. --partitions 设置分区数
  3. --replication-factor 设置副本数

查看主题详情

[hui@hadoop103 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop103:9092  --describe --topic first
Topic: first    TopicId: iKYakcuBTaO4mPK0RIF7TQ PartitionCount: 1       ReplicationFactor: 1    Configs: segment.bytes=1073741824
        Topic: first    Partition: 0    Leader: 2       Replicas: 2     Isr: 2

修改分区数再次查看详情(分区数只能增加不能减少)

[hui@hadoop103 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop103:9092 --alter --topic first --partitions 2
[hui@hadoop103 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop103:9092  --describe --topic first
Topic: first    TopicId: iKYakcuBTaO4mPK0RIF7TQ PartitionCount: 2       ReplicationFactor: 1    Configs: segment.bytes=1073741824
        Topic: first    Partition: 0    Leader: 2       Replicas: 2     Isr: 2
        Topic: first    Partition: 1    Leader: 0       Replicas: 0     Isr: 0

删除主题

[hui@hadoop103 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop103:9092 --delete --topic first
[hui@hadoop103 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop103:9092 --list

 2.2、produce 命令

produce 命令

[hui@hadoop103 kafka]$ bin/kafka-console-producer.sh 

 发送消息测试

[hui@hadoop103 kafka]$ bin/kafka-console-producer.sh --bootstrap-server hadoop103:9092 --topic first

2.3、消费者命令

消费者命令

[hui@hadoop103 kafka]$ bin/kafka-console-consumer.sh

 测试

首先启动消费者进程

[hui@hadoop103 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop103:9092 --topic first

发送消息

[hui@hadoop103 kafka]$ bin/kafka-console-producer.sh --bootstrap-server hadoop103:9092 --topic first
>hello word
>hello kk
>hello wdh01

消费到的消息

[hui@hadoop103 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop103:9092 --topic first
hello word
hello kk
hello wdh01

 

posted @ 2022-03-28 14:37  晓枫的春天  阅读(96)  评论(0编辑  收藏  举报