CentOS7安装Kafka_2.12-3.3.1集群及使用

目录

前提条件

集群规划

安装步骤

下载kafka_2.12-3.3.1.tgz安装包

解压

同步至其他机器

配置环境变量(所有机器都执行)

配置kafka

启动zk集群(三台都执行)

启动kafka(三台都执行)

查看进程(三台都执行)

Kafka集群启动停止脚本

Kafka常用命令

启动集群

创建topic

查看topic

查看zk里的topic节点

kafka生产消息

kafka消费消息

删除topic


前提条件

三台CentOS7都安装好zookeeper-3.7.1,可参考 CentOS7安装ZooKeeper3.7.1集群

集群规划

node2node3node4
zkzkzk
kafkakafkakafka

安装步骤

下载kafka_2.12-3.3.1.tgz安装包

[hadoop@node2 installfile]$ wget https://archive.apache.org/dist/kafka/3.3.1/kafka_2.12-3.3.1.tgz

解压

[hadoop@node2 installfile]$ tar -zxvf kafka_2.12-3.3.1.tgz -C ~/soft

同步至其他机器

[hadoop@node2 installfile]$ cd ~/soft/
[hadoop@node2 soft]$ xsync kafka_2.12-3.3.1

配置环境变量(所有机器都执行)

$ sudo nano /etc/profile.d/my_env.sh

添加如下内容

#KAFKA_HOME
export KAFKA_HOME=/home/hadoop/soft/kafka_2.12-3.3.1
export PATH=$PATH:$KAFKA_HOME/bin

让环境变量生效

$ source /etc/profile

注意:node2、node3、node4都需要设置环境变量并让环境变量生效。

配置kafka

切换到kafka配置目录

[hadoop@node2 soft]$ cd $KAFKA_HOME/config

修改配置文件server.properties

[hadoop@node2 config]$ vim server.properties

找到相关配置项,配置为如下

broker.id=0
advertised.listeners=PLAINTEXT://node2:9092
log.dirs=/home/hadoop/soft/kafka_2.12-3.3.1/datas
zookeeper.connect=node2:2181,node3:2181,node4:2181/kafka

分发配置

[hadoop@node2 config]$ xsync server.properties 

修改node3配置

[hadoop@node3 ~]$ cd $KAFKA_HOME/config
[hadoop@node3 config]$ vim server.properties
broker.id=1
advertised.listeners=PLAINTEXT://node3:9092

修改node4配置

[hadoop@node4 ~]$ cd $KAFKA_HOME/config
[hadoop@node4 config]$ nano server.properties
broker.id=2
advertised.listeners=PLAINTEXT://node4:9092

启动zk集群(三台都执行)

[hadoop@node2 ~]$ zkServer.sh start
[hadoop@node3 ~]$ zkServer.sh start
[hadoop@node4 ~]$ zkServer.sh start

启动kafka(三台都执行)

[hadoop@node2 ~]$ kafka-server-start.sh -daemon /home/hadoop/soft/kafka_2.12-3.3.1/config/server.properties
[hadoop@node3 ~]$ kafka-server-start.sh -daemon /home/hadoop/soft/kafka_2.12-3.3.1/config/server.properties
[hadoop@node4 ~]$ kafka-server-start.sh -daemon /home/hadoop/soft/kafka_2.12-3.3.1/config/server.properties

查看进程(三台都执行)

[hadoop@node2 ~]$ jps
1623 QuorumPeerMain
2696 Kafka
2957 Jps
​
[hadoop@node3 ~]$ jps
2743 Jps
1609 QuorumPeerMain
2538 Kafka
​
[hadoop@node4 ~]$ jps
2739 Jps
2532 Kafka
1608 QuorumPeerMain
​

Kafka集群启动停止脚本

进入~/bin目录,创建kf.sh

[hadoop@node2 soft]$ cd ~/bin
[hadoop@node2 bin]$ vim kf.sh

kf.sh内容如下:

#! /bin/bash
case $1 in
"start"){
    for i in node2 node3 node4
    do
        echo " --------启动 $i Kafka-------"
        ssh $i "/home/hadoop/soft/kafka_2.12-3.3.1/bin/kafka-server-start.sh -daemon /home/hadoop/soft/kafka_2.12-3.3.1/config/server.properties"
    done
};;
"stop"){
    for i in node2 node3 node4
    do
        echo " --------停止 $i Kafka-------"
        ssh $i "/home/hadoop/soft/kafka_2.12-3.3.1/bin/kafka-server-stop.sh stop"
    done
};;
esac

添加权限

[hadoop@node2 bin]$ chmod u+x kf.sh 

测试kf集群启动脚本

[hadoop@node2 bin]$ kf.sh start
 --------启动 node2 Kafka-------
 --------启动 node3 Kafka-------
 --------启动 node4 Kafka-------
[hadoop@node2 bin]$ jps
2071 Jps
2041 Kafka

测试kf集群停止脚本

[hadoop@node2 bin]$ kf.sh stop
 --------停止 node2 Kafka-------
No kafka server to stop
 --------停止 node3 Kafka-------
No kafka server to stop
 --------停止 node4 Kafka-------
No kafka server to stop
[hadoop@node2 bin]$ jps
2121 Jps
​

分发脚本

为了方便其他机器也可以启动/停止kafka,分发脚本

[hadoop@node2 bin]$ xsync ~/bin

Kafka常用命令

启动集群

启动zk

[hadoop@node2 ~]$ zk.sh start

启动kafka

[hadoop@node2 ~]$ kf.sh start

jps查看进程

[hadoop@node2 ~]$ jps
3267 Kafka
2868 QuorumPeerMain
3354 Jps

创建topic

[hadoop@node2 ~]$ kafka-topics.sh --bootstrap-server node2:9092,node3:9092,node4:9092 --create --replication-factor 3 --partitions 1 --topic topic_log

查看topic

[hadoop@node2 ~]$ kafka-topics.sh --bootstrap-server node2:9092,node3:9092,node4:9092 --list
topic_log
​

查看zk里的topic节点

[hadoop@node3 ~]$ zkCli.sh 
​
[zk: localhost:2181(CONNECTED) 0] ls -R /kafka
/kafka
/kafka/admin
/kafka/brokers
/kafka/cluster
/kafka/config
/kafka/consumers
/kafka/controller
/kafka/controller_epoch
/kafka/feature
/kafka/isr_change_notification
/kafka/latest_producer_id_block
/kafka/log_dir_event_notification
/kafka/admin/delete_topics
/kafka/brokers/ids
/kafka/brokers/seqid
/kafka/brokers/topics
/kafka/brokers/ids/0
/kafka/brokers/ids/1
/kafka/brokers/ids/2
/kafka/brokers/topics/topic_log
/kafka/brokers/topics/topic_log/partitions
/kafka/brokers/topics/topic_log/partitions/0
/kafka/brokers/topics/topic_log/partitions/0/state
/kafka/cluster/id
/kafka/config/brokers
/kafka/config/changes
/kafka/config/clients
/kafka/config/ips
/kafka/config/topics
/kafka/config/users
/kafka/config/topics/topic_log
[zk: localhost:2181(CONNECTED) 1] 
​
​

kafka生产消息

[hadoop@node2 ~]$ kafka-console-producer.sh --broker-list node2:9092 --topic topic_log
>hello world
>hello ha
>

不关闭这个终端

kafka消费消息

打开一个新的node2窗口

[hadoop@node2 ~]$ kafka-console-consumer.sh --bootstrap-server node2:9092 --from-beginning --topic topic_log
hello world
hello ha

--from-beginning:会把主题中以往所有的数据都读取出来。根据业务场景选择是否增加该配置。

此时可以继续在生产者终端发送数据,发现消费者终端能继续接收数据。

分别在生产者终端和消费者终端按Ctrl+c退出并返回Linux命令行。

删除topic

[hadoop@node2 ~]$ kafka-topics.sh --bootstrap-server node2:9092,node3:9092,node4:9092 --delete --topic topic_log

再次查看topic

[hadoop@node2 bin]$ kafka-topics.sh --bootstrap-server node2:9092,node3:9092,node4:9092 --list
__consumer_offsets

完成!enjoy it!

### CentOS 7 环境下 Kafka 2.12-2.3.0 版本的离线安装方法 #### 准备工作 在开始之前,确保目标机器上已经具备以下条件: - 已经下载并准备好 Kafka 的二进制包 `kafka_2.12-2.3.0.tgz`。 - 安装好 Java 环境(建议 JDK 8 或更高版本),可以通过命令 `java -version` 来验证。 如果尚未准备 Kafka 软件包,则可以从 Apache Kafka 官方网站或其他可信源获取该压缩包,并将其传输到目标服务器上的指定路径。 #### 解压软件包 将已下载好的 Kafka 压缩包解压至合适位置。例如,在 `/opt/softwares/` 目录下执行如下操作: ```bash tar zxvf kafka_2.12-2.3.0.tgz -C /opt/softwares/ cd /opt/softwares/kafka_2.12-2.3.0/ ``` 完成上述步骤后赋予整个 Kafka 文件夹权限以便后续启动服务正常运行[^1]。 #### 修改配置文件 进入 Kafka 配置目录调整必要的参数设置以适应本地环境需求。重点在于更改每个节点中的 broker ID 和监听地址等内容来防止冲突发生以及满足网络规划的要求[^3]。 具体而言,编辑位于 `config/server.properties` 中的关键条目如下所示: - 设置唯一的 Broker Id (`broker.id`); - 如果多台主机组成集群则分别定义各自的 hostname/ip 地址作为 listeners 属性的一部分;另外还需确认 zookeeper.connect 是否指向正确的 ZooKeeper 实例列表。 #### 启动 ZooKeeper 及 Kafka Server 依次按照顺序先开启 ZooKeeper 再接着初始化 Kafka 自身的服务进程。以下是基于默认脚本的操作指南: ```bash # 切换到 bin 目录 cd /opt/softwares/kafka_2.12-2.3.0/bin/ # 启动 ZooKeeper ./zookeeper-server-start.sh -daemon ../config/zookeeper.properties # 启动 Kafka ./kafka-server-start.sh -daemon ../config/server.properties ``` 通过查看当前活动进程中是否存在对应的组件可以初步判断它们是否成功上线。利用工具如 `jps` 即可实现快速检测目的。 当不再需要这些后台程序继续运作时可通过相应的停止指令安全关闭资源占用情况下的实例对象。例如: ```bash # 关闭 Kafka ./kafka-server-stop.sh # 关闭 ZooKeeper ./zookeeper-server-stop.sh ``` 以上便是针对 CentOS 7 平台上进行 Kafka v2.12-2.3.0 版本离线部署的主要流程概述。 #### 注意事项 对于某些特定场景可能会遇到绑定端口失败等问题提示信息类似于:“ERROR [KafkaServer id=2] Fatal error during KafkaServer startup...Cannot assign requested address.” 此类现象通常是因为所选 IP 不可达或者被其他应用程序抢占所致因此务必核实实际可用状况后再做相应调整处理措施[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值