首页 > 系统相关 >Kafka在Windows和CentOS的安装实践

Kafka在Windows和CentOS的安装实践

时间:2024-07-18 17:54:55浏览次数:11  
标签:bin CentOS Windows zookeeper server kafka -- usr Kafka

一、什么是kafka?

Apache kafka is a distributed streaming platform,即官方定义 kafka 是一个分布式流式计算平台。而在大部分企业开发人员中,都是把 kafka 当成消息系统使用,即它是一个分布式消息队列。Kafka也是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域;支持分区的、多副本,基于zookeeper协调的分布式消息系统。

二、kafka基础架构和核心概念

在 Kafka 中,发布订阅的对象是主题(Topic),你可以为每个业务、每个应用甚至是每类数据都创建专属的主题。

生产者(Producer):消息生产者,就是向 kafka broker 发消息的客户端,生产者程序通常持续不断地向一个或多个主题发送消息。

消费者(Consumer):消息消费者,向 kafka broker 取消息的客户端,消费者就是订阅这些主题消息的客户端应用程序。

和生产者类似,消费者也能够同时订阅多个主题的消息。我们把生产者和消费者统称为客户端(Clients)。你可以同时运行多个生产者和消费者实例,这些实例会不断地向 Kafka 集群中的多个主题生产和消费消息。

消费者组Consumer Group (CG):由多个 consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费,消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。

Broker :一台 kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker 可以容纳多个 topic。

主题(topic) :可以理解为一个队列,生产者和消费者面向的都是一个 topic;

分区(Partition):为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上, 一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列;

副本(Replica):副本,为保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢失,且 kafka 仍然能够继续工作,kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本, 一个 leader 和若干个 follower。

leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对 象都是 leader。

follower:每个分区多个副本中的“从”,实时从 leader 中同步数据,保持和 leader 数据 的同步。leader 发生故障时,某个 follower 会成为新的 follower

三、kafka 架构

四、安装zookeeper

1、解压zookeeper-3.4.5,目录为D:\zookeeper\zookeeper-3.4.5

2、 将“zoo_sample.cfg”重命名为“zoo.cfg”

3、 打开“zoo.cfg”找到并编辑dataDir= d:\\zooker\\log 

4、 添加系统变量:ZOOKEEPER_HOME= D:\zookeeper\zookeeper-3.4.5

5、 编辑path系统变量,添加路径:%ZOOKEEPER_HOME%\bin

6、 在zoo.cfg文件中修改默认的Zookeeper端口(默认端口2181)

7、 打开新的cmd,输入“zkServer“,运行Zookeeper

8、 命令行提示如下:说明本地Zookeeper启动成功

在window服务中配置自动启动的界面

打开cmd窗口:输入以下命令打开clent端,查看zookeeper是否可以正常使用

D:\zookeeper\zookeeper-3.4.5\bin> ./zkCli.cmd

五、windows下安装kafka

1、 下载安装包

http://kafka.apache.org/downloads

注意要下载二进制版本

2、 解压并进入Kafka目录,目录为:D:\kafka_3.3.1

3、 进入config目录找到文件server.properties并打开

4、 找到并编辑log.dirs= D://kafka_3.3.1//kafka-logs

5、 找到并编辑zookeeper.connect=localhost:2181

6、 Kafka会按照默认,在9092端口上运行,并连接zookeeper的默认端口:2181

7、打开cmd命令窗口,cd  D:\kafka_3.3.1,启动kafka

.\bin\windows\kafka-server-start.bat .\config\server.properties

启动成功后如下界面:

若启动失败,先删除kafka中配置的日志文件,再次启动

Kafka启动报错AccessDeniedException

报错信息:

ERROR Error while renaming dir for test-0 in log dir D:\kafka_3.3.1\kafka-logs (kafka.server.LogDirFailureChannel)

java.nio.file.AccessDeniedException: D:\kafka_3.3.1\kafka-logs\test-0 -> D:\kafka_3.3.1\kafka-logs\test-0.19a32e99d23e4dd484a27c1f94b8fc8e-delete

        at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83)

        at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)

        at sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:387)

        at sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:287)

出现的原因是,刚才不小心手动删掉了logs目录,导致实际logs和zookeeper中的状态不一致。

解决办法:删掉zookeeper的data文件,重启就好了

六、使用kafka

1创建test主题

.\bin\windows\kafka-topics.bat --bootstrap-server localhost:9092 --create --topic test --partitions 1 --replication-factor 1

2、查看主题

.\bin\windows\kafka-topics.bat --bootstrap-server localhost:9092 --list 

3、删除主题test

.\bin\windows\kafka-topics.bat --bootstrap-server localhost:9092 --delete --topic test

4、查看某个topic的详细信息

.\bin\windows\kafka-topics.bat --bootstrap-server localhost:9092 --describe --topic test

5、查看分组

.\bin\windows\kafka-consumer-groups.bat --bootstrap-server localhost:9092 --describe --list

6、查看某个分组详细信息

.\bin\windows\kafka-consumer-groups.bat --bootstrap-server localhost:9092 --describe --group javagroup

七、CentOS下安装kafka

1、下载kafka

https://kafka.apache.org/downloads

2、解压kafa

mkdir /usr/local/kafka

tar -zxvf /opt/software/kafka_2.12-3.5.0.tgz  -C /usr/local/kafka/

3、创建日志文件

mkdir /usr/local/kafka/kafka_2.12-3.5.0/kafka-logs

4、修改server.properties配置文件

log.dirs=/usr/local/kafka/kafka_2.12-3.5.0/ kafka-logs  //数据的存储位置,程序启动后会自行生成

zookeeper.connect=localhost:3181        //注意更改自己的ip地址

5、启动kafka

cd /usr/local/kafka/kafka_2.12-3.5.0

./bin/kafka-server-start.sh config/server.properties

6、创建topic:test1

./bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic  test2

7、查看topic(主题)列表

./bin/kafka-topics.sh --list --bootstrap-server localhost:9092

默认在zookeeper下会创建/config/topics,在其目录下创建了topic: test2

8、启动控制台生产者,并输入一条消息

./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test2

9、打开另一个端口,启动控制台消费者,显示了生产者输入的消息

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test2 --from-beginning

10、停止kafka

./bin/kafka-server-stop.sh

在生产者控制台输入hello,消费者控制台,就可以消费到生产者的消息,输出 hello

kafka 的各种操作命令 

kafka常用命令_kafka命令-CSDN博客

八、kafka集群部署

前提条件,其中一台服务器已经安装好jdk、zookeeper

1、分发kafka安装目录到其他两台机器

scp -r /usr/local/kafka/ 192.168.154.128:/usr/local/

scp -r /usr/local/kafka/ 192.168.154.130:/usr/local/

2、只需修改server.properties配置文件的

broker.id=2  (192.168.154.130)

broker.id=3  (192.168.154.127)

3、配置环境变量

vim /etc/profile

在最下面添加如下

#set zookeeper environment
export ZK_HOME=/usr/local/zookeeper/apache-zookeeper-3.6.3-bin
export PATH=$PATH:$ZK_HOME/bin

4、更新环境变量

source /etc/profile

5、启动

cd /usr/local/kafka/kafka_2.12-3.5.0
./bin/kafka-server-start.sh config/server.properties

若启动失败,则加上- daemon参数启动(对默认的配置进行覆盖)

./bin/kafka-server-start.sh -daemon config/server.properties

6、编写shell脚本,一键启动三台机器(没有成功),以后请教其他人

在任何一台机器的/usr/local/kafka/kafka_2.12-3.5.0/bin目录下,创建脚本文件kf.sh

cd /usr/local/kafka/kafka_2.12-3.5.0
vim ./bin/kf.sh

粘贴如下脚本:

#!/bin/bash
case $1 in
"start"){
        for i in 192.168.154.128 192.168.154.129 192.168.154.129
        do
                 echo --------------------- $i kafka 启动 -----------------
                ssh $i "/usr/local/kafka/kafka_2.12-3.5.0/bin/kafka-server-start.sh -daemon /usr/local/kafka/kafka_2.12-3.5.0/config/server.properties"
        done
}
;;
"stop"){
        for i in 192.168.154.128 192.168.154.129 192.168.154.129
        do
                echo ---------------------- $i kafka 停止 -----------------
                ssh $i "/usr/local/kafka/kafka_2.12-3.5.0/bin/kafka-server-stop.sh"
        done
}
;;
esac

# 保存退出后,修改执行权限

chmod 777 ./bin/kf.sh

启动kafka

./bin/kf.sh start

关闭kafka

./bin/kf.sh stop

 其他分享:

https://kafka.apache.org/
https://cloud.tencent.com/developer/article/2005281

标签:bin,CentOS,Windows,zookeeper,server,kafka,--,usr,Kafka
From: https://blog.csdn.net/zyf1203/article/details/140493537

相关文章

  • CentOS9中MySQL8数据库备份--增量备份方案
    1.关于备份:MySQL中有完全备份、增量备份和差异备份三种常见的备份策略,这次使用增量备份定义:增量备份仅备份自上一次备份(无论是完全备份还是增量备份)以来发生变化的数据。特点:依赖于上一次备份,仅备份变化的部分,因此备份文件较小,但恢复时需要结合之前的备份。优点:备份文件......
  • # Windows 定时删除指定路径下N天前的日志文件
    Windows下bat脚本文件的内容为1.删除指定路径下5天前的所有文件@echooffsetSrcDir=E:\WORK\GitsetDaysAgo=5forfiles/p%SrcDir%/s/m*.*/d-%DaysAgo%/c"cmd/cdel/f/q/a@path"2.删除指定路径下5天前的所有log文件@echooffsetSrcDir=E:\WORK\Git//指......
  • Windows 11开始菜单变了!应用分类显示 更好找
    Windows11重新设计了开始菜单,虽然备受争议,但其实也挺好用的,只是有一个槽点,安装了太多应用软件之后,滚动列表会非常长,很难找到自己需要的。在最新的Windows1122635.3930测试版本中,微软隐藏了一个新功能,尝试重新设计开始菜单的应用列表,增加了一个“类别”(Category)模式。在这......
  • 分析nirsoft出品的几个日志查看工具 windows
    介绍官网https://www.nirsoft.net/包含lastactivityview(程序打开日志查看)、turnedontimesview(系统开关机日志)、winlogonview(系统登陆日志查看)以上三个均为个人经常使用,并已经打好中文补丁。均为绿色免安装版本,解压直接食用。打包下载下载:https://damon8.lanzoub.com/izGOX2......
  • 如何在Java中实现基于Kafka的事件驱动架构
    如何在Java中实现基于Kafka的事件驱动架构大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!事件驱动架构在现代分布式系统中被广泛应用,它通过异步事件传递来解耦系统中的各个组件,提高系统的可扩展性和灵活性。ApacheKafka作为一个高吞吐量的分布式消息队......
  • 使用ventoy安装windows10
    使用ventoy安装windows10在ventoy中选择windows10镜像进入Windows安装界面下一步,选择现在安装稍等片刻选择我没有产品密钥根据需求选择对应版本下一步,接受许可条款下一步,选择自定义选择安装位置注意:我这里只有一块硬盘,且没有分区,直接选择下一步即可。安装程序......
  • Windows入门
    1.隐藏和显示控制台窗口WM_SYSCOMMAND:系统命令消息。SC_MINIMIZE:将窗口最小化。SC_RESTORE:将窗口还原。#include<windows.h>intmain(){HWNDhWnd=GetConsoleWindow();::SendMessage(hWnd,WM_SYSCOMMAND,SC_MINIMIZE,NULL);//程序运行至此处后,控制台......
  • linux系统和windows系统如何同步时间,服务器时间变动怎么同步
    一、Linux系统时间同步1.使用NTP(网络时间协议)NTP是最常用的Linux系统时间同步方式。NTP通过连接到外部时间服务器(如原子钟或GPS接收器)来获取高精度的时间信息,并校准本地系统时间。步骤:安装NTP客户端:在Ubuntu系统上,可以使用命令sudoapt-getinstallntp安装NTP客户端......
  • windows不下 Docker Desktop 也能部署 docker程序
     可以在Windows上不安装DockerDesktop直接使用Docker服务,但这需要一些额外的设置和配置。以下是一些方法,可以在Windows上实现这种配置。 使用WindowsSubsystemforLinux(WSL2)1、启用WSL2:打开PowerShell并运行以下命令以启用WSL和WSL2:dism.exe/on......
  • 7.kafka中的消费语义、幂等性
    目录概述kafka中幂等性支持配置原理概述  kafka中的消费语义atmostonce:可能会丢数据atleastonce:all+分区副本>=2+min>=2不丢失数据,但是数据可能重复exactlyonce:精准一次,不丢不重kafka的事务与幂等性官方速递ApacheKafkaIdempotentProducer-A......