kafka学习之(一)基础知识和环境搭建
Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。
Apache Kafka与传统消息系统相比,有以下不同:
-
它被设计为一个分布式系统,易于向外扩展;
-
它同时为发布和订阅提供高吞吐量;
-
它支持多订阅者,当失败时能自动平衡消费者;
-
它将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序。
优缺点
1.优点
- 高性能和高吞吐率
- 支持消息无限堆积,消息存储在磁盘上,存取复杂度为O(1)
- 支持多分区,同一个partition内保证消息顺序
- 分布式,易于扩展
2.缺点
- Kafka不保证严格的消息顺序。
- 消息可能有丢失,broker没有副本机制,一旦broker宕机,该broker的消息将都不可用。
- 没有消息确认机制,哪些消息已消费需由consumer维护
1,安装kafka前先安装zoo keeper
安装 kafka
下载地址:https://kafka.apache.org/downloads
wget http://mirrors.shuosc.org/apache/kafka/1.0.0/kafka_2.11-1.0.0.tgz
windows注意下载binary版本
下载时注意kafka版本和是否支持jdk版本
解压:
tar -zxvf kafka_2.11-1.0.0.tgz
cd /usr/local/kafka_2.11-1.0.0/
修改 kafka-server 的配置文件
vim /usr/local/kafka/config/server.properties
修改其中的:修改 config/server.properties文件(多节点的话,每个节点都修改一下)
broker.id=1
log.dir=/data/kafka/logs-1
![]()
上面的端口必须放开,并且写你的真实IP地址
1、启动 zk
使用安装包中的脚本启动单节点 Zookeeper 实例:
bin/zkServer.sh -daemon config/zookeeper.properties
2.查看zookeeper状态
./zkServer.sh status
3.使用 kafka-server-start.sh 启动 kafka 服务:
启动 ./kafka-server-start.sh ../config/server.properties

表示kafka启动成功
5,bin目录创建test
./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
6,查看有哪些topic bin目录下
./kafka-topics.sh --list --zookeeper localhost:2181
7,查看某一个topic数据:
./kafka-console-producer.sh --broker 192.168.1.32:9092 --topic test
8,使用 kafka-console-producer.sh 发送消息:

9,使用 kafka-console-consumer.sh 接收消息并在终端打印:

10、查看描述 topics 信息
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test

第一行给出了所有分区的摘要,每个附加行给出了关于一个分区的信息。 由于我们只有一个分区,所以只有一行。
“Leader”: 是负责给定分区的所有读取和写入的节点。 每个节点将成为分区随机选择部分的领导者。
“Replicas”: 是复制此分区日志的节点列表,无论它们是否是领导者,或者即使他们当前处于活动状态。
“Isr”: 是一组“同步”副本。这是复制品列表的子集,当前活着并被引导到领导者。
kafka自启动:
cd /etc/rc.d/init.d
touch kafka
chmod +x kafka
chkconfig --add kafka 添加到服务器中
chkconfig kafka on 设置开机自动启动
#!/bin/bash #chkconfig:2345 30 80 #description:kafka #processname:kafka case $1 in start) su root /usr/local/kafka_2.11-0.9.0.1/bin/kafka-server-start.sh /usr/local/kafka_2.11-0.9.0.1/config/server.properties;; stop) su root /usr/local/kafka_2.11-0.9.0.1/bin/kafka-server-stop.sh /usr/local/kafka_2.11-0.9.0.1/config/server.properties;; *) echo "require start|stop" ;; esac
常用命令
/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties&
关闭kafka(关闭机器以前,一定要使用此命令来关闭kafka以后再进行关闭,否则启动时,有丢失队列中数据的风险)
/usr/local/kafka/bin/kafka-server-stop.sh
创建topic
Windows平台kafka环境的搭建
ZooKeeper服务命令: ZooKeeper学习总结
在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进行服务的相关操作
- 1. 启动ZK服务: sh bin/zkServer.sh start
- 2. 查看ZK服务状态: sh bin/zkServer.sh status
- 3. 停止ZK服务: sh bin/zkServer.sh stop
- 4. 重启ZK服务: sh bin/zkServer.sh restart
检测zookeeper是否启动:echo ruok | nc localhost 2181
Kafka集群配置---Windows版
查看某一个topic数据:
./kafka-list-topic.sh-zookeeper 127.0.0.1:2181,127.0.0.1:2181-topic ThirdCaptureAccess
./kafka-console-producer.sh --broker 192.168.1.32:9092 --topic ThirdCaptureAccess
./kafka-topics.sh --create --zookeeper 192.168.1.32:2181 --replication-factor 1 --partitions 1 --topic ThirdCaptureAccess
./kafka-console-consumer.sh --zookeeper 192.168.1.32:2181 --topic ThirdCaptureAccess
./kafka-console-consumer.sh --zookeeper 192.168.1.32:2181 --topic Capture
-
查看topic分布情况kafka-list-topic.sh:
bin/kafka-list-topic.sh-zookeeper 192.168.197.170:2181,192.168.197.171:2181 (列出所有topic的分区情况)
bin/kafka-list-topic.sh-zookeeper 192.168.197.170:2181,192.168.197.171:2181-topic test (查看test的分区情况)
-
创建topickafka-create-topic.sh:
bin/kafka-create-topic.sh-replica 2-partition 8-topic test-zookeeper 192.168.197.170:2181,192.168.197.171:2181
创建名为test的topic,8个分区分别存放数据,数据备份总共2份。

浙公网安备 33010602011771号