windows搭建kafka

一、安装

(1) kafka需要Java环境
(2) kafka 最新版本内置了 zookeeper,所以不需要安装zookeeper;
(3) 下载kafka最新版本,点击下载,因为下载的是tgz文件,所以不需要安装,解压到相应的地方就可以了(本文解压到C:\install\kafka)。
(4) bin 目录下放的是启动kafka的文件,conf目录下放的是kafka的各种配置文件。

二、运行

1. 启动zookeeper

(1) 用任意编辑器打开C:/install/kafka/config/zookeeper.properties, 默认端口是2181,修改dataDir保存路径

dataDir=C:/install/kafka/tmp/zookeeper

注意:路径要么是"/"分割,要么是转义字符"\\",这样会生成正确的路径(层级,子目录)。

(2) cmd执行命令:C:/install/kafka/bin/windows/zookeeper-server-start.bat C:/install/kafka/config/zookeeper.properties,不要关了这个cmd窗口。

2. 启动kafka

(1) 用任意编辑器打开C:/install/kafka/config/server.properties,将log.dirs=/tmp/kafka-logs更改为:

C:/install/kafka/tmp/kafka-logs

在server.properties文件中,zookeeper.connect=localhost:2181代表kafka所连接的zookeeper所在的服务器IP以及端口,可根据需要更改。本文在同一台机器上使用,故不用修改。
kafka会按照默认配置,在9092端口上运行,并连接zookeeper的默认端口2181。

(2) cmd执行命令:C:/install/kafka/bin/windows/kafka-server-start.bat C:/install/kafka/config/server.properties。

如果出现【'#' 不是内部或外部命令,也不是可运行的程序或批处理文件。命令无法不正确】的错误。

在kafka安装目录中找到bin\windows目录中的kafka-run-class.bat中,加" "号,如下:
修改前:
set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp %CLASSPATH% %KAFKA_OPTS% %*
修改后:
set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp "%CLASSPATH%" %KAFKA_OPTS% %*

(3) 日志处理

kafka启动后,在kafka安装目录下有个logs目录,里面默认生成一堆操作日志,而且会不断生成不同时间戳的操作日志,这样看起来很乱。这是因为启动的时候是会默认使用到config目录下log4j.properties文件中的配置。

找到cconfig下的log4j.properties,编辑log4j.properties,将路径更改下即可,这样就可以归档在一个文件夹下边了,路径根据自己喜好定义:

#log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log
log4j.appender.kafkaAppender.File=C:/install/kafka/tmp/kafka/start-logs/server.log

当以后再启动kafka时,会在kafka安装目录下创建start-logs目录,里面存放日志。
另外如何消除不断生成日志的问题,就是同一天的不同时间会不停生成。

#log4j.logger.kafka.controller=TRACE, controllerAppender
log4j.logger.kafka.controller=INFO, controllerAppender
log4j.additivity.kafka.controller=false

本身都为trace,字面理解为会生成一堆跟踪日志,将其改为INFO即可。

三、测试

1. 创建主题

① 创建主题,命名为"test20200519",replicationfactor=1(因为只有一个kafka服务器在运行)。可根据集群中kafka服务器个数来修改replicationfactor的数量,以便提高系统容错性等。

② 打开cmd,进入C:\install\kafka\bin\windows,执行:

kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test20200519

-- 查看创建的topic

kafka-topics.bat --list --zookeeper localhost:2181

2. 创建生产者(producer)和消费者(consumer)

① 启动生成者,cmd执行:

kafka-console-producer.bat --broker-list localhost:9092 --topic test20200519

-- cmd窗口不要关闭

② 启动消费者,cmd执行:

kafka-console-consumer.bat --zookeeper localhost:2181 --topic test20200519

-- cmd窗口不要关闭

③ 在生产者命令行窗口中任意输入内容,回车  在消费命令行窗口中即可看到相应的内容。

3. broker-list,bootstrap-server以及zookeeper

(1) broker指的是kafka的服务端,可以是一个服务器也可以是一个集群。producer和consumer都相当于这个服务端的客户端。

broker-list指定集群中的一个或者多个服务器,一般我们再使用console producer的时候,这个参数是必备参数,另外一个必备的参数是topic。

kafka-console-producer.bat --broker-list localhost:9092 --topic test20200519

本地主机如果要模拟多个broker,方法是复制多个server.properties,然后修改里面的端口, broker.id等配置模拟多个broker集群。

broker.id 用来唯一标识每一个 broker,每个broker都有一个唯一的id值用来区分彼此。Kafka在启动时会在zookeeper中/brokers/ids路径下创建一个与当前broker的id为名称的虚节点,Kafka的健康状态检查就依赖于此节点。

(2) bootstrap-servers指的是目标集群的服务器地址,这个和broker-list功能是一样的,只不过我们在console producer要求用后者。

以前我们使用console consumer测试消息收发时会这样写:

kafka-console-consumer.bat --zookeeper localhost:2181 --topic test20200519

现在我们也可以这样写:

kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test20200519

前者是老版本的用法,0.8以前的kafka,消费的进度(offset)是写在zk中的,所以consumer需要知道zk的地址。后来的版本都统一由broker管理,所以就用bootstrap-server了。

 

-- bootstrap-server还可以自动发现其它的broker。

猜你喜欢

转载自www.cnblogs.com/myitnews/p/12906682.html
今日推荐