Kafka介绍、安装以及操作

Kafka消息中间件

1.Kafka介绍

1.1 What is Kafka?

  • 官网: https://kafka.apache.org/
  • 超过 80% 的财富 100 强公司信任并使用 Kafka ;
  • Apache Kafka 是一个开源分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用程序;

1.2 谁在使用Kafka?

在这里插入图片描述

1.3 Kafka的起源

  • kafka 最初由 LinkedIn (领英:全球最大的面向职场人士的社交网站)设计开发的,是为了解决 LinkedIn 的数据管道问题,用于 LinkedIn 网站的活动流数据和运营数据处理工具;

    • 活动流数据:页面访问量、被查看页面内容方面的信息以及搜索情况等内容;

    • 运营数据:服务器的性能数据( CPU 、 IO 使用率、请求时间、服务日志等数据 ) ;

  • 刚开始 LinkedIn 采用的是 ActiveMQ 来进行数据交换,大约在 2010 年前后,那时的ActiveMQ 还远远无法满足 LinkedIn 对数据交换传输的要求,经常由于各种缺陷而导致消息阻塞或者服务无法正常访问,为了解决这个问题, LinkedIn 决定研发自己的消息传递系统,当时 LinkedIn 的首席架构师 jay kreps 便开始组织团队进行消息传递系统的研发;

1.4 Kafka名字的由来

  • 由于 Kafka 的架构师 jay kreps 非常喜欢 franz kafka ( 弗兰茨 · 卡夫卡 ) (是奥匈帝国一位使用德语的小说家和短篇犹太人故事家,被评论家们认为是 20 世纪作家中最具影响力的一位) , 并且觉得 Kafka 这个名字很酷,因此把这一款消息传递系统取名为 Kafka ;
  • 大师门取名字也是根据自己的喜好来取名,在我们看来有可能感觉很随意!

1.5 Kafka的发展历史

2010 年底, Kafka 在 Github 上开源,初始版本为 0.7.0 ;
2011 年 7 月,因为备受关注,被纳入 Apache 孵化器项目;
2012 年 10 月, Kafka 从 Apache 孵化器项目毕业,成为 Apache 顶级项目;
2014 年, jay kreps 离开 LinkedIn ,成立 confluent 公司,此后 LinkedIn 和 confluent成为 kafka 的核心代码贡献组织,致力于 Kafka 的版本迭代升级和推广应用;

1.6 Kafka版本迭代

Kafka 前期项目版本似乎有点凌乱, Kafka 在 1.x 之前的版本,是采用 4 位版本号;
比如: 0.8.2.2 、 0.9.0.1 、 0.10.0.0… 等等;
在 1.x 之后, kafka 采用 Major.Minor.Patch 三位版本号;
Major 表示大版本,通常是一些重大改变,因此彼此之间功能可能会不兼容;
Minor 表示小版本,通常是一些新功能的增加;
Patch 表示修订版,主要为修复一些重点 Bug 而发布的版本 ;
比如: Kafka 2.1.3 ,大版本就是 2 ,小版本是 1 , Patch 版本为 3 ,是为修复 Bug 发布的第 3 个版本;
Kafka 总共发布了 8 个大版本,分别是 0.7.x 、 0.8.x 、 0.9.x 、 0.10.x 、 0.11.x 、 1.x 、 2.x 及 3.x版本,截止目前,最新版本是 Kafka 3.7.0 ,也是最新稳定版本;

2.Kafka安装

2.1 Kafka运行环境前置要求

Kafka 是由 Scala 语言编写而成, Scala 运行在 Java 虚拟机上,并兼容现有的 Java 程序,因此部署 Kakfa 的时候,需要先安装 JDK 环境;
Kafka 源码 : https://github.com/apache/kafka
Scala 官网: https://www.scala-lang.org/
本地环境必须安装了 Java 8+ ;( Java8 、 Java11 、 Java17 、 Java21 都可以);
JDK 长期支持版: https://www.oracle.com/java/technologies/java-se-support-roadmap.html

2.2 Kafka运行环境jdk安装

  1. 下载 JDK : https://www.oracle.com/java/technologies/downloads/#java17
    在这里插入图片描述

  2. 解压缩: tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local

    切换到/usr/local目录下

    在这里插入图片描述

  3. 配置 JDK 环境变量:

    1. vim /etc/profile

      export JAVA_HOME=/usr/local/jdk-17.0.10
      export PATH=$JAVA_HOME/bin:$PATH
      export CLASSPATH=.:$JAVA_HOME/lib/
      
    2. 使用source命令对修改的配置进行生效

      source /etc/profile
      
    3. 查看java版本

      在这里插入图片描述

2.3 Kafka的下载和安装

  • 获取Kafka

    • 下载最新版本的 Kafka : https://kafka.apache.org/downloads

    在这里插入图片描述

  • 安装Kafka

    • tar -xzf kafka_2.13-3.7.0.tgz -C /usr/local/
    • cd /usr/local/kafka_2.13-3.7.0
  • 启动运行Kafka

    • 启动 Kafka 环境
      注意:本地环境必须安装了 Java 8+ ;
      Apache Kafka 可以使用 ZooKeeper 或 KRaft 启动;但只能使用其中一种方式,不能同时使用;
      KRaft : Apache Kafka 的内置共识机制,用于取代 Apache ZooKeeper ;
    • Kafka 启动使用 Zookeeper &表示后台运行
      1 、启动 zookeeper : ./zookeeper-server-start.sh …/config/zookeeper.properties &
      2 、启动 kafka : ./kafka-server-start.sh …/config/server.properties &
      3 、关闭 Kafka : ./kafka-server-stop.sh …/config/server.properties
      4 、关闭 zookeeper: ./zookeeper-server-stop.sh …/config/zookeeper.properties

2.4 Zookeeper的下载和安装

2.4.1 获取zookeeper

下载最新版本的 Zookeeper : https://zookeeper.apache.org/
在这里插入图片描述

安装 Zookeeper

将下载的zookeeper传输到linux中

在这里插入图片描述

将zookeeper解压到/usr/local目录下

tar -xzf apache-zookeeper-3.9.2-bin.tar.gz -C /usr/local/

cd apache-zookeeper-3.9.2-bin

2.4.2 Zookeeper的配置和启动
  • 配置Zookeeper 到conf目录中复制配置文件

    • cp zoo_sample.cfg zoo.cfg
    • zoo.cfg 不需要修改,直接使用即可
  • 启动Zookeeper

    • 启动:zkServer.sh start

      在这里插入图片描述

      发现zookeeper启动会占用3个端口

      在这里插入图片描述

    • 关闭:zkServer.sh stop

    • zookeeper启动默认会占用8080端口,修改配置文件,添加如下配置

      cd conf

      vim zoof.cfg

      admin.serverPort=9089

      重启zookeeper

      在这里插入图片描述

2.4.3 使用独立的zookeeper启动Kafka
  1. 启动zookeeper

    • zkServer.sh start
  2. 启动Kafka

    • ./kafka-server-start.sh …/config/server.properties &

      在这里插入图片描述

2.4 使用KRaft启动运行Kafka

2.4.1 Kafka启动使用KRaft
  • 生成Cluster UUID(集群UUID): ./kafka-storage.sh random-uuid

    在这里插入图片描述

    ​ 每次返回的uuid不一样

    在这里插入图片描述

  • 格式化日志目录: ./kafka-storage.sh format -t sYhr2IwpRGisfAtnHTaSrg -c …/config/kraft/server.properties(-t 后面是uuid)

  • 启动Kafka(先将kafka和zookeeper服务停止):./kafka-server-start.sh …/config/kraft/server.properties &

  • 关闭Kafka:./kafka-server-stop.sh …/config/kraft/server.properties

2.5 使用docker启动运行Kafka

2.5.1 docker安装

安装前查看系统是否已经安装了 Docker :
yum list installed | grep docker
卸载 Docker(-y参数 自动确认的意思 remove后面是已安装列表中的名字) :
yum remove docker.x86_64 -y
yum remove docker-client.x86_64 -y
yum remove docker-common.x86_64 -y
安装 Docker :
yum install docker -y
注:这种方式安装的 Docker 版本比较旧;(查看版本: docker -v )

在这里插入图片描述

安装最新版的 Docker(须先删除老版docker) :
1 、 yum install yum-utils -y
2 、 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3 、 yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
查看是否安装成功:
查看 docker 版本: docker --version ( docker version , docker -v )

在这里插入图片描述

2.5.2 docker启动

​ 启动: systemctl start docker 或者 service docker start
​ 停止: systemctl stop docker 或者 service docker stop
​ 重启: systemctl restart docker 或者 service docker restart
​ 检查 Docker 进程的运行状态: systemctl status docker 或者 service docker status
​ 查看 docker 进程: ps -ef | grep docker
​ 查看 docker 系统信息: docker info
​ 查看所有的帮助信息: docker --help
​ 查看某个 commond 命令的帮助信息: docker commond --help

使用 Docker 镜像启动
1 、拉取 Kafka 镜像: docker pull apache/kafka:3.7.0
2 、启动 Kafka 容器(须先把虚拟机的Kafka停止): docker run -p 9092:9092 apache/kafka:3.7.0
查看已安装的镜像: docker images
删除镜像: docker rmi apache/kafka:3.7.0

3.Kafka操作

3.1 创建主题Topic

3.1.1 使用Kafka之前,第一件事情是必须创建一个主题(topic)
  • 主题(Topic)类似于文件系统中的文件夹;

  • 主题(Topic)用于存储事件(Events)

    • 事件(Events)
    • 也称为记录或消息,比如支付交易、手机地理位置更新、运输订单、物联网设备或医疗设备的传感器测量数据等等都是事件( Events );
    • 事件( Events )被组织和存储在主题( Topic )中
    • 简单来说,主题( Topic )类似于文件系统中的文件夹,事件( Events )是该文件夹中的文件;
  • 创建主题使用:kafka-topics.sh脚本;

    • 不带任何参数回告知该脚本如何使用:./kafka-topics.sh

    • 创建主题:./kafka-topics.sh --create --topic hello --bootstrap-server localhost:9092

      在这里插入图片描述

    • 列出所有的主题:./kafka-topics.sh --list --bootstrap-server localhost:9092

      在这里插入图片描述

    • 删除主题:./kafka-topics.sh --delete --topic hello --bootstrap-server localhost:9092

    • 显示主题详细信息:./kafka-topics.sh --describe --topic hello --bootstrap-server localhost:9092

      在这里插入图片描述

    • 修改主题信息:./kafka-topics.sh --alter --topic hello --partitions 3 --bootstrap-server localhost:9092

      在这里插入图片描述

3.2 在主题(Topic)中写入一些事件(Events)

  • Kafka客户端通过网络与Kafka Brokers进行通信,可以写(或读)主题Topic中的事件Events;

    在这里插入图片描述

  • Kafka brokers一旦受到事件Event,

  • 就会将事件 Event 以持久和容错的方式存储起来,可以永久地
    存储;

  • 通过 kafka-console-producer.sh 脚本工具写入事件 Events ;

    • 不带任何参数会告知该脚本如何使用: ./kafka-console-producer.sh
    • ./kafka-console-producer.sh --topic hello --bootstrap-server localhost:9092
    • 每一次换行是一个事件 Event ;
    • 使用 Ctrl+C 退出,停止发送事件 Event 到主题 Topic ;

    在这里插入图片描述

3.3 从主题(Topic)中读取事件(Events)

在这里插入图片描述

  • 使用 kafka-console-consumer.sh 消费者客户端读取之前写入的事件 Event :
    • 不带任何参数会告知该脚本如何使用: ./kafka-console-consumer.sh
    • ./kafka-console-consumer.sh --topic hello --from-beginning --bootstrap-server localhost:9092
    • –from-beginning 表示从 kafka 最早的消息开始消费 不加表示读取最新消息
    • 使用 Ctrl+C 停止消费者客户端;
  • 事件 Events 是持久存储在 Kafka 中的,所以它们可以被任意多次读取;

在这里插入图片描述

3.4 外部环境连接Kafka

  1. 启动 Kafka 容器: docker run -p 9092:9092 apache/kafka:3.7.0 &
  2. 安装外部连接工具;
  3. 外部连接工具连接 Kafka ;

在这里插入图片描述

3.4.1 外部环境无法连接Kafka
3.4.1.1 复制docker中kafka的配置文件到linux中
  • 文件输入:提供一个本地 kafka 属性配置文件,替换 docker 容器中的默认配置文件;
  • cd /usr/local
  • mkdir docker
  • docker ps
  • docker run -p 9092:9092 apache/kafka:3.7.0
  • docker exec -it 容器 id /bin/bash
  • 把 docker 容器中的文件复制到 linux 中:
    • docker cp 容器id:/etc/kafka/docker/server.properties /user/local/docker

在这里插入图片描述

3.4.1.2 修改linux的配置文件和文件映射
  • 配置文件: server.properties
  • listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
  • advertised.listeners=PLAINTEXT://虚拟机ip:9092
    • advertise 的含义表示宣称的、公布的, Kafka 服务对外开放的 IP 和端口 ;
  • 文件映射: docker run --volume /usr/local/kafka_2.13-3.7.0/docker:/mnt/shared/config -p 9092:9092 apache/kafka:3.7.0
3.4.1.3 测试连接

创建topic

./kafka-topics.sh --create --topic hello --bootstrap-server localhost:9092

idea使用kafka插件进行连接

在这里插入图片描述

3.5 Kafka图形界面连接工具

  • Kafka 图形界面连接工具:
    • Offset Explorer ( 以前叫 Kafka Tool) ,官网: https://www.kafkatool.com/
    • CMAK (以前叫 Kafka Manager ) 官网: https://github.com/yahoo/CMAK
    • EFAK (以前叫 kafka-eagle ) 官网: https://www.kafka-eagle.org/
3.5.1 CMAK(以前叫 Kafka Manager )
  • 一个 web 后台管理系统,可以管理 kafka ;

  • 项目地址: https://github.com/yahoo/CMAK

  • 注意该管控台运行需要 JDK11 版本的支持;

  • 下载: https://github.com/yahoo/CMAK/releases

  • 下载下来是一个 zip 压缩包,直接 unzip 解压:

  • unzip cmak-3.0.0.6.zip

  • 解压后即完成了安装;

  • 基于 zookeeper 方式启动 kafka 才可以使用该 web 管理后台,否则不行;

    • 1 、 CMAK 配置:
      • 修改 conf 目录下的 application.conf 配置文件:
      • kafka-manager.zkhosts=“192.168.11.128:2181”
      • cmak.zkhosts=“192.168.11.128:2181”
    • 2 、 CMAK 启动:
      • 切换到 bin 目录下执行:
      • ./cmak -Dconfig.file=…/conf/application.conf -java-home /usr/local/jdk-11.0.22
      • 其中 -Dconfig.file 是指定配置文件, -java-home 是指定 jdk11 所在位置,如果机器上已经是 jdk11 ,则不需要指定;
    • 3 、 CMAK 访问:
      • 启动之后 CMAK 默认端口为 9000 ,访问: http://192.168.11.128:9000/
3.5.2 EFAK (以前叫 kafka-eagle )
  • EFAK 一款优秀的开源免费的 Kafka 集群监控工具;(国人开发并开源)
    • 官网: https://www.kafka-eagle.org/
    • Github : https://github.com/smartloli/EFAK
  • EFAK 下载与安装:
    • 下载: https://github.com/smartloli/kafka-eagle-bin/archive/v3.0.1.tar.gz
    • 安装,需要解压两次:
      1. tar -zxvf kafka-eagle-bin-3.0.1.tar.gz
      2. cd kafka-eagle-bin-3.0.1
      3. tar -zxvf efak-web-3.0.1-bin.tar.gz
      4. cd efak-web-3.0.1

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

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

相关文章

kubernetes中使用ELK进行日志收集

目录 一、需要收集哪些日志 1、kubernetes集群的系统组件日志 2、应用日志 二、日志收集方案ELK 1、收集日志:Logstash 2、存储日志:Elasticsearch 3、展示日志:Kibana 三、安装elk 1、下载安装包 2、创建用户并切换到新用户 3、上…

【Excel】excel连接数字和符号

使用“&”对数字和符号进行连接 示例: 将“2.6”和“,”连成“2.6,” 连接公式为: V3&W3 V3和W3分别是"2.6"和“,”在excel中的位置

数据结构的队列(c语言版)

一.队列的概念 1.队列的定义 队列是一种常见的数据结构,它遵循先进先出的原则。类似于现实生活中排队的场景,最先进入队列的元素首先被处理,而最后进入队列的元素则要等到前面的元素都被处理完后才能被处理。 在队列中,元素只能…

Text-to-SQL小白入门(12)Awesome-Text2SQL开源项目star破1000

项目介绍 项目地址 23年9月份刚开源这个项目,大半年过去了,star数终于破1000啦,决定在知乎更新一下内容,看看内容变化,知乎有上当时项目介绍的链接:追光者:Text-to-SQL小白入门(六&…

2.1 Java全栈开发前端+后端(全栈工程师进阶之路)-前端框架VUE3-基础-初识Vue

Vue概述 早期前后端分离模式 早期的前后端分离开发模式是这样的&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge">&l…

axios.get请求 重复键问题??

封装的接口方法&#xff1a; 数据&#xff1a; 多选框多选后 能得到对应的数组 但是请求的载荷却是这样的,导致会请求不到数据 departmentChecks 的格式看起来是一个数组&#xff0c;但是通常 HTTP 请求的查询参数不支持使用相同的键&#xff08;key&#xff09;名多次。如…

蓝桥杯练习系统(算法训练)ALGO-953 混合积

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 众所周知&#xff0c;人人都在学习线性代数&#xff0c;既然都学过&#xff0c;那么解决本题应该很方便。   宇宙大战中&…

STM32 看门狗WDG

一、看门狗&#xff08;Watchdog&#xff09; 看门狗可以监控程序的运行状态&#xff0c;当程序因为设计漏洞、硬件故障、电磁干扰等原因&#xff0c;出现卡死或跑飞现象时&#xff0c;看门狗能及时复位程序&#xff0c;避免程序陷入长时间的罢工状态&#xff0c;保证系统的可靠…

BetterDisplay Pro for Mac:显示器校准软件

BetterDisplay Pro for Mac是一款出色的显示器校准软件&#xff0c;旨在提升你的视觉体验。它提供了准确的显示器参数调整&#xff0c;包括亮度、对比度、色温和色域等&#xff0c;让你的显示器呈现更真实、清晰、细腻的图像。此外&#xff0c;软件还提供多种预设模式和自定义选…

ABAP 数据写入Excel 并保存

参考老白 https://www.cnblogs.com/liaojunbo/archive/2011/09/06/2168552.html 但是缺zcl_excel 。需要从 dotabap要引入abap2xlsx 英文版进入后 尝试了一下 1&#xff09;列的宽度自适应么有找到在哪里&#xff1f; 列宽设置 lo_worksheet->set_column_width( ip_co…

基于springboot+vue+Mysql的网上商城购物系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

reactjs后台管理系统搭建

1 通过yarn 模板创建reactjs项目 yarn create vite reactjs-antdesign-admin --template react-ts 2 基础路由测试 定义一个router/index.tsx&#xff0c;里面定义路由组件 const Router: React.FC () > {return (<HashRouter><Switch><Route path"…

设计模式: 责任链模式

目录 一&#xff0c;责任链模式 二&#xff0c;特点 四&#xff0c;实现步骤 五&#xff0c;代码 一&#xff0c;责任链模式 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种软件设计模式&#xff0c;它属于行为型模式。在这种模式中&#xff0c…

WPF之创建无外观控件

1&#xff0c;定义无外观控件。 定义默认样式&#xff0c;在其静态构造函数中调用DefaultStyleKeyProperty.OverrideMetadata()。 //设置默认样式DefaultStyleKeyProperty.OverrideMetadata(typeof(ColorPicker), new FrameworkPropertyMetadata(typeof(ColorPicker))); 在项目…

tomcat篇-windows 运行tomcat的startup.bat时,终端打印的中文显示为乱码

当运行Tomcat的startup.bat时&#xff0c;如果终端中中文显示为乱码&#xff0c;这通常是因为Tomcat使用的日志输出编码与Windows命令行默认的编码不匹配。针对这一问题&#xff0c;你可以尝试以下步骤来解决&#xff1a; 1、执行startup.bat&#xff0c;在输出的窗口右击&…

Android --- 网络请求

通常在 Android 中进行网络连接一般使用 Scoket 和HTTP&#xff0c;HTTP 请求方式比 Scoket 多。HTTP 请求一般采用原生的 HttpClient 和 HttpUrlConnection 的两种网络访问方式&#xff08;系统自带的&#xff09;。但是在 Android 5.0 的时候 Google 就不推荐使用 HttpClient…

【限免】雷达目标生成与探测研究项目【附MATLAB代码】

文章来源&#xff1a;微信公众号&#xff1a;EW Frontier 课题背景 该项目的目标是模拟FMCW雷达检测运动目标&#xff0c;然后执行信号处理功能&#xff0c;以估计模拟目标的距离和多普勒速度。 图1&#xff1a;雷达模拟和检测的项目工作流程 FMCW波形设计 根据系统要求设计…

JAVA Coding 规范

Coding 规范 文章目录 Coding 规范一.文件规范1.1 声明1.2 缩进1.3 空行1.4 空格1.5 对齐1.6 小括号1.7 花括号1.8 代码长度 二.命名规范2.1 命名总则2.2 命名空间2.3 类与接口2.4 方法命名2.5 属性命名2.6 常量命名2.7 变量命名 三.语句规范3.1 语句总则3.2 循环语句3.3 Switc…

windows rabbitMq安装

一、Erlang 环境准备 下载安装包 跟我们跑java项目&#xff0c;要装jdk类似。rabbitMQ是基于Erlang开发的&#xff0c;因此安装rabbitMQ服务器之前&#xff0c;需要先安装Erlang环境。 官网直接下载windows直装版本&#xff1a;https://www.erlang.org/downloads 无脑安装&a…

【CGALDotNet】CGAL的C#封装(C#调用编译好的CGAL的dll)

介绍 开源项目出处&#xff08;两个模块&#xff09;&#xff1a; 链接1&#xff1a;https://github.com/Scrawk/CGALDotNet/tree/master?tabreadme-ov-file 链接2&#xff1a;https://github.com/Scrawk/CGALDotNetGeometry 该项目提供了编译的、封装相关接口后的CGAL库&am…