【Kafka】Linux本地和Docker安装Kafka

目录

  • Linux本地安装kafka
    • java环境配置
    • Zookeeper的安装配置
    • Kafka的安装与配置
    • 生产与消费
  • Docker安装kafka
    • Zookeeper安装
    • Kafka安装

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-filejson-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
  1. 验证是否启动成功

进入容器:

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.

能够成功创建,说明安装成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/418553.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Qt开发】初识Qt

文章目录 1. Qt的背景1.1 Qt是什么1.2 Qt的发展史1.3 Qt支持的平台 2. Qt开发环境的搭建2.1 Qt SDK下载2.2 Qt SDK的安装 3. 一个简单的Qt模板程序的创建4. Qt模板程序的代码讲解4.1 main.cpp4.2 widget.h4.3 widget.cpp4.4 widget.ui4.5 test_1_18.pro4.6 一些中间文件 5. Qt在…

ASP.NET Core 对象池化技术

写在前面 Microsoft.Extensions.ObjectPool 是 ASP.NET Core 基础结构的一部分,当对象的初始化成本较高,并且可能被频繁使用时,才适合采用对象池技术;被ObjectPool管理的对象不会进入垃圾回收,使用时通过由实例对象实…

手把手教你如何快速定位bug,如何编写测试用例,快来观摩......

手把手教你如何快速定位bug,如何编写测试用例,快来观摩......手把手教你如何快速定位bug,如何编写测试用例,快来观摩......作为一名测试人员如果连常见的系统问题都不知道如何分析,频繁将前端人员问题指派给后端人员,后端人员问题指派给前端人员&#xf…

解决Spring Boot跨域问题(配置JAVA类)

什么是跨域问题 跨域问题指的是不同端口之间,使用 ajax 无法相互调用的问题。跨域问题本质是浏览器的一种保护机制,它是为了保证用户的安全,防止恶意网站窃取数据。 比如前端用的端口号为8081,后端用的端口号为8080,后…

IPv6--ACL6(IPv6访问控制列表--基本ACL6配置)

ACL基本原理 ACL由一系列规则组成,通过将报文与ACL规则进行匹配,设备可以过滤出特定的报文。 ACL的组成 ACL编号: 在网络设备上配置ACL时,每个ACL都需要分配一个编号,称为ACL编号,用来标识ACL。不同分类的ACL编号范围不同,这个后面具体讲。 规则: 前面提到了,一个AC…

【开发必备】泳道图编辑工具及使用

1.什么是泳道图 事情的起因在与博主要和几位小伙伴一起开发一个小程序,那么涉及的人多时就需要用到需求文档这个玩意。然后博主当然要扛起写需求文档这项项目经理 (牛马)的职责了! 然后,博主就发现需求文档中一个看似…

Shell 脚本实现自动启动程序、日志管理和定时任务监控

简介 本篇将通过Shell 脚本实现自动启动Java程序、日志管理和定时任务监控。脚本启动程序具灵活定制、可移植性和扩展性强的优点,可以根据需要添加额外的功能、配置选项和自定义行为,从而满足更具体的要求。 脚本编写 vim start_program.sh#!/bin/bas…

深度学习入门——卷积神经网络CNN基本原理+实战

CNN基本结构 ​ 卷积神经网络(Convolutional Neural Network,CNN)是深度学习技术中最基础的网络结构,模拟人脑工作,具备强大的特征学习能力。CNN结构主要由两部分组成:特征提取部分和分类部分\color{blue}{特征提取部…

RS-485通讯

RS-485通讯协议简介 与CAN类似,RS-485是一种工业控制环境中常用的通讯协议,它具有抗干扰能力强、传输距离远的特点。RS-485通讯协议由RS-232协议改进而来,协议层不变,只是改进了物理层,因而保留了串口通讯协议应用简单…

挑战杯参赛总结-时间序列预测

参赛任务: 目标:针对中国各个市区的不同年份二氧化碳排放量,预测未来年份的二氧化碳排放量。 不同与之前我学习过的波士顿房价预测机器学习-波士顿房价预测-CSDN博客 房价预测是通过学习与房价有关的很多特征,训练出一个模型来预…

【测试入门】测试用例经典设计方法 —— 因果图法

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

AttributeError: module ‘openai‘ has no attribute ‘error‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…