【Linux】Docker安装kafka教程(超详细保姆篇)

在这里插入图片描述

文章目录

  • 安装
    • 1.安装Zookeeper
    • 2.安装kafka
    • 3.创建zookeeper容器
    • 4.创建kafka容器
    • 5.测试kafka
    • 6.退出bash shell
  • Zookeeper服务启动
    • 1.首先找到Zookeeper安装路径
    • 2.执行./zkServer.sh start
    • 3.查看运行状态
    • 3.集群配置(可不阅)
  • kafka服务启动
    • 1.进入kafka的config目录
    • 2.修改server.properties
    • 3.执行kafka-server-start.sh 命令
    • 4.测试zookeeper跟kafka是否启动成功
  • 生产消费示例(可不阅)
    • 1.到kafka的bin目录下创建一个主题
      • kafka启动成功但是无法连接zookeeper解决
    • 2.启动一个生产者,指定topic为刚刚创建的主题mykafka
    • 3.重新打开一个连接页面到bin目录下启动一个消费者

更多相关内容可查看

注:本篇默认已有服务器或虚拟机,并已安装Docker
若虚安装Docker请移步【CentOS7】Linux安装Docker教程(保姆篇)

安装

1.安装Zookeeper

在 Apache Kafka 中,ZooKeeper 主要用于以下几个方面:

  • 保存和管理 Kafka 集群的元数据信息。例如,Kafka 集群中的 Broker 信息、Topic 和 Partition
    的信息、Consumer 的偏移量信息等。
  • Kafka 集群的选举服务。当 Kafka 集群中的某个或某些 Broker 宕机时,ZooKeeper 可以协助 Kafka
    集群选举出新的 Leader Broker。
  • Kafka 集群的状态监控。ZooKeeper 可以监控 Kafka 集群中各个 Broker 的在线状态,并及时通知 Kafka
    集群进行相应的处理。

因此,如果你要在 Docker 中运行 Kafka,你也需要运行 ZooKeeper。

docker pull wurstmeister/zookeeper

安装成功效果图

在这里插入图片描述

2.安装kafka

docker pull wurstmeister/kafka

成功效果图
在这里插入图片描述

3.创建zookeeper容器

docker run -d --name zookeeper -p 2181 -t wurstmeister/zookeeper

成功效果图
在这里插入图片描述

4.创建kafka容器

docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=127.0.0.1 --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest

成功效果图
在这里插入图片描述

5.测试kafka

docker exec -it kafka /bin/bash

解析命令:

  • docker exec:这是Docker的一个命令,用于在运行的Docker容器中执行命令。
  • -it:这是两个选项的组合。-i 选项让Docker的输入保持打开,-t 选项让Docker分配一个伪终端(pseudo-tty)。
  • kafka:这是你要在其中执行命令的Docker容器的名称。
  • /bin/bash:这是你要在Docker容器中执行的命令。在这个例子中,你是在打开一个bash shell。

成功效果图
在这里插入图片描述

6.退出bash shell

exit

成功效果图
在这里插入图片描述

Zookeeper服务启动

1.首先找到Zookeeper安装路径

find / -name kafka-topics.sh

成功效果图

在这里插入图片描述

2.执行./zkServer.sh start

如果出现最后一行则表示启动成功,但是会发现找不到zoo.cfg文件,如果不报这个可以直接跳过

./zkServer.sh start

成功效果图
在这里插入图片描述
进入安装zookeeper的config文件

cd /var/lib/docker/overlay2/80f2f1635bed9db5db5e5697053485db509c413aef6a5a6a3264330a7f53e8b4/diff/opt/zookeeper-3.4.13/conf/

将里面的zoo_xxx.cfg文件更名为zoo.cfg就可以了,当然也可以去改启动文件这里就不详细展开了
可看以下最后启动成功效果图

在这里插入图片描述

3.查看运行状态

该状态显示:以standalone模式运行。standalone模式意味着你只运行了一个Zookeeper服务器实例,而不是一个Zookeeper集群

./zkServer.sh status

在这里插入图片描述

3.集群配置(可不阅)

如果你需要运行一个Zookeeper集群,你需要在zoo.cfg配置文件中添加更多的server.X参数,并且为每个Zookeeper服务器实例指定一个唯一的ID。

然而,如果你只是在本地进行测试或者开发,standalone模式应该就足够了。现在你可以开始启动你的Kafka服务了。

kafka服务启动

1.进入kafka的config目录

如果不知道自己的kafka的安装路径,执行以下命令查找

find / -name kafka-topics.sh

成功效果图
在这里插入图片描述
进入到你查出来的kafka-topics.sh路径的上一个bin路径在进入config目录

cd /var/lib/docker/overlay2/8244efe326332818bd6b780a6333a2af67b2731cf32ded8a9e72f2179c7bb7d6/diff/opt/kafka_2.13-2.8.1/config
ll

成功效果图

在这里插入图片描述

2.修改server.properties

找到config文件下的server.properties并进行修改端口,保存
在这里插入图片描述

3.执行kafka-server-start.sh 命令

我这里为了保险起见,用的是kafka-server-start.sh 的全路径,跟server.properties的全路径

/var/lib/docker/overlay2/8244efe326332818bd6b780a6333a2af67b2731cf32ded8a9e72f2179c7bb7d6/diff/opt/kafka_2.13-2.8.1/bin/kafka-server-start.sh /var/lib/docker/overlay2/8244efe326332818bd6b780a6333a2af67b2731cf32ded8a9e72f2179c7bb7d6/diff/opt/kafka_2.13-2.8.1/config/server.properties

成功示例
在这里插入图片描述

4.测试zookeeper跟kafka是否启动成功

QuorumPeerMain为zookeeper服务
Kafka为kafka服务

jps

在这里插入图片描述

生产消费示例(可不阅)

1.到kafka的bin目录下创建一个主题

./kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic mykafka 
# --create 创建一个主题
# --zookeeper 连接zookeeper
# --replication-factor kafka副本数
# --partitions kafka分区数
# --topic mykafka 主题名称

成功示例
在这里插入图片描述

kafka启动成功但是无法连接zookeeper解决

1.进入/etc/hosts 加上最后一行,192.168.x.x zookeeper。代表将将主机名映射到IP地址
在这里插入图片描述
2.检查zookeeper连接是否是本地,并重新试一下
在这里插入图片描述

2.启动一个生产者,指定topic为刚刚创建的主题mykafka

/kafka-verifiable-producer.sh --broker-list localhost:9092 --topic mykafka 

如果这个命令报找不到kafka-verifiable-producer.sh,但是你发现当前路径有这个kafka-verifiable-producer.sh,那就用全路径重新执行,你的全路径在上文已经find过了

/var/lib/docker/overlay2/8244efe326332818bd6b780a6333a2af67b2731cf32ded8a9e72f2179c7bb7d6/diff/opt/kafka_2.13-2.8.1/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic mykafka

成功示例
在这里插入图片描述

3.重新打开一个连接页面到bin目录下启动一个消费者

./kafka-console-consumer.sh --topic mykafka --bootstrap-server 192.xxx.xxx.xxx:9092

以上同理如果找不到则使用全路径

/var/lib/docker/overlay2/8244efe326332818bd6b780a6333a2af67b2731cf32ded8a9e72f2179c7bb7d6/diff/opt/kafka_2.13-2.8.1/bin/kafka-console-consumer.sh --topic mykafka --bootstrap-server 192.168.xxx.xxx:9092

如果配置文件配置的localhost,则使用进行测试

./kafka-console-consumer.sh --topic mykafka --bootstrap-server localhost:9092

成功效果图

生产者

在这里插入图片描述

消费者
在这里插入图片描述

成功啦!!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

后端返回base64文件流下载

后端返回base64文件流: 前端处理: downloadTemplate () {this.$API.downloadTemplate().then(({ data }) > {const binaryString atob(data) // 解码base64字符串const byteArray new Uint8Array(binaryString.length) // 创建一个Uint8Arrayfor (let i 0; i…

Java面试八股之Mybatis可以映射到枚举类吗

Mybatis可以映射到枚举类吗 Mybatis 可以映射到 Java 的枚举类型。默认情况下,Mybatis 会使用枚举类型的名称来进行映射。例如,如果你有一个如下的枚举类型: public enum UserStatus { ACTIVE, INACTIVE } Mybatis 会将数据库中的字符串值…

PointCloudLib (多线程)快速双边滤波 C++版本

0.实现效果 原始点云 和滤波后的点云对比 1.算法原理 PCL(Point Cloud Library)快速双边滤波是一种高效的点云数据滤波方法,它基于传统双边滤波算法进行了改进,通过引入近似方法加速计算过程。以下是关于PCL快速双边滤波的详细回答: 1. 基本原理 空间滤波:在点云中,相…

PointCloudLib 3D对象的可视化 C++版本

0.实现效果 显示箭头 vtkOutputWindow::SetGlobalWarningDisplay(0);pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));viewer->setBackgroundColor(1, 1, 1);//添加箭头显示pcl::PointXYZ pA(0, 0, 0);pcl:…

SpringBoot-在配置文件中使用Profile

Profile,译为“配置文件” 在这里的Spring Boot也是一样,我们可以配置很多个Profile,每个Profile都对应一整个完整的全局配置,激活哪个,那个对应的全局配置就生效,具体的配置: 1、properties格…

常见硬件工程师面试题(二)

大家好,我是山羊君Goat。 对于硬件工程师,学习的东西主要和电路硬件相关,所以在硬件工程师的面试中,对于经验是十分看重的,像PCB设计,电路设计原理,模拟电路,数字电路等等相关的知识…

怎么在线一次压缩多张图片?分享3款简单的在线图片压缩工具

在日常工作和生活中,经常会需要使用图片处理大小功能,网上有很多的图片压缩工具都能够快速处理图片大小,那么当遇到大量的图片需要压缩大小时,该如何操作才能快速在线压缩图片大小呢?多张图片怎么一次批量压缩&#xf…

现在的Java面试都这么扯淡了吗?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」, 点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!!开发兼过半年面试官 刚开始…

算法训练营第七十天 | 最小生成树之prim、最小生成树之Kruskal、拓扑排序

算法训练营第七十天 最小生成树之prim 题目链接:https://kamacoder.com/problempage.php?pid1053 随意将一个节点放入set作为初始状态。每次从和set中节点相连的权值最小的边相连的节点放入并记录权值。直到set大小和节点数相同。 代码如下: #i…

Java核心知识(一):JVM

JVM 前言 文本源自微博客 (www.microblog.store),且已获授权. 一、线程 1.1 基本概念 JVM是可运行java代码的假象计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收、堆和一个存储方法域。JVM是运行在操作系统之上的,与硬件没有直接的交互。 1.2 运…

C# 中的 StreamReader 和 StreamWriter 类

在这里插入代码片StreamReader 和 StreamWriter 位于 System.IO 命名空间中。当您想要读取或写入基于字符的数据时,这两个类都很有用。这两个类都处理 Unicode 字符。 StreamReader 派生自抽象类“TextReader”,StreamWriter 派生自“TextWriter”。 下…

金融企业数据跨境流动的核心需求是什么?如何才能落地?

在金融行业,涉及到的数据跨境流动的场景多种多样,主要涉及到金融机构的跨国经营、全球贸易以及服务贸易等多个方面: 企业跨国经营:当金融机构进行跨国经营时,如银行在海外设立分支机构或进行跨境投资,会涉及…

Linux 式套娃,把“文件系统”安装在一个“文件”上?

背景 “文件”在文件系统之中,这是人人理解的概念。但“文件”之上还有一个文件系统?那岂不是成套娃了。但这个其实是可以的。这个就涉及到今天我们要讲的 loop 设备。 很多童鞋在学习 Linux 的文件系统时,涉及到对磁盘设备的格式化&#x…

Spring底层原理之bean的加载方式三 用注解声明配置类 以及@Configuration 和 @Component 的区别

bean的加载方式三 用注解声明配置类 我们之前用组件扫描加上注解定义bean 实现了bean的加载 当我们又会发现这个配置文件过于繁琐 我们可以写一个类 不是配置文件而是配置类 我们接下来只需要把这句话的功能写到 配置类里面 这样书写就行 package com.bigdata1421.config;…

全球社交的连接者:Facebook的跨文化影响力

在当今高度数字化和全球化的时代,社交网络不仅仅是人们交流和连接的工具,更成为促进全球文化交流和理解的重要平台。作为全球最大的社交网络之一,Facebook不仅连接了数十亿用户,还在跨文化交流和社会互动方面发挥着重要作用。本文…

【遇到的问题】集群上查看gpu的使用情况

流程: 查看bme_cpu所有节点的详细情况scontrol show node bme_gpu[12-23] 下面这个看起来分配出去较少 查看bme_cpu空闲节点sinfo -p bme_gpu -o "%n %G %C %m %e NVIDIAA10080GBPCIe 卡 gpu 13看起来最少 在命令中选择这个节点 #!/bin/bash #SBATCH -J rati…

山洪灾害无线预警广播系统解决方案

一、国家政策 2021年水利部印发了《全国山洪灾害防治项目实施方案(2021-2023年)》,提出“到2023年,山洪灾害防治体系进一步健全,监测预警能力进一步提升,努力补齐山洪灾害防治当前存在的明显短板”的建设目…

思科交换机基本配置命令

01进入特权模式enable switch>enable switch# 02进入全局配置模式configure terminal switch>enable switch#configure terminal switch(conf)# 03交换机命名hostname aptech2950以aptech2950为例 switch>enable switch#configure terminal switch(conf)#hostname apt…

创建App

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Django项目中,推荐使用App来完成不同模块的任务,通过执行如下命令可以启用一个应用程序。 python manage.py startapp app…

allegro 如何替换过孔?

操作步骤如下 1.选择操作对象(需要替换的过孔),右键–>Repace……–>Selected…… 2.在弹出的窗口中选择最终需要的过孔既可以