Linux本地安装kafka
java环境配置
1、上传jdk-8u261-linux-x64.rpm到服务器并安装:
rpm -ivh jdk-8u261-linux-x64.rpm
2、配置环境变量:
vim /etc/profile 1
export JAVA_HOME=/usr/java/jdk1.8.0_261-amd647879
export PATH=$PATH:$JAVA_HOME/bin
# 生效
source /etc/profile
# 验证
java -version
Zookeeper的安装配置
1、上传zookeeper-3.4.14.tar.gz到服务器
2、解压到/opt:
tar -zxf zookeeper-3.4.14.tar.gz -C /opt
cd /opt/zookeeper-3.4.14/conf
# 复制zoo_sample.cfg命名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
# 编辑zoo.cfg文件
vim zoo.cfg
3、修改Zookeeper保存数据的目录,dataDir:
dataDir=/var/lagou/zookeeper/data
4、编辑/etc/profile:
- 设置环境变量ZOO_LOG_DIR,指定Zookeeper保存日志的位置;
- ZOOKEEPER_PREFIX指向Zookeeper的解压目录;
- 将Zookeeper的bin目录添加到PATH中:
export Z00KEEPER_PREFIX=/opt/zookeeper-3.4.14
export PATH=$PATH:$Z00KEEPER_PREFIx/bin
export Z00_L0G_DIR=/var/lagou/zookeeper/log
5、使配置生效:
source /etc/profile
6、验证:
zkServer.sh status
Kafka的安装与配置
1、上传kafka_2.12-1.0.2.tgz到服务器并解压:
tar -zxf kafka_2.12-1.0.2.tgz -C /opt
2、配置环境变量并生效:
vim /etc/profile
export KAFKA_HOME=/opt/kafka_2.12-1.0.2
export PATH=$PATH:$KAFKA_HOME/bin
3、配置/opt/kafka_2.12-1.0.2/config中的server.properties文件:
Kafka连接Zookeeper的地址,此处使用本地启动的Zookeeper实例,连接地址是localhost:2181,后面的 myKafka 是Kafka在Zookeeper中的根节点路径:
4、启动Zookeeper:
zkServer.sh start
5、确认Zookeeper的状态:
6、启动Kafka:
进入Kafka安装的根目录,执行如下命令:
启动成功,可以看到控制台输出的最后一行的started状态:
INF0 [KafkaServer id=0] started(kafka.server.KafkaServer)
7、查看Zookeeper的节点:
8、此时Kafka是前台模式启动,要停止,使用Ctrl+C。
如果要后台启动,使用命令:
kafka-server-start.sh -daemon config/server.properties
查看Kafka的后台进程:
ps aux | grep kafka
停止后台运行的Kafka:
kafka-server-stop.sh
生产与消费
1、kafka-topics.sh 用于管理主题
# 列出现有的主题
kafka-topics.sh --list --zookeeper localhost:2181/myKafka
# 创建主题,该主题包含一个分区,该分区为Leader分区,它没有Follower分区副本
kafka-topics.sh --zookeeper localhost:2181/myKafka --create --topic topic_1 --partitions 1 --replication-factor 1
# 查看分区信息
kafka-topics.sh --zookeeper localhost:2181/myKafka --list
# 查看指定主题的详细信息
kafka-topics.sh --zookeeper localhost:2181/myKafka -- describe --topic topic_1
# 删除指定主题
kafka-topics.sh --zookeeper localhost:2181/myKafka --delete --topic topic_1
2、kafka-console-producer.sh用于生产消息
# 开启生产者
kafka-console-producer.sh --topic topic_1 --broker-list localhost:9092
3、kafka-console-consumer.sh用于消费消息
# 开启消费者
kafka-console-consumer.sh --bootstrap-server localhost:9092 - -topic topic_1
# 开启消费者方式二,从头消费,不按照偏移量消费
kafka-console-consumer.sh --bootstrap-server localhost:9092 - -topic topic_1 --from-beginning
Docker安装kafka
Zookeeper安装
1、拉取zookeeper 镜像
docker pull zookeeper
2、运行zookeeper 服务
docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name zookeeper -p 2181:2181 -v /mydata/zookeeper/data:/data -v /mydata/zookeeper/conf:/conf -v /mydata/zookeeper/logs:/datalog zookeeper
参数:
--log-driver json-file
:指定日志驱动程序为json-file
。json-file
是一个日志驱动程序,它将日志记录为JSON格式的文件。--log-opt max-size=100m
:设置每个日志文件的最大大小为100MB。当单个日志文件达到这个大小时,Docker会自动开始写入新的日志文件。--log-opt max-file=2
:设置最多保留2个日志文件。当达到这个限制时,旧的日志文件会被自动删除,以保留最新的2个日志文件。--name zookeeper
:容器名字-p 2181:2181
:映射端口-v /mydata/zookeeper/data:/data
:挂载Zookeeper的数据目录,存储其运行时数据,包括事务日志和快照-v /mydata/zookeeper/conf:/conf
:挂载Zookeeper配置文件-v /mydata/zookeeper/logs:/datalog
:挂载Zookeeper的日志文件
日志相关的参数只是测试使用,实际根据需求调整。
本机修改文件路径后:
docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name zookeeper -p 2181:2181 -v /Users/fltech/docker/zookeeper/data:/data -v /Users/fltech/docker/zookeeper/conf:/conf -v /Users/fltech/docker/zookeeper/logs:/datalog zookeeper
3、验证是否启动成功
进入zookeeper容器
docker exec -it 容器id /bin/bash
找到配置文件位置
cat /conf/zoo.cfg
查看zookeeper状态
zkServer.sh status
显示如下:
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone
说明Zookeeper启动成功,运行模式是单机版。
Kafka安装
1、拉取kafka 镜像
docker pull kafka
2、运行kafka
docker run -d --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.21:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.21:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime -v /mydata/kafka/conf:/opt/kafka/conf -v /mydata/kafka/data:/tmp/kafka-logs -v /mydata/kafka/logs:/logs wurstmeister/kafka
kafka运行时,指定需要的环境变量
-e KAFKA_BROKER_ID=0
:配置BROKER_ID,默认第一台是0,单机模式下只能是0-e KAFKA_ZOOKEEPER_CONNECT=192.168.1.21:2181/kafka
:配置zookeeper的地址及管理kafka的路径,注意IP使用公网地址-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.21:909
:把kafka的地址端口注册给zookeeper-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
: 配置kafka的监听端口-v /etc/localtime:/etc/localtime
: 容器时间同步虚拟机的时间
挂载文件根据需要:
-v /mydata/kafka/conf:/opt/kafka/conf
:挂载配置文件
-v /mydata/kafka/data:/tmp/kafka-logs
:挂载数据目录,存储其运行时数据,包括日志文件和元数据
-v /mydata/kafka/logs:/logs
:挂载日志
本机修改文件路径后:
docker run -d --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.21:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.21:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime -v /Users/fltech/docker/kafka/conf:/opt/kafka/conf -v /Users/fltech/docker/kafka/data:/tmp/kafka-logs -v /Users/fltech/docker/kafka/logs:/logs wurstmeister/kafka
- 验证是否启动成功
进入容器:
docker exec -it kafka1 bash
到保存脚本的目录:
cd /opt/kafka_2.13-2.7.1/bin
创建一个topic:
/opt/kafka_2.13-2.7.1/bin > kafka-topics.sh --create --zookeeper 192.168.1.21:2181/kafka --replication-factor 1 --partitions 1 --topic topicDemo
Created topic topicDemo.
能够成功创建,说明安装成功。