聊聊 Kafka: 在 Linux 环境上搭建 Kafka
点击上方老周聊架构关注我
一、环境准备
1.1 Java环境为前提
1.1.1 上传jdk-8u261-linux-x64.rpm
到服务器并安装
# 安装命令
rpm -ivh jdk-8u261-linux-x64.rpm
1.1.2 配置环境变量
# 编辑配置文件,jdk的bin目录到/etc/profile文件,对所有用户的shell有效
vim /etc/profile
# 生效
source /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_261-amd64
export PATH=$PATH:$JAVA_HOME/bin
# 验证
java -version
至此,jdk安装成功。
1.2 Zookeeper的安装配置
1.2.1 上传zookeeper-3.4.14.tar.gz
到服务器,解压到/opt
# 解压zk到指定目录
tar -zxf zookeeper-3.4.14.tar.gz -C /opt
1.2.2 修改
Zookeeper
保存数据的目录,dataDir
# 进入conf配置目录
cd /opt/zookeeper-3.4.14/conf
# 复制zoo_sample.cfg命名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
# 编辑zoo.cfg文件
vim zoo.cfg
dataDir=/var/riemann/zookeeper/data
1.2.3 编辑
/etc/profile
,使配置生效设置环境变量
ZOO_LOG_DIR
,指定Zookeeper
保存日志的位置;
ZOOKEEPER_PREFIX
指向Zookeeper
的解压目录;
将Zookeeper的bin
目录添加到PATH
中:
export ZOOKEEPER_PREFIX=/opt/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_PREFIX/bin
export ZOO_LOG_DIR=/var/riemann/zookeeper/log
配置完以后再生效配置:
source /etc/profile
1.2.4 启动Zookeeper
,确认Zookeeper
的状态
zkServer.sh start
至此,zookeeper安装成功。
1.3 Kafka 的安装与配置
1.3.1 上传kafka_2.12-1.0.2.tgz
到服务器并解压
tar -zxf kafka_2.12-1.0.2.tgz -C /opt
1.3.2 配置环境变量并生效
vim /etc/profile
export KAFKA=/opt/kafka_2.12-1.0.2
export PATH=$PATH:$KAFKA/bin
source /etc/profile
1.3.3 配置/opt/kafka_2.12-1.0.2/config
中的server.properties
文件
vi /opt/kafka_2.12-1.0.2/config/server.properties
`Kafka`连接`Zookeeper`的地址,此处使用本地启动的`Zookeeper`实例
连接地址是`localhost:2181`
后面的 `myKafka` 是`Kafka`在Zookeeper中的根节点路径
配置kafka存储持久化数据目录
log.dirs=/var/riemann/kafka/kafka-logs
创建上述持久化数据目录
mkdir -p /var/riemann/kafka/kafka-logs
1.4 启动Kafka
进入Kafka安装的根目录,执行如下命令:
kafka-server-start.sh ../config/server.properties
启动成功,可以看到控制台输出的最后一行的started状态:此时kafka安装成功。
1.5 重新开一个窗口,查看Zookeeper的节点
如果要后台启动,使用命令:
kafka-server-start.sh -daemon config/server.properties
查看Kafka的后台进程:
ps -ef | grep kafka
停止后台运行的Kafka:
kafka-server-stop.sh
二、生产与消费
查看zookeeper状态,zookeeper启动成功,再启动kafka。
2.1 kafka-topics.sh 用于管理主题
查看命令的帮助信息
# 列出现有的主题
[root@master1 ~]# kafka-topics.sh --list --zookeeper localhost:2181/myKafka
# 创建主题,该主题包含一个分区,该分区为Leader分区,它没有Follower分区副本。
[root@master1 ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka --create --topic topic_test --partitions 1 --replication-factor 1
# 查看分区信息
[root@master1 ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka --list
# 查看指定主题的详细信息
[root@master1 ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka --describe --topic topic_test
# 删除指定主题
[root@master1 ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka --delete --topic topic_test
列出现有主题,创建主题,该主题包含一个分区,该分区为Leader分区,它没有Follower分区副本。
查看指定主题的详细信息
创建主题,该主题包含多个分区、
多个分区:横向扩展
多个副本:高可用
2.2 kafka-console-consumer.sh用于消费消息
# 开启消费者
[root@node1 ~]# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic_test
# 开启消费者方式二,从头消费,不按照偏移量消费
[root@node1 ~]# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic_test --from-beginning
2.3 kafka-console-producer.sh用于生产消息
# 开启生产者
[root@node1 ~]# kafka-console-producer.sh --topic topic_test --broker-list localhost:9020
2.4 具体操作
开启消费者和生产者,生产并消费消息。
消费者,按照偏移量消费
消费者从头消费,不按照偏移量消费
欢迎大家关注我的公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。
喜欢的话,点赞、再看、分享三连。
点个在看你最好看