kafka windows安装及测试

一。安装zookeeper 伪集群

此处不采用kafka安装包自带的zookeeper,而是自己独立安装zookeeper。
zookeeper 版本:zookeeper-3.4.11.tar.gz。
1.将zookeeper-3.4.11.tar.gz解压缩到目录 D:\Program Files\zookeeper-3.4.11\zookeeper-1
2.进入zookeeper-1, 新建目录 tmp/data, tmp/log。
3.配置zoo.cfg和日志设置
conf目录,拷贝zoo_sample.cfg 到 文件 zoo.cfg.
修改conf\zoo.cfg:

# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=D:\\Program Files\\zookeeper-3.4.11\\zookeeper-1\\tmp\\data
#事务日志路径,默认值为dataDir
dataLogDir=D:\\Program Files\\zookeeper-3.4.11\\zookeeper-1\\tmp\\log
# the port at which the clients will connect
clientPort=2181
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

修改bin\zkEnv.cmd: 设置日志路径及日志相关属性。注意:REM 是注解

REM set ZOO_LOG_DIR=%~dp0%..
set ZOO_LOG_DIR=%~dp0%..\log
REM set ZOO_LOG4J_PROP=INFO,CONSOLE
set ZOO_LOG4J_PROP=INFO,CONSOLE,ROLLINGFILE

因为此处设置的值会覆盖log4j.properties中的一些属性,如:zookeeper.root.logger,zookeeper.log.dir

4. zookeeper1/tmp/data 目录下新建文件: myid 。内容为 1 ,与 server.1 对应。
5. 拷贝 zookeeper1 zookeeper2 zookeeper3
修改配置文件 zoo.cfg:
Zookeeper2 zoo.cfg:
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=D:\\Program Files\\zookeeper-3.4.11\\zookeeper-2\\tmp\\data
#事务日志路径,默认值为dataDir
dataLogDir=D:\\Program Files\\zookeeper-3.4.11\\zookeeper-2\\tmp\\log
# the port at which the clients will connect
clientPort=2182
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
 
Zookeeper3 zoo.cfg:
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=D:\\Program Files\\zookeeper-3.4.11\\zookeeper-3\\tmp\\data
#事务日志路径,默认值为dataDir
dataLogDir=D:\\Program Files\\zookeeper-3.4.11\\zookeeper-3\\tmp\\log
# the port at which the clients will connect
clientPort=2183
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
 
修改 zookeeper2 myid 文件内容为‘ 2 ’, zookeeper3 myid 文件内容为‘ 3 ’。
6. 启动 zookeeper
Zookeeper1: bin/zkServer.cmd
Zookeeper2: bin/zkServer.cmd
Zookeeper3: bin/zkServer.cmd
7. 查看 zookeeper 状态: jps
8. 测试 znode
1 )连接一个 zookeeper 服务节点:  bin/zkCli.cmd 或者  bin/zkCli.cmd -server 127.0.0.1: 2182 指定具体某个服务节点。
2 )查询现有 znodes ls /
3 )新增 znode create /testNode helloworld Created /testNode
4 )新增 znode 成功后,会发现另外两个 zookeeper 中也相应的增加了 /testNode 节点。



二。安装kafka伪集群

kafka版本:kafka_2.11-1.0.0.tgz

1.将kafka_2.11-1.0.0.tgz解压缩到D:\Program Files\kafka_2.11-1.0.0\broker-1

2.配置server.properties
将相关属性设为以下值:
#broker.id=0
broker.id=1
delete.topic.enable=true
listeners=PLAINTEXT://:9092
# kafa 数据存放地址
log.dirs=D:\\data\\kafka\\broker-1
#zookeeper集群地址
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183

3.修改bin\windows\kafka-run-class.bat: 设置日志文件路径
set LOG_DIR="d:\\logs\\kafka\\broker-1"

备注:log.dirs 和 LOG_DIR对应的目录可以不用手动生成,kafka会自动生成。

4. 拷贝broker-1 到 broker-2,broker-3
修改对应的配置文件

broker-2 :
server.properties文件:
#broker.id=0
broker.id=2
delete.topic.enable=true
listeners=PLAINTEXT://:9093
# kafa 数据存放地址
log.dirs=D:\\data\\kafka\\broker-2
#zookeeper集群地址
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183

bin\windows\kafka-run-class.bat 文件:
set LOG_DIR="d:\\logs\\kafka\\broker-2"

broker-3 :
server.properties文件:
#broker.id=0
broker.id=3
delete.topic.enable=true
listeners=PLAINTEXT://:9094
# kafa 数据存放地址
log.dirs=D:\\data\\kafka\\broker-3
#zookeeper集群地址
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183

bin\windows\kafka-run-class.bat 文件:
set LOG_DIR="d:\\logs\\kafka\\broker-3"

5.启动 kafka
broker-1: bin\windows\kafka-server-start.bat config\server.properties
broker-2: bin\windows\kafka-server-start.bat config\server.properties
broker-3: bin\windows\kafka-server-start.bat config\server.properties

启动后此时通过zookeeper客户端链接任何一个zookeeper服务端,查看 该zookeeper服务端下的znode节点:ls /,会发现多出了一个brokers 节点。
 

      

之所以任何一个zookeeper服务端的内容都一样,这是因为zookeeper会对任何一个zookeeper服务端执行相同的写操作。这是zookeeper的特性。

6. 测试topic
任选一个broker(即kafka设备) 执行新增topic的命令。此处我们通过broker-2新增一个复制因子为2的topic:



此时,连接任何一个zookeeper服务端查看:


会发现zookeeper服务端中保存了kafka的topic信息。

查看topic的信息:


"leader":该节点负责所有指定分区的读和写,每个节点的领导都是随机选择的。
"replicas":备份的节点,无论该节点是否是leader或者目前是否还活着,只是显示。
"isr":备份节点的集合,也就是活着的节点集合。

从中可以看出,my-replicated-topic 是作用在 broker-1和broker-2设备上,因为复制因子是2,所以只在2各设备上保存该topic的数据。
我们查看在broker-1的数据存储目录D:\data\kafka\broker-1下会发现新增的文件夹:my-replicated-topic-0,该文件下就是保存my-replicated-topic 这个topic的所有数据。
同样broker-2的数据存储目录下也有一样的文件夹!而broker-3设备则没有。

备注:其实 在连接zookeeper服务器的时候,只需要写一个zookeeper服务器地址就可以,因为zookeeper会对所有zookeeper服务器进行相同的写操作。而通常要写所有的zookeeper服务器地址是因为防止其中有的服务器链接失败的i情况。

7. 测试发布信息和消费信息
发布信息:


消费消息:


备注: 发布消息时,--broker-list 可以列出所有的broker,也可以只列个别,甚至列出的broker可以不是该topic保存数据所在的设备,比如此处可以只设为 localhost:9094, 即broker3,my-replicated-topic 的数据只保存在broker1和broker2,但此处也能正常发送消息。猜想这些是通过broker中设置的zookeerper列表进行连接的,所以可以任何一个可以连接到zookeeper的broker。

同样 消费信息时,--zookeeper 可以设置多个zookeeper服务地址,也可以只设置部分或一个,建议设置所有的zookeeper服务地址。

我们现在测试备份的功能:
my-replicated-topic 现在的leader是1,机broker-1负责my-replicated-topic的分区的读写。

现在停掉broker-1,我们再看下效果:


leader 变为了2。Isr 也由1,2变为了2,表示现在broker1已经不在同步备份集合里了。
但是消费还是能正常进行,因为broker-2中有备份数据:



    



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值