Windows安装kafka

压缩包下载地址:https://www.apache.org/dyn/closer.cgi?path=/kafka/3.6.1/kafka_2.13-3.6.1.tgz
在这里插入图片描述

启动kafka步骤

zookeeper-server-start.bat

rem 闭命令提示符窗口的命令回显,这样在运行脚本时不会显示脚本的具体命令内容
@echo off

rem 命令行启动未提供参数则输出: USAGE:命令 zookeeper.properties 中止
IF [%1] EQU [] (
	echo USAGE: %0 zookeeper.properties
	EXIT /B 1
)
rem 开始了一个局部环境,只在当前脚本执行过程中有效
SetLocal
rem 未设置值,则设置
IF ["%KAFKA_LOG4J_OPTS%"] EQU [""] (
    set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%~dp0../../config/log4j.properties
)
IF ["%KAFKA_HEAP_OPTS%"] EQU [""] (
    set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M
)
rem %~dp0获取命令的文件路径,%* 读取执行这个命令携带的锁有参数
"%~dp0kafka-run-class.bat" org.apache.zookeeper.server.quorum.QuorumPeerMain %*

rem 在脚本中限定变量的作用范围,以防止对环境变量的更改影响到脚本之外的其他部分
EndLocal

kafka-run-class.bat

@echo off

setlocal enabledelayedexpansion

IF [%1] EQU [] (
	echo USAGE: %0 classname [opts]
	EXIT /B 1
)

rem Using pushd popd to set BASE_DIR to the absolute path
rem pushd表示切换目录,这里作用是切换到%~dp0对应的上2级目录
pushd %~dp0..\..
rem CD是系统变量,%CD%表示当前工作目录的路径
set BASE_DIR=%CD%
rem popd 切回原来的目录
popd

IF ["%SCALA_VERSION%"] EQU [""] (
  set SCALA_VERSION=2.13.11
)

rem 延迟环境变量扩展后的一种变量访问方式!var!
IF ["%SCALA_BINARY_VERSION%"] EQU [""] (
  for /f "tokens=1,2 delims=." %%a in ("%SCALA_VERSION%") do (
    set FIRST=%%a
    set SECOND=%%b
    if ["!SECOND!"] EQU [""] (
      set SCALA_BINARY_VERSION=!FIRST!
    ) else (
      set SCALA_BINARY_VERSION=!FIRST!.!SECOND!
    )
  )
)

rem Classpath addition for kafka-core dependencies 为kafka核心依赖添加类路径
rem for %%i in (...) do (...)这是一个 for 循环,用于遍历指定路径下满足特定条件的文件
for %%i in ("%BASE_DIR%\core\build\dependant-libs-%SCALA_VERSION%\*.jar") do (
	rem 
	call :concat "%%i"
)

rem Classpath addition for kafka-examples
for %%i in ("%BASE_DIR%\examples\build\libs\kafka-examples*.jar") do (
	call :concat "%%i"
)

rem Classpath addition for kafka-clients
for %%i in ("%BASE_DIR%\clients\build\libs\kafka-clients*.jar") do (
	call :concat "%%i"
)

rem Classpath addition for kafka-streams
for %%i in ("%BASE_DIR%\streams\build\libs\kafka-streams*.jar") do (
	call :concat "%%i"
)

rem Classpath addition for kafka-streams-examples
for %%i in ("%BASE_DIR%\streams\examples\build\libs\kafka-streams-examples*.jar") do (
	call :concat "%%i"
)

for %%i in ("%BASE_DIR%\streams\build\dependant-libs-%SCALA_VERSION%\rocksdb*.jar") do (
	call :concat "%%i"
)

rem Classpath addition for kafka tools 为kafka工具添加类路径
for %%i in ("%BASE_DIR%\tools\build\libs\kafka-tools*.jar") do (
	call :concat "%%i"
)

for %%i in ("%BASE_DIR%\tools\build\dependant-libs-%SCALA_VERSION%\*.jar") do (
	call :concat "%%i"
)
rem 两层for循环
for %%p in (api runtime file json tools) do (
	for %%i in ("%BASE_DIR%\connect\%%p\build\libs\connect-%%p*.jar") do (
		call :concat "%%i"
	)
	if exist "%BASE_DIR%\connect\%%p\build\dependant-libs\*" (
		call :concat "%BASE_DIR%\connect\%%p\build\dependant-libs\*"
	)
)

rem Classpath addition for release
for %%i in ("%BASE_DIR%\libs\*") do (
	call :concat "%%i"
)

rem Classpath addition for core
for %%i in ("%BASE_DIR%\core\build\libs\kafka_%SCALA_BINARY_VERSION%*.jar") do (
	call :concat "%%i"
)

rem JMX settings JMX的设置
IF ["%KAFKA_JMX_OPTS%"] EQU [""] (
	set KAFKA_JMX_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false
)

rem JMX port to use 使用的JMX端口
IF ["%JMX_PORT%"] NEQ [""] (
	set KAFKA_JMX_OPTS=%KAFKA_JMX_OPTS% -Dcom.sun.management.jmxremote.port=%JMX_PORT%
)

rem Log directory to use 要使用的日志目录
IF ["%LOG_DIR%"] EQU [""] (
    set LOG_DIR=%BASE_DIR%/logs
)

rem Log4j settings
IF ["%KAFKA_LOG4J_OPTS%"] EQU [""] (
	set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%BASE_DIR%/config/tools-log4j.properties
) ELSE (
  rem create logs directory 创建一个目录文件夹
  IF not exist "%LOG_DIR%" (
      mkdir "%LOG_DIR%"
  )
)

set KAFKA_LOG4J_OPTS=-Dkafka.logs.dir="%LOG_DIR%" "%KAFKA_LOG4J_OPTS%"

rem Generic jvm settings you want to add 要添加的通用jvm设置
IF ["%KAFKA_OPTS%"] EQU [""] (
	set KAFKA_OPTS=
)

set DEFAULT_JAVA_DEBUG_PORT=5005
set DEFAULT_DEBUG_SUSPEND_FLAG=n
rem Set Debug options if enabled
IF ["%KAFKA_DEBUG%"] NEQ [""] (


	IF ["%JAVA_DEBUG_PORT%"] EQU [""] (
		set JAVA_DEBUG_PORT=%DEFAULT_JAVA_DEBUG_PORT%
	)

	IF ["%DEBUG_SUSPEND_FLAG%"] EQU [""] (
		set DEBUG_SUSPEND_FLAG=%DEFAULT_DEBUG_SUSPEND_FLAG%
	)
	set DEFAULT_JAVA_DEBUG_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=!DEBUG_SUSPEND_FLAG!,address=!JAVA_DEBUG_PORT!

	IF ["%JAVA_DEBUG_OPTS%"] EQU [""] (
		set JAVA_DEBUG_OPTS=!DEFAULT_JAVA_DEBUG_OPTS!
	)

	echo Enabling Java debug options: !JAVA_DEBUG_OPTS!
	set KAFKA_OPTS=!JAVA_DEBUG_OPTS! !KAFKA_OPTS!
)

rem Which java to use
IF ["%JAVA_HOME%"] EQU [""] (
	set JAVA=java
) ELSE (
	set JAVA="%JAVA_HOME%/bin/java"
)

rem Memory options
IF ["%KAFKA_HEAP_OPTS%"] EQU [""] (
	set KAFKA_HEAP_OPTS=-Xmx256M
)

rem JVM performance options
IF ["%KAFKA_JVM_PERFORMANCE_OPTS%"] EQU [""] (
	set KAFKA_JVM_PERFORMANCE_OPTS=-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true
)

IF not defined CLASSPATH (
	echo Classpath is empty. Please build the project first e.g. by running 'gradlew jarAll'
	EXIT /B 2
)
rem %?% 读取环境变量 
set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp "%CLASSPATH%" %KAFKA_OPTS% %*
rem echo.
rem echo %COMMAND%
rem echo.
%COMMAND%

rem 将控制权转移到脚本的文件尾
goto :eof
:concat
rem 这是一个条件语句,用于检查CLASSPATH环境变量是否已定义
IF not defined CLASSPATH (
  set CLASSPATH="%~1"
) ELSE (
  set CLASSPATH=%CLASSPATH%;"%~1"
)

启动失败日志

缺少启动参数

在这里插入图片描述

输入行太长

组合起来的执行命令太长,Windows系统不支持。将项目放到盘符目录下。
在这里插入图片描述

找不到类

为了解决路径太长,去掉了一级目录。因为启动命令中有通过当前命令的位置去加载jar包。
在这里插入图片描述

绝对路径配置文件加载报错

# 文件地址错误
/kafka_2.13-3.6.1/bin/windows/zookeeper-server-start.bat /kafka_2.13-3.6.1/config/zookeeper.properties

在这里插入图片描述

先对路径无法启动

./bin/windows/zookeeper-server-start.bat ./bin/windows/zookeeper.properties

/bin/windows/zookeeper-server-start.bat /bin/windows/zookeeper.properties

bin/windows/zookeeper-server-start.bat bin/windows/zookeeper.properties

在这里插入图片描述

启动成功

1. 启动zookeeper

# 当前路径下启动
zookeeper-server-start.bat ../../config/zookeeper.properties

# 将文件复制一份到启动命令处
zookeeper-server-start.bat zookeeper.properties

# 绝对路径启动
/kafka_2.13-3.6.1/bin/windows/zookeeper-server-start.bat /kafka_2.13-3.6.1/bin/windows/zookeeper.properties

/kafka_2.13-3.6.1/bin/windows/zookeeper-server-start.bat /kafka_2.13-3.6.1/config/zookeeper.properties

# Window使用相对路径 系统找不到指定的路径
/bin/windows/zookeeper-server-start.bat /bin/config/zookeeper.properties

/kafka_2.13-3.6.1/bin/windows/zookeeper-server-start.bat /kafka_2.13-3.6.1/bin/config/zookeeper.properties


# 相对路径启动
call ./bin/windows/zookeeper-server-start.bat ./config/zookeeper.properties

call ./bin/windows/zookeeper-server-start.bat ./bin/windows/zookeeper.properties

在这里插入图片描述
ctrl + C停止,或者关闭窗口

3.启动kafka-server

# 当前路径下启动 将文件复制一份到启动命令处
kafka-server-start.sh config/server.properties

# 其他方式启动同上

在这里插入图片描述

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

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

相关文章

原来JMeter 结果处理常见问题这么简单,可惜没早点看到!

1. 前言 工作中用 jmeter 请求一个接口对谈得上会 jmeter 的人似乎都是可以做出来的,但是实际难点是参数化,结果的断言,结果的汇总等。本文将针对结果过滤有效性的情况展开分析。 示例场景:一个接口需要对入参1000多个数据做测试…

JavaScript系列-数据类型

ES6变量类型 JavaScript编程语言中,变量类型分为基本变量类型和引用类型,两种变量类型的区别在于 基本类型变量值存放于栈中,引用类型变量值存放于堆中基本类型赋值给其他变量,是将其值复制过去引用类型赋值给其他变量&#xff…

为什么SpringBoot的jar可以直接运行

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…

AI 绘画 | Stable Diffusion 艺术二维码制作

前言 这篇文章教会你如果用Stable Diffusion WEB UI制作艺术二维码,什么是艺术二维码呢?就是普通二维码和艺术图片融合后的二维码图片,如下图所示。主要原理还是使用controlNet的control_v1p_sd15_qrcode_monster模型和光影模型control_v1p_sd15_brightness。 教程 准备…

第 9 部分 — 内存增强 Transformer 网络:数学见解

一、说明 在顺序数据处理领域,传统的 Transformer 架构擅长处理短期依赖性,但在需要大量内存和长序列上下文保留的任务中表现不佳。在这篇综合博客中,我打算探索一种新颖的混合方法,将 Transformer 与显式长期记忆模块集成在一起。…

最新Redis7持久化(权威出版)

首先我们要知道什么是持久化:持久化是指将数据保存到磁盘上,以确保在Redis服务器重启时数据不会丢失。 Redis支持两种主要的持久化方式:RDB持久化和AOF持久化 下面让我依次给你介绍一下: RDB持久化 作用 这是将Redis数据保存…

049:VUE 引入jquery的方法和配置

第049个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

Module build failed : Error : Vue packages version mismatch:

Vue packages version mismatch: - vue2.7.15 (E:\Workspace_ce\erp\erp-web\node_modules\vue\dist\vue.runtime.common.js) - vue-template-compiler2.6.11 (E:\Workspace_ce\erp\erp-web\node_modules\vue-template-compiler\package.json) 【问题解决了,我很不…

百科词条可以删除吗?如何删除自己的百度百科?

近日,小马识途营销顾问接到不少客户删除自己百科词条的咨询,有不少人自己并没有去建立百科词条,但是网上已经有了,有的信息不正确,甚至有的信息是负能量的,对当事人自己造成一定的困扰,所以寻求…

JAVA8新特性之函数式编程详解

JAVA8新特性之函数式编程详解 前言一、初步了解函数式接口二、 Lambda表达式2.1 概述2.2 lambda省略规则2.3 lambda省略常见实例2.4 lambda表达式与函数式接口 三、 Stream流3.1 stream流的定义3.2 Stream流的特点3.3 Stream流的三个步骤3.4 Stream 和 Collection 集合的区别&a…

Linux权限详解

Linux权限 文章目录 Linux权限一、root账号与普通账号二、Linux权限管理三、权限权值表示方法四、文件访问权限的设置方法五、粘滞位六、权限总结 前言: 我们在学习Linux的时候,我们知道在Linux下一切皆文件,而不同的文件对于不同的用户有不同…

119场双周赛复盘

这周没有打比赛&#xff0c;玩老头环乐&#xff08;玩物丧志&#xff09;&#xff0c; 所以是补题了 第一题 100130找到俩个数组中的公共元素 class Solution {public int[] findIntersectionValues(int[] nums1, int[] nums2) {HashMap<Integer,Integer>map1new Has…

深度优先遍历(DFS)

时间复杂度与深搜一致&#xff1b;

解决 Xshell 无法使用 root 账户远程登录 Linux 的问题

文章目录 问题描述问题原因解决办法 笔者出问题时的运行环境&#xff1a; Red Hat Enterprise Linux 9.2 x86_64 Xshell 7 问题描述 笔者在新安装的 Red Hat Enterprise Linux 中发现一个问题。在 RHEL 安装完之后&#xff0c;无法在 Xshell 中使用 root 账户远程登录此 Lin…

ReLU(Rectified Linear Unit)和Sigmoid激活函数

ReLU&#xff08;Rectified Linear Unit&#xff09;和Sigmoid都是神经网络中常用的激活函数。 特点&#xff1a; ReLU是一种简单而有效的激活函数。它对于正数部分直接返回输入&#xff0c;对于负数部分返回零。这种非线性转换有助于网络学习更复杂的表示。ReLU在许多深度学习…

【开源】基于JAVA语言的数字化社区网格管理系统

项目编号&#xff1a; S 042 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S042&#xff0c;文末获取源码。} 项目编号&#xff1a;S042&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、开发背景四、系统展示五、核心源码5…

scala变量与变量类型

1.6 变量与类型&#xff08;重点&#xff09;1.6.1 变量推断1.6.2 多变量定义1.6.3 var和val的区别 1.6.3.1 是否可变 1.6.3.2 延迟加载 1.6 变量与类型&#xff08;重点&#xff09; val修饰的变量&#xff0c;相当于Java中final修饰的变量; // 定义常量s1&#xff0c;使用…

阿里内部教程Jmeter 性能测试常用图表、服务器资源监控

性能测试常用图表 插件安装 步骤 1&#xff1a;安装插件管理器 在 Jmeter 官网上下载插件管理器 Plugins-manager-1.3.jar将 jar 包放入到 lib\ext 目录下重启 Jmeter&#xff0c;可以在选项下看到 Plugins Manager 选项 步骤 2&#xff1a;安装指定的插件 打开 Plugins Ma…

T曲线速度控制与S曲线速度控制

梯形速度控制曲线&#xff08;T曲线&#xff09; 所谓梯形速度曲线&#xff0c;也称为直线加减速或T型加减速。 其算法十分简易&#xff0c;规划周期耗时短&#xff0c;有利于缩减系统的连续运行时间&#xff0c;从而提高系统的运动控制速度&#xff0c;实施起来比较易&#x…

四元数,欧拉角,旋转矩阵,旋转向量

四元数&#xff0c;旋转矩阵&#xff0c;旋转向量&#xff0c;欧拉角 一、欧拉角 1、欧拉角是表达旋转的最简单的一种方式&#xff0c;形式上它是一个三维向量&#xff0c;其值分别代表物体绕坐标系三个轴(x,y,z轴&#xff09;的旋转角度&#xff0c;默认旋转正向为逆坐标轴逆…