赞
踩
安装jdk1.8,并且配置环境变量
下载:https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/
1、解压Zookeeper安装包到指定目录,注意目录不要有空格。
2、Zookeeper安装目录下创建文件夹data
3、进入config目录,复制zoo_sample.cfg文件,改名为zoo.cfg
4、修改配置文件 zoo.cfg
把dataDir=/tmp/zookeeper
修改为:
dataDir=D:\\bigdata\\zookeeper\\3.6.4\\data
注意:此处的路径一定要使用双斜杠" \ "
5、添加Zookeeper的系统变量,新建环境变量:ZOOKEEPER_HOME
6、环境变量Path添加%ZOOKEEPER_HOME%\bin
7、启动Zookeeper服务:zkServer,以管理员权限打开命令窗口,输入:zkServer
8、客户端连接Zookeeper:zkCli,以管理员权限打开命令窗口,输入:zkCli
官网下载地址:
https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.msi
各个版本下载地址:https://www.scala-lang.org/download/all.html
1.点击 scala-2.11.12.msi 文件安装,本地点击msi文件安装
2.新增环境变量 SCALA_HOME
3.配置path
%SCALA_HOME%\bin
4.验证安装是否成功
https://kafka.apache.org/downloads
1、解压Kafka安装包到安装目录
2、Kafka安装目录下新建目录logs
3、修改Kafka配置文件 config/server.properties
3.1、修改 log.dirs 参数,修改 log.dirs 参数值,修改成上一步新建的logs文件夹。注意文件夹路径中是双左斜杠
3.2、修改 listeners 参数,listeners=PLAINTEXT://localhost:9092
3.3、修改zookeeper连接地址: zookeeper.connect=localhost:2181
4、Kafka启动,由于Kafka依赖于Zookeeper,所以要先启动Zookeeper,再启动Kafka。
4.1、如果出现报错:输入行太长。命令语法不正确,解决方式:将kafka文件所在的文件夹,直接放在某个盘符的根目录下启动,造成上面报错的原因是因为目录层级结构嵌套的太深
4.2、启动kafka,切换道bin的上层目录 .\bin\windows\kafka-server-start.bat .\config\server.properties
4.3、关闭kafka .\bin\windows\kafka-server-stop.bat
至此kafka的安装完成
注意事项:Kafka2.2之后版本中使用–zookeeper 会出现报错情况,2.2之后的版本使用了–bootstrap-server 来替换–zookeeper
//根目录下执行
.\bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 3 --topic test
解释参数值:
副本因子(replication-factor):1
分区:3
解释:
Partition主题分区数:
kafka通过分区策略,将不同的分区分配在一个集群中的broker上,一般会分散在不同的broker上,当只有一个broker时,所有的分区就只分配到该Broker上。消息会通过负载均衡发布到不同的分区上,消费者会监测偏移量来获取哪个分区有新数据,从而从该分区上拉取消息数据。分区数越多,在一定程度上会提升消息处理的吞吐量,因为kafka是基于文件进行读写,因此也需要打开更多的文件句柄,也会增加一定的性能开销。如果分区过多,那么日志分段也会很多,写的时候由于是批量写,其实就会变成随机写了,随机 I/O 这个时候对性能影响很大。所以一般来说 Kafka 不能有太多的 Partition。
Push vs. Pull
作为一个messaging system,Kafka遵循了传统的方式,选择由producer向broker push消息并由consumer从broker pull消息。事实上,push模式和pull模式各有优劣。
push模式很难适应消费速率不同的消费者,因为消息发送速率是由broker决定的。push模式的目标是尽可能以最快速度传递消息,但是这样很容易造成consumer来不及处理消息,典型的表现就是拒绝服务以及网络拥塞。而pull模式则可以根据consumer的消费能力以适当的速率消费消息。
Topic & Partition
Topic在逻辑上可以被认为是一个queue,每条消息都必须指定它的topic,可以简单理解为必须指明把这条消息放进哪个queue里。为了使得Kafka的吞吐率可以水平扩展,物理上把topic分成一个或多个partition,每个partition在物理上对应一个文件夹,该文件夹下存储这个partition的所有消息和索引文件。
//根目录下执行
.\bin\windows\kafka-topics.bat --bootstrap-server localhost:9092 --list
//根目录下执行
.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test
//根目录下执行
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
//根目录下执行
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --group group1
//根目录下执行
.\bin\windows\kafka-consumer-groups.bat -bootstrap-server localhost:9092 --list
//根目录下执行
.\bin\windows\kafka-consumer-groups.bat -bootstrap-server localhost:9092 --describe --group group1
//根目录下执行
.\bin\windows\kafka-consumer-groups.bat -bootstrap-server localhost:9092 --describe --all-groups
//根目录下执行
.\bin\windows\kafka-consumer-groups.bat -bootstrap-server localhost:9092 --describe --all-groups --members
//根目录下执行
.\bin\windows\kafka-consumer-groups.bat -bootstrap-server localhost:9092 --describe --members --group group1
//根目录下执行
//创建主题
.\bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 3 --topic topic01
//创建生产者
.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic topic01
//创建消费者组1
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic topic01 --group group1
//创建消费者组2
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic topic01 --group group2
结论:每次生产者发送的消息,都会分发给两个消费者组
下载地址:https://github.com/redpanda-data/console
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。