kafka windows 安装

1、jdk安装

    下载:http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

安装及环境变量配置,自行百度。

2、zookeeper安装

    下载:https://www.apache.org/dyn/closer.cgi/zookeeper/

2.1、解压到某个目录下(路径不要出现空格),例如:D:\ProgramFiles\zookeeper\zookeeper-3.4.12

2.2、修改配置文件

    a、D:\ProgramFiles\zookeeper\zookeeper-3.4.12\conf\zoo_sample.cfg重命名为zoo.cfg

    b、修改dataDir=/tmp/zookeeper  为  D:/ProgramFiles/zookeeper/zookeeper-3.4.12/tmp/zookeeper

    (路径仅为示例,具体可根据需要配置;路径要么是"/"分割,要么是转义字符"\\",这样会生成正确的路径(层级,子目录))

    c、Zookeeper端口(默认端口2181)

2.3、环境变量

    a、系统变量中添加ZOOKEEPER_HOME=D:\bigdata\zookeeper-3.4.10

    b、编辑系统变量中的path变量,增加%ZOOKEEPER_HOME%\bin

2.4、运行

打开cmd窗口,输入zkserver,运行Zookeeper

kafka windows 安装

Zookeeper已经安装完成,已在2181端口运行。

3、kafka安装

下载:http://kafka.apache.org/downloads,要下载Binary downloads这个类型,不要下载源文件,这种方便使用。

3.1、解压到某个目录下(路径不要出现空格),例如:D:\ProgramFiles\kafka\kafka_2.11-1.1.0

3.2、修改配置文件(D:\ProgramFiles\kafka\kafka_2.11-1.1.0\config\server.properties)

    a、修改log.dirs=/tmp/kafka-logs 为 D:/ProgramFiles/kafka/kafka_2.11-1.1.0/tmp/kafka-logs

     (路径仅为示例,具体可根据需要配置;路径要么是"/"分割,要么是转义字符"\\",这样会生成正确的路径(层级,子目录))

    b、kafka会按照默认配置,在9092端口上运行,并连接zookeeper的默认端口2181。

3.3、运行kafka

    请确保启动kafka服务器前,Zookeeper实例已经在运行,因为kafka的运行是需要zookeeper这种分布式应用程序协调服务。

    a、进入kafka安装目录,如:D:\ProgramFiles\kafka\kafka_2.11-1.1.0

    b、按下shift+鼠标右键,选择"在此处打开命令窗口",打开命令行。

    c、在命令行中输入:.\bin\windows\kafka-server-start.bat .\config\server.properties   回车。

kafka windows 安装

4、测试

.bat文件是为了在window系统上执行的文件,相对应的.sh文件是linux下的批处理文件。例如:startup.bat和startup.sh。

4.1、创建主题

    a、使用命令行手动或者向一个不存在的topic发送(生产)消息时都会新创建一个topic 

    向一个不存在的topic发送(生产)消息时新创建的topic时,其采用为默认的topic-config配置以及server.properties中的topic的配置。

    使用命令行手动创建一个topic可以使用 –config 选项配合topic-config配置中的信息来覆盖默认配置或者使用–delete-config来恢复默认配置。

    b、创建主题(1个分区,1个副本)

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

kafka windows 安装

主要参数说明

1. partitions分区数

(1). partitions :分区数,控制topic将分片成多少个log。可以显示指定,如果不指定则会使用broker(server.properties)中的num.partitions配置的数量 

(2). 虽然增加分区数可以提供kafka集群的吞吐量、但是过多的分区数或者或是单台服务器上的分区数过多,会增加不可用及延迟的风险。因为多的分区数,意味着需要打开更多的文件句柄、增加点到点的延时、增加客户端的内存消耗。 

(3). 分区数也限制了consumer的并行度,即限制了并行consumer消息的线程数不能大于分区数 

(4). 分区数也限制了producer发送消息是指定的分区。如创建topic时分区设置为1,producer发送消息时通过自定义的分区方法指定分区为2或以上的数都会出错的;这种情况可以通过alter –partitions 来增加分区数。

2. replication-factor副本

(1). replication factor 控制消息保存在几个broker(服务器)上,一般情况下等于broker的个数。 

(2). 如果没有在创建时显示指定或通过API向一个不存在的topic生产消息时会使用broker(server.properties)中的default.replication.factor配置的数量

4.2、查看topic属性

    bin/kafka-topics.bat --zookeeper zk1:2181 --describe --topic test0811

kafka windows 安装

结果说明:

第一行,列出了topic的名称,分区数(PartitionCount),副本数(ReplicationFactor)以及其他的配置(Configs) 
Leader:1 表示为做为读写的broker的编号 
Replicas:表示该topic的每个分区在那些borker中保存 
Isr:表示当前有效的broker, Isr是Replicas的子集

4.3、修改topic

 不能修改replication-factor,以及只能对partition个数进行增加,不能减少 

增加分区数

kafka-topics.bat --zookeeper localhost:2181 --alter --topic test0811 --partitions 3

删除Topic 

kafka-topics.sh --delete --topic test0811  --zookeeper localhost:2181 

目前删除操作在默认情况下只是打上一个删除的标记,在重新启动kafka 后才删除。

如果需要立即删除,则需要在server.properties中配置delete.topic.enable=true

4.4、创建生产者

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

4.5、创建消费者

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

# 新消费者(支持0.9版本+)

kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test0811 --new-consumer --from-beginning

(如果要最新的数据,可以不带--from-beginning参数即可)

附录:

kafka配置详解:https://blog.csdn.net/zhangjianjaEE/article/details/78124563

kafka命令大全:http://orchome.com/454