0


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

  1. rem 关闭命令提示符窗口的命令回显,这样在运行脚本时不会显示脚本的具体命令内容
  2. @echo off
  3. rem 命令行启动未提供参数则输出: USAGE:命令 zookeeper.properties 中止
  4. IF [%1] EQU [] (
  5. echo USAGE: %0 zookeeper.properties
  6. EXIT /B 1
  7. )
  8. rem 开始了一个局部环境,只在当前脚本执行过程中有效
  9. SetLocal
  10. rem 未设置值,则设置
  11. IF ["%KAFKA_LOG4J_OPTS%"] EQU [""] (
  12. set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%~dp0../../config/log4j.properties
  13. )
  14. IF ["%KAFKA_HEAP_OPTS%"] EQU [""] (
  15. set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M
  16. )
  17. rem %~dp0获取命令的文件路径,%* 读取执行这个命令携带的锁有参数
  18. "%~dp0kafka-run-class.bat" org.apache.zookeeper.server.quorum.QuorumPeerMain %*
  19. rem 在脚本中限定变量的作用范围,以防止对环境变量的更改影响到脚本之外的其他部分
  20. EndLocal

kafka-run-class.bat

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. IF [%1] EQU [] (
  4. echo USAGE: %0 classname [opts]
  5. EXIT /B 1
  6. )
  7. rem Using pushd popd to set BASE_DIR to the absolute path
  8. rem pushd表示切换目录,这里作用是切换到%~dp0对应的上2级目录
  9. pushd %~dp0..\..
  10. rem CD是系统变量,%CD%表示当前工作目录的路径
  11. set BASE_DIR=%CD%
  12. rem popd 切回原来的目录
  13. popd
  14. IF ["%SCALA_VERSION%"] EQU [""] (
  15. set SCALA_VERSION=2.13.11
  16. )
  17. rem 延迟环境变量扩展后的一种变量访问方式!var!
  18. IF ["%SCALA_BINARY_VERSION%"] EQU [""] (
  19. for /f "tokens=1,2 delims=." %%a in ("%SCALA_VERSION%") do (
  20. set FIRST=%%a
  21. set SECOND=%%b
  22. if ["!SECOND!"] EQU [""] (
  23. set SCALA_BINARY_VERSION=!FIRST!
  24. ) else (
  25. set SCALA_BINARY_VERSION=!FIRST!.!SECOND!
  26. )
  27. )
  28. )
  29. rem Classpath addition for kafka-core dependencies kafka核心依赖添加类路径
  30. rem for %%i in (...) do (...)这是一个 for 循环,用于遍历指定路径下满足特定条件的文件
  31. for %%i in ("%BASE_DIR%\core\build\dependant-libs-%SCALA_VERSION%\*.jar") do (
  32. rem
  33. call :concat "%%i"
  34. )
  35. rem Classpath addition for kafka-examples
  36. for %%i in ("%BASE_DIR%\examples\build\libs\kafka-examples*.jar") do (
  37. call :concat "%%i"
  38. )
  39. rem Classpath addition for kafka-clients
  40. for %%i in ("%BASE_DIR%\clients\build\libs\kafka-clients*.jar") do (
  41. call :concat "%%i"
  42. )
  43. rem Classpath addition for kafka-streams
  44. for %%i in ("%BASE_DIR%\streams\build\libs\kafka-streams*.jar") do (
  45. call :concat "%%i"
  46. )
  47. rem Classpath addition for kafka-streams-examples
  48. for %%i in ("%BASE_DIR%\streams\examples\build\libs\kafka-streams-examples*.jar") do (
  49. call :concat "%%i"
  50. )
  51. for %%i in ("%BASE_DIR%\streams\build\dependant-libs-%SCALA_VERSION%\rocksdb*.jar") do (
  52. call :concat "%%i"
  53. )
  54. rem Classpath addition for kafka tools kafka工具添加类路径
  55. for %%i in ("%BASE_DIR%\tools\build\libs\kafka-tools*.jar") do (
  56. call :concat "%%i"
  57. )
  58. for %%i in ("%BASE_DIR%\tools\build\dependant-libs-%SCALA_VERSION%\*.jar") do (
  59. call :concat "%%i"
  60. )
  61. rem 两层for循环
  62. for %%p in (api runtime file json tools) do (
  63. for %%i in ("%BASE_DIR%\connect\%%p\build\libs\connect-%%p*.jar") do (
  64. call :concat "%%i"
  65. )
  66. if exist "%BASE_DIR%\connect\%%p\build\dependant-libs\*" (
  67. call :concat "%BASE_DIR%\connect\%%p\build\dependant-libs\*"
  68. )
  69. )
  70. rem Classpath addition for release
  71. for %%i in ("%BASE_DIR%\libs\*") do (
  72. call :concat "%%i"
  73. )
  74. rem Classpath addition for core
  75. for %%i in ("%BASE_DIR%\core\build\libs\kafka_%SCALA_BINARY_VERSION%*.jar") do (
  76. call :concat "%%i"
  77. )
  78. rem JMX settings JMX的设置
  79. IF ["%KAFKA_JMX_OPTS%"] EQU [""] (
  80. set KAFKA_JMX_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
  81. )
  82. rem JMX port to use 使用的JMX端口
  83. IF ["%JMX_PORT%"] NEQ [""] (
  84. set KAFKA_JMX_OPTS=%KAFKA_JMX_OPTS% -Dcom.sun.management.jmxremote.port=%JMX_PORT%
  85. )
  86. rem Log directory to use 要使用的日志目录
  87. IF ["%LOG_DIR%"] EQU [""] (
  88. set LOG_DIR=%BASE_DIR%/logs
  89. )
  90. rem Log4j settings
  91. IF ["%KAFKA_LOG4J_OPTS%"] EQU [""] (
  92. set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%BASE_DIR%/config/tools-log4j.properties
  93. ) ELSE (
  94. rem create logs directory 创建一个目录文件夹
  95. IF not exist "%LOG_DIR%" (
  96. mkdir "%LOG_DIR%"
  97. )
  98. )
  99. set KAFKA_LOG4J_OPTS=-Dkafka.logs.dir="%LOG_DIR%" "%KAFKA_LOG4J_OPTS%"
  100. rem Generic jvm settings you want to add 要添加的通用jvm设置
  101. IF ["%KAFKA_OPTS%"] EQU [""] (
  102. set KAFKA_OPTS=
  103. )
  104. set DEFAULT_JAVA_DEBUG_PORT=5005
  105. set DEFAULT_DEBUG_SUSPEND_FLAG=n
  106. rem Set Debug options if enabled
  107. IF ["%KAFKA_DEBUG%"] NEQ [""] (
  108. IF ["%JAVA_DEBUG_PORT%"] EQU [""] (
  109. set JAVA_DEBUG_PORT=%DEFAULT_JAVA_DEBUG_PORT%
  110. )
  111. IF ["%DEBUG_SUSPEND_FLAG%"] EQU [""] (
  112. set DEBUG_SUSPEND_FLAG=%DEFAULT_DEBUG_SUSPEND_FLAG%
  113. )
  114. set DEFAULT_JAVA_DEBUG_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=!DEBUG_SUSPEND_FLAG!,address=!JAVA_DEBUG_PORT!
  115. IF ["%JAVA_DEBUG_OPTS%"] EQU [""] (
  116. set JAVA_DEBUG_OPTS=!DEFAULT_JAVA_DEBUG_OPTS!
  117. )
  118. echo Enabling Java debug options: !JAVA_DEBUG_OPTS!
  119. set KAFKA_OPTS=!JAVA_DEBUG_OPTS! !KAFKA_OPTS!
  120. )
  121. rem Which java to use
  122. IF ["%JAVA_HOME%"] EQU [""] (
  123. set JAVA=java
  124. ) ELSE (
  125. set JAVA="%JAVA_HOME%/bin/java"
  126. )
  127. rem Memory options
  128. IF ["%KAFKA_HEAP_OPTS%"] EQU [""] (
  129. set KAFKA_HEAP_OPTS=-Xmx256M
  130. )
  131. rem JVM performance options
  132. IF ["%KAFKA_JVM_PERFORMANCE_OPTS%"] EQU [""] (
  133. set KAFKA_JVM_PERFORMANCE_OPTS=-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true
  134. )
  135. IF not defined CLASSPATH (
  136. echo Classpath is empty. Please build the project first e.g. by running 'gradlew jarAll'
  137. EXIT /B 2
  138. )
  139. rem %?% 读取环境变量
  140. set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp "%CLASSPATH%" %KAFKA_OPTS% %*
  141. rem echo.
  142. rem echo %COMMAND%
  143. rem echo.
  144. %COMMAND%
  145. rem 将控制权转移到脚本的文件尾
  146. goto :eof
  147. :concat
  148. rem 这是一个条件语句,用于检查CLASSPATH环境变量是否已定义
  149. IF not defined CLASSPATH (
  150. set CLASSPATH="%~1"
  151. ) ELSE (
  152. set CLASSPATH=%CLASSPATH%;"%~1"
  153. )

启动失败日志

缺少启动参数

在这里插入图片描述

输入行太长

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

找不到类

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

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

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

在这里插入图片描述

先对路径无法启动

  1. ./bin/windows/zookeeper-server-start.bat ./bin/windows/zookeeper.properties
  2. /bin/windows/zookeeper-server-start.bat /bin/windows/zookeeper.properties
  3. bin/windows/zookeeper-server-start.bat bin/windows/zookeeper.properties

在这里插入图片描述

启动成功

1. 启动zookeeper

  1. # 当前路径下启动
  2. zookeeper-server-start.bat ../../config/zookeeper.properties
  3. # 将文件复制一份到启动命令处
  4. zookeeper-server-start.bat zookeeper.properties
  5. # 绝对路径启动
  6. /kafka_2.13-3.6.1/bin/windows/zookeeper-server-start.bat /kafka_2.13-3.6.1/bin/windows/zookeeper.properties
  7. /kafka_2.13-3.6.1/bin/windows/zookeeper-server-start.bat /kafka_2.13-3.6.1/config/zookeeper.properties
  8. # Window使用相对路径 系统找不到指定的路径
  9. /bin/windows/zookeeper-server-start.bat /bin/config/zookeeper.properties
  10. /kafka_2.13-3.6.1/bin/windows/zookeeper-server-start.bat /kafka_2.13-3.6.1/bin/config/zookeeper.properties
  11. # 相对路径启动
  12. call ./bin/windows/zookeeper-server-start.bat ./config/zookeeper.properties
  13. call ./bin/windows/zookeeper-server-start.bat ./bin/windows/zookeeper.properties

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

3.启动kafka-server

  1. # 当前路径下启动 将文件复制一份到启动命令处
  2. kafka-server-start.sh config/server.properties
  3. # 其他方式启动同上

在这里插入图片描述

标签: windows kafka

本文转载自: https://blog.csdn.net/weixin_47748878/article/details/134900095
版权归原作者 org0610 所有, 如有侵权,请联系我们删除。

“Windows安装kafka”的评论:

还没有评论