一、环境准备
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的节点
1.6 此时Kafka是前台模式启动,要停止,使用Ctrl+C
如果要后台启动,使用命令:
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后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。
喜欢的话,点赞、再看、分享三连。