Kafka的安装及测试(Window)
What is Kafka?
- Kafka(http://kafka.apache.org)是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。kafka是一种高吞吐量的分布式发布订阅的消息队列系统,具有高性能和高吞吐率
基本术语
- Broker(代理)
Kafka集群包含一个或多个服务器,这种服务器被称为broker - Topic(主题)
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic(在物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处) - Partition(分区)
Partition是物理上的概念,每个Topic包含一个或多个Partition.(一般为kafka节点数cpu的总核数) - Producer(生产者)
负责发布消息到Kafka broker - Consumer(消费者)
从Kafka broker读取消息的客户端 - Consumer Group(消费者组)
每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的Group) - kafka结构图
环境部署
一、安装jdk
我们从上图中看到了Zookeeper,至于Zookeeper是什么我会在下一点简单介绍,Zookeeper的运行需要jdk支持,所以我们需要安装jdk,具体的安装过程本文这里不做详细介绍,可参考:Windows7/10下 JDK安装及环境配置
二、安装Zookeeper
- Zookeeper是什么
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。简单来说 Zookeeper 就是动物园管理员,他是用来管 hadoop(大象)、Hive(蜜蜂)、pig(小猪)的管理员, Apache Hbase 和 Apache Solr 的分布式集群都用到了 Zookeeper。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 - Kafka和Zookerper的关系
Kafka可以使用Zookeeper来实现集群的动态扩展,不需要更改客户端(producer和consumer)的配置。broker会在Zookeeper注册并保持相关的元数据(topic,partition信息等)更新。而客户端会在Zookeeper上注册相关的watcher。一旦Zookeeper发生变化,客户端能及时感知并作出相应调整。这样就保证了添加或去除broker时,各broker间仍能自动实现负载均衡。 - Zookeeper的安装
①到官网上下载安装包:Zookeeper官网地址
②选择合适的版本,如我这里选择的是 apache-zookeeper-3.5.7,其中包含两个文件
apache-zookeeper-3.5.7.tar.gz和apache-zookeeper-3.5.7-bin.tar.gz都下下来。
③解压这两个文件,解压后将apache-zookeeper-3.5.7-bin目录下的lib目录拷贝至apache-zookeeper-3.5.7主目录下,然后将apache-zookeeper-3.5.7\conf目录下的zoo_sample.cfg粘贴复制到同目录下并命名为zoo.cfg,打开zoo.cfg配置dataDir、dataLogDir的路径。
④配置系统环境变量,在Path后增加D:\SoftWare\Zookeeper\apache-zookeeper-3.5.7\bin - Zookeeper的测试
在windows中打开新的cmd窗口,输入zkServer命令启动,启动成功应该是这样的
注意:我们可以看到Zookeeper的默认端口是2181,这个端口我们可以在zoo.cfg进行修改。博主第一次安装启动测试的时候出现了如下的问题,最关键的问题是没有将apache-zookeeper-3.5.7-bin目录下的lib目录拷贝至apache-zookeeper-3.5.7主目录下,如果有小伙伴出现如下问题估计就是这里遗漏了哦。
三、安装Kafka
①到官网上下载安装包:Kafka官网地址。博主这里选择了Scala 2.12- kafka_2.12-2.4.0.tgz (asc, sha512) 版本,你要问我因为啥?哈哈,官方建议的。
②解压该文件至需要保存的目录,修改kafka_2.12-2.4.0\config目录下的server.properties文件中的log.dirs路径
③配置系统环境变量,在Path后增加D:\SoftWare\Kafka\kafka_2.12-2.4.0\bin\windows - Kafka的测试
①启动测试:在Kafka文件根目录D:\SoftWare\Kafka\kafka_2.12-2.4.0启动cmd,输入命令.\bin\windows\kafka-server-start.bat .\config\server.properties
,日志信息出现started(kafka.server.KafkaServer)
字样即代表启动成功。
注意:Kafka启动需要保持Zookeeper的cmd启动窗口不关闭。
②Topic的创建:保持Kafka的cmd启动窗口不关闭,在根目录另起一个cmd窗口,输入命令.\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic random
,日志信息出现Created topic random.
字样即代表创建成功。- 查看所有topic
.\bin\windows\kafka-topics.bat --zookeeper localhost:2181 --list
- 查看topic详细信息
.\bin\windows\kafka-topics.bat --zookeeper localhost:2181 --describe
- 查看所有topic
③Producer的创建:保持Kafka的cmd启动窗口不关闭,在根目录另起一个cmd窗口,输入命令.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic random
,日志信息出现>
字样即代表创建成功。
④Consumer的创建:保持Kafka的cmd启动窗口不关闭,在根目录另起一个cmd窗口,输入命令.\bin\windows\kafka-console-consumer.bat --zookeeper localhost:2181 --topic random
,日志信息出现zookeeper is not a recognized option
字样,这是因为新版本kafka中,–zookeeper这种启动方式已删除,我们需改为新版本支持的启动方式,输入命令.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic random --from-beginning
⑤生产消费的测试:在Producer的cmd窗口输入需要测试的信息,如 hello kafka,在Consumer的cmd窗口会自动出现对应的信息,代表测试成功。效果如下: