CentOS 7 环境下的KAFKA部署文档
CentOS 7 环境下的KAFKA部署文档
一、JDK环境准备
1、安装JDK
JDK包下载地址https://www.oracle.com/java/technologies/downloads/#java8 (下载需要登录Oracle账户)
根据自身需要下载不同版本的JDK安装包(这里选择的是jdk-8u341-linux-x64.tar.gz)

2、拷贝JDK安装包(需要root权限)
使用rz命令(或其它方式)将JDK安装包上传至服务器(没有rz命令的可以使用 yum install -y lrzsz 安装)
[root@King ~]# rz
[root@King ~]# ll
-rw-------. 1 root root 1475 8月 1 08:18 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 8月 1 13:05 bb.log
-rw-r--r-- 1 root root 148162542 8月 1 12:37 jdk-8u341-linux-x64.tar.gz
解压文件到文件系统下
[root@King ~]# mkdir /usr/java
[root@King ~]# chmod +777 /usr/java
[root@King ~]# tar -zxvf jdk-8u341-linux-x64.tar.gz -C /usr/java/
重命名
[root@King ~]# cd /usr/java/
[root@King /usr/java]# mv jdk1.8.0_341 jdk1.8
3、配置环境变量
添加环境变量,在文件末尾添加
[root@King /usr/java]# vim /etc/profile
#Path JDK 1.8
JAVA_HOME=/usr/java/jdk1.8
JRE_HOME=/usr/java/jdk1.8/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
重新加载/etc/profile配置文件,使配置生效
[root@King /usr/java]# source /etc/profile
4、查看JDK环境是否安装成功
[root@King /usr/java]# java -version
java version "1.8.0_341"
Java(TM) SE Runtime Environment (build 1.8.0_341-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode)
至此JDK环境安装成功
二、安装ZooKeeper
1、下载ZooKeeper
官网地址 https://zookeeper.apache.org/releases.html
这里使用的是 Apache ZooKeeper 3.7.1

[root@King /usr/java]# cd
[root@King ~]# wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz --no-check-certificate
(服务器可以连接外网可以使用wget命令,如未安装wget可使用yum install -y wget进行安装;其他上传方式也可以)
[root@King ~]# ll
-rw-------. 1 root root 1475 8月 1 08:18 anaconda-ks.cfg
-rw-r--r-- 1 root root 3492564 8月 1 12:50 apache-zookeeper-3.7.1-bin.tar.gz
-rw-r--r-- 1 root root 0 8月 1 13:05 bb.log
-rw-r--r-- 1 root root 148162542 8月 1 12:37 jdk-8u341-linux-x64.tar.gz
2、安装ZooKeeper
[root@King ~]# mkdir /apps
[root@King ~]# tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /apps/
[root@King ~]# cd /apps/
[root@King /apps]# mv apache-zookeeper-3.7.1-bin/ zookeeper
修改 ZooKeeper配置文件
[root@King /apps]# cd zookeeper/conf/
[root@King /apps/zookeeper/conf]# cp zoo_sample.cfg ./zoo.cfg
[root@King /apps/zookeeper/conf]# ll
-rw-r--r-- 1 1000 1000 535 5月 7 14:44 configuration.xsl
-rw-r--r-- 1 1000 1000 3435 5月 7 14:44 log4j.properties
-rw-r--r-- 1 root root 1148 8月 5 16:09 zoo.cfg
-rw-r--r-- 1 1000 1000 1148 5月 7 14:44 zoo_sample.cfg
[root@King /apps/zookeeper/conf]# vim zoo.cfg
dataDir=/apps/zookeeper/data #修改数据存放目录
dataLogDir=/apps/zookeeper/log #新增数据日志存放位置
创建data、log文件
[root@King /apps/zookeeper/conf]# mkdir /apps/zookeeper/data
[root@King /apps/zookeeper/conf]# mkdir /apps/zookeeper/log
修改ZooKeeper的运行环境脚本
[root@King /apps/zookeeper/conf]# cd ../bin/
[root@King /apps/zookeeper/bin]# vim zkEnv.sh
JAVA_HOME="/usr/java/jdk1.8" #大概在第77行,在JAVA_HOME前添加JAVA的安装目录(上文安装JDK中有提到)

添加ZooKeeper运行环境,在文件末尾添加
[root@King /apps/zookeeper/conf]# vim /etc/profile
export PATH=$PATH:/apps/zookeeper/bin
重新加载/etc/profile文件
[root@King /apps/zookeeper/conf]# source /etc/profile
3、启动ZooKeeper服务
[root@King /apps/zookeeper/conf]# cd /apps/zookeeper/bin/
[root@King /apps/zookeeper/bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /apps/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
三、部署KAFKA服务
1、下载kafka
官网地址 https://kafka.apache.org/downloads
这里使用的是 kafka_2.13-3.2.0.tgz

[root@King /usr/lib/systemd/system]# cd
[root@King ~]# wget https://dlcdn.apache.org/kafka/3.2.0/kafka_2.13-3.2.0.tgz --no-check-certificate
[root@King ~]# ll
-rw-------. 1 root root 1475 8月 1 08:18 anaconda-ks.cfg
-rw-r--r-- 1 root root 3492564 8月 1 12:50 apache-zookeeper-3.7.1-bin.tar.gz
-rw-r--r-- 1 root root 0 8月 1 13:05 bb.log
-rw-r--r-- 1 root root 148162542 8月 1 12:37 jdk-8u341-linux-x64.tar.gz
-rw-r--r-- 1 root root 103955943 8月 1 15:42 kafka_2.13-3.2.0.tgz
2、安装KAFKA
[root@King ~]# tar -zxvf kafka_2.13-3.2.0.tgz -C /apps/
[root@King ~]# cd /apps/
[root@King /apps]# mv kafka_2.13-3.2.0/ kafka
[root@King /apps]# vim ./kafka/config/server.properties
broker.id=0 #第24行,broker 的编号,如果集群中有多个 broker,则每个 broker 的编号需要设置的不同
listeners = PLAINTEXT://192.168.0.101:9092 #第33行,取消注释并顶到行首。修改为KAFKA服务器的IP、端口号
log.dirs=/apps/kafka/kafka-logs #第62行,设置KAFKA消息日志位置
zookeeper.connect=192.168.0.101:2181 #第125行,修改与ZooKeeper的通讯信息
添加KAFKA运行环境,在文件末尾添加
[root@King /apps]# vim /etc/profile
export KAFKA_HOME=/apps/kafka
export PATH=$PATH:$KAFKA_HOME/bin
重新加载/etc/profile文件
[root@King /apps]# source /etc/profile
3、启动KAFKA服务
[root@King /apps]# cd ./kafka/bin/
[root@King /apps/kafka/bin]# ./zookeeper-server-start.sh -daemon /apps/kafka/config/zookeeper.properties
[root@King /apps/kafka/bin]# ./kafka-server-start.sh -daemon /apps/kafka/config/server.properties
四、设置ZooKeeper及KAFKA的开机自启动脚本
1、编写启动脚本
[root@King /apps/kafka/bin]# mkdir /apps/sh
[root@King /apps/kafka/bin]# chmod +777 /apps/sh
[root@King /apps/kafka/bin]# vim /apps/sh/kafka_start.sh
#!/bin/bash
#ZooKeeper开机自启动
su - root -c '/apps/zookeeper/bin/zkServer.sh start'
sleep 3s
#KAFKA开机自启动
echo "zookeeper start ............."
cd /apps/kafka/bin
./zookeeper-server-start.sh -daemon ../config/zookeeper.properties
sleep 3s
echo "kafka start ................."
./kafka-server-start.sh -daemon ../config/server.properties
echo "kafka is running ............"
[root@King /apps/kafka/bin]# chmod +777 /apps/sh/kafka_start.sh
2、设置开机自启动
在文件末尾添加
[root@King /apps/kafka/bin]# vim /etc/rc.local
#ZooKeeper、KAFKA开机自启动
su - root -c '/apps/sh/kafka_start.sh'
[root@King /apps/kafka/bin]# chmod +777 /etc/rc.local
[root@King /apps/kafka/bin]# chmod +777 /etc/rc.d/rc.local
注意:关机前要停掉这两个服务,不然开机自启动会失败。先停KAFKA,再停ZooKeeper
[root@King ~]# /apps/kafka/bin/kafka-server-stop.sh
[root@King ~]# /apps/zookeeper/bin/zkServer.sh stop
五、KAFKA简单的功能测试
注意:新旧版本的KAFKA在命令上可能存在差异
创建Topic
[root@King /apps/kafka/bin]# pwd
/apps/kafka/bin
[root@King /apps/kafka/bin]# kafka-topics.sh --create --bootstrap-server 192.168.0.101:9092 --replication-factor 1 --partitions 1 --topic hello_word
Created topic hello_word.
查看Topic列表
[root@King /apps/kafka/bin]# kafka-topics.sh --bootstrap-server 192.168.0.101:9092 --list
hello_word
(这里可能有报错,不用管;可能是编码集问题。)
查看对应Topic描述
[root@King /apps/kafka/bin]# kafka-topics.sh --describe --bootstrap-server 192.168.0.101:9092 --topic hello_word
Topic: hello_word TopicId: eeBfTYddS5udrPHzsVktBw PartitionCount: 1 ReplicationFactor: 1 Configs: segment.bytes=1073741824
Topic: hello_word Partition: 0 Leader: 0 Replicas: 0 Isr: 0
删除Topic
[root@King /apps/kafka/bin]# kafka-topics.sh -delete --bootstrap-server 192.168.0.101:9092 --topic hello_word
打开2个会话窗口,分别作为生产者端、消费者端。(先将命令分别执行,在生产者端输入字符,查看消费者端是否收到)
在生产者端发送数据
[root@King /apps/kafka/bin]# kafka-console-producer.sh --bootstrap-server 192.168.0.101:9092 --topic hello_word
>abcdefg
>nihao
>hello word
在消费者端查看数据接收情况
[root@King /apps/kafka/bin]# kafka-console-consumer.sh --bootstrap-server 192.168.0.101:9092 --topic hello_word
abcdefg
nihao
hello word

浙公网安备 33010602011771号