赞
踩
kafka 最初由 LinkedIn (领英:全球最大的面向职场人士的社交网站)设计开发的,是为了解决 LinkedIn 的数据管道问题,用于 LinkedIn 网站的活动流数据和运营数据处理工具;
活动流数据:页面访问量、被查看页面内容方面的信息以及搜索情况等内容;
运营数据:服务器的性能数据( CPU 、 IO 使用率、请求时间、服务日志等数据 ) ;
刚开始 LinkedIn 采用的是 ActiveMQ 来进行数据交换,大约在 2010 年前后,那时的ActiveMQ 还远远无法满足 LinkedIn 对数据交换传输的要求,经常由于各种缺陷而导致消息阻塞或者服务无法正常访问,为了解决这个问题, LinkedIn 决定研发自己的消息传递系统,当时 LinkedIn 的首席架构师 jay kreps 便开始组织团队进行消息传递系统的研发;
2010 年底, Kafka 在 Github 上开源,初始版本为 0.7.0 ;
2011 年 7 月,因为备受关注,被纳入 Apache 孵化器项目;
2012 年 10 月, Kafka 从 Apache 孵化器项目毕业,成为 Apache 顶级项目;
2014 年, jay kreps 离开 LinkedIn ,成立 confluent 公司,此后 LinkedIn 和 confluent成为 kafka 的核心代码贡献组织,致力于 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 ,也是最新稳定版本;
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
下载 JDK : https://www.oracle.com/java/technologies/downloads/#java17
解压缩: tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local
切换到/usr/local目录下
配置 JDK 环境变量:
vim /etc/profile
export JAVA_HOME=/usr/local/jdk-17.0.10
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/
使用source命令对修改的配置进行生效
source /etc/profile
查看java版本
获取Kafka
安装Kafka
启动运行Kafka
下载最新版本的 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
配置Zookeeper 到conf目录中复制配置文件
启动Zookeeper
启动:zkServer.sh start
发现zookeeper启动会占用3个端口
关闭:zkServer.sh stop
zookeeper启动默认会占用8080端口,修改配置文件,添加如下配置
cd conf
vim zoof.cfg
admin.serverPort=9089
重启zookeeper
启动zookeeper
启动Kafka
./kafka-server-start.sh …/config/server.properties &
生成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
安装前查看系统是否已经安装了 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 )
启动: 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
主题(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
Kafka客户端通过网络与Kafka Brokers进行通信,可以写(或读)主题Topic中的事件Events;
Kafka brokers一旦受到事件Event,
就会将事件 Event 以持久和容错的方式存储起来,可以永久地
存储;
通过 kafka-console-producer.sh 脚本工具写入事件 Events ;
创建topic
./kafka-topics.sh --create --topic hello --bootstrap-server localhost:9092
idea使用kafka插件进行连接
一个 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 管理后台,否则不行;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。