本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1.安装Kafka
安装文件为kafka_2.12-2.6.0.tgz前面的2.12是该kafka所支持的Scala版本号,后面的2.6.0是Kafka自身的版本号,运行依赖JDK和ZooKeeper。
1.1 安装
# 在安装文件目录解压并移动到/usr/local/kafka目录下
tar -zxvf kafka_2.12-2.6.0.tgz
mv ./kafka_2.12-2.6.0/ /usr/local/kafka
1.2 配置
配置环境变量:配置环境变量的方法比较多,这里统一将环境变量放在 /etc/profile.d/my_env.sh 内。
vim /etc/profile.d/my_env.sh
# 添加 KAFKA_HOME和bin
export KAFKA_HOME=/usr/local/kafka
export PATH=$PATH:$KAFKA_HOME/bin
# 使得配置的环境变量立即生效:
# 首先是要赋权限【只操作一次就行】
chmod +x /etc/profile.d/my_env.sh
source /etc/profile.d/my_env.sh
# 3.验证是否生效
echo ${KAFKA_HOME}
/usr/local/kafka
kafka配置文件:进入${KAFKA_HOME}/config/,修改server.properties配置文件。
vim ${KAFKA_HOME}/config/server.properties
# 内网配置(不需要配置 advertised.listeners)
listeners=PLAINTEXT://localhost:9092
# 外网配置(advertised.listeners 对外暴露端口)
listeners=PLAINTEXT://localhost:9092
advertised.listeners=LAINTEXT://ip:port
1.3 启动
命令启动:
# kafka服务命令
kafka-server-start.sh [-daemon] server.properties [--override property=value]*
# 要保证zookeeper服务已启动再启动kafka服务
kafka-server-start.sh /usr/local/kafka/config/server.properties
1.4 添加到系统服务并配置开机启动:
# 1.添加文件
vim /etc/rc.d/init.d/kafka
# ------------文件内容------------
# chkconfig的配置参数启动服务的优先等级要低于zookeeper停止服务的优先等级要高于zookeeper
#!/bin/bash
# chkconfig: 3456 30 70
# description: service kafka
# processname: kafka
export JAVA_HOME=/usr/local/java
KAFKA_HOME=/usr/local/kafka
case $1 in
start) ${KAFKA_HOME}/bin/kafka-server-start.sh -daemon ${KAFKA_HOME}/config/server.properties;;
stop) ${KAFKA_HOME}/bin/kafka-server-stop.sh;;
status) ${JAVA_HOME}/bin/jps | grep Kafka;;
restart) ${KAFKA_HOME}/bin/kafka-server-stop.sh
${KAFKA_HOME}/bin/kafka-server-start.sh -daemon ${KAFKA_HOME}/config/server.properties;;
*) echo "require start|stop|status|restart";;
esac
# 2.赋执行权并添加开启开机自启
chmod +x /etc/rc.d/init.d/kafka
chkconfig --add /etc/rc.d/init.d/kafka
chkconfig kafka on
# 查看kafka是否添加成功
chkconfig --list kafka
kafka 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# 3.服务命令
service kafka start
service kafka stop
...
# 如果防火墙未关闭则需要开启外网端口
firewall-cmd --zone=public --add-port=9092/tcp --permanent && firewall-cmd --reload
2.启动Kafka【需要一个终端窗口】
- 首先要启动zookeeper服务端
[root@tcloud ~]# zkServer.sh start
# 查看是否启动
[root@tcloud ~]# jps -l
26180 org.apache.zookeeper.server.quorum.QuorumPeerMain
- 启动Kafka服务
# 修改config/server.properties配置文件【默认配置 也可以不修改】
listeners=PLAINTEXT://:9092
advertised.listeners=LAINTEXT://tcloud:9092
# 启动kafka服务【不要关闭这个终端窗口 一旦关闭Kafka服务也就停止了 这个终端暂命名为A】
[root@tcloud ~]# kafka-server-start.sh /usr/local/kafka/config/server.properties
# 【打开新的终端窗口 这个终端暂命名为B】查看是否启动
[root@tcloud ~]# jps -l
28496 kafka.Kafka
3.测试kafka是否正常工作【需要两个终端窗口】
在终端窗口B或新打开的窗口【只要不关闭终端窗口A就行】,输入下面命令创建一个自定义名称的topic:
# 创建主题
[root@tcloud ~]# kafka-topics.sh --zookeeper localhost:2181 --create --topic yuan --replication-factor 1 --partitions 1
Created topic yuan.
# 查看主题列表
[root@tcloud ~]# kafka-topics.sh --zookeeper localhost:2181 --list
yuan
# 查看主题的详情信息
[root@tcloud ~]# kafka-topics.sh --zookeeper localhost:2181 --describe --topic yuan
Topic: yuan PartitionCount: 1 ReplicationFactor: 1 Configs:
Topic: yuan Partition: 0 Leader: 0 Replicas: 0 Isr: 0
--zookeeper: 指定Kafka所连接的zookeeper服务地址
--create:创建主题的动作指令
--topic:指定创建主题的名称
--replicate-factor:指定副本因子
--partitions:指定分区个数
【在终端窗口B】用生产者(Producer)来产生一些数据,命令如下:
[root@tcloud ~]# kafka-console-producer.sh --broker-list tcloud:9092 --topic yuan
>hello
>kafka
【打开新的终端窗口 暂命名为C】启动消费者,来查看刚才生产者产生的数据,命令如下:
[root@tcloud ~]# kafka-console-consumer.sh --bootstrap-server tcloud:9092 --topic yuan --from-beginning --property print.key=true
null hello
null kafka
至此,kafka的单机版部署成功。