linux 下 kafka 和 zookeeper 单机开发测试环境配置
此文档的 kafka 和 zookeeper 部署在同一台 linux 机器上,没有做集群设置,先配置 zookeeper 再配置 kafka。主要用来开发和测试。
kafka 运行需要 JDK 支持,确保机器安装了 Java 环境,推荐版本 1.8。
Kafka 简介
Apache Kafka 是由 Apache 软件基金会开发的一个开源消息系统项目,由 Scala 写成。Kafka 最初是由 LinkedIn 开发,并于 2011 年初开源。2012 年 10 月从 Apache Incubator 毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。
Kafka 是一个分布式的、分区的、多复本的日志提交服务。它通过一种独一无二的设计提供了一个消息系统的功能。
术语
几个基本的消息系统术语:
- Kafka 将消息以 topic 为单位进行归纳
- 将向 Kafka topic 发布消息的程序成为 producers
- 将预订 topics 并消费消息的程序成为 consumer
- Kafka 以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个 broker
producers 通过网络将消息发送到 Kafka 集群,集群向消费者提供消息,如下图所示:
客户端和服务端通过 TCP 协议通信。Kafka 提供了 Java 客户端,并且对多种语言都提供了支持。
- Producer 即生产者,向 Kafka 集群发送消息,在发送消息之前,会对消息进行分类,即 Topic
- Topic 即主题,通过对消息指定主题可以将消息分类,消费者可以只关注自己需要的 Topic 中的消息
- Consumer 即消费者,消费者通过与 kafka 集群建立长连接的方式,不断地从集群中拉取消息,然后可以对这些消息进行处理。
功能及特性
Kafka 主要具有以下功能和特性:
- 高吞吐量、低延迟:kafka 每秒可以处理几十万条消息,它的延迟最低只有几毫秒
- 可扩展性:kafka 集群支持热扩展
- 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
- 容错性:允许集群中节点失败(若副本数量为 n,则允许 n-1 个节点失败)
- 高并发:支持数千个客户端同时读写
安装部署
- 将 zookeeper 和 kafka 的安装包上传至服务器,分别加压至
/opt/
目录。
root@Master:~/Downloads# ll
-rw-r--r-- 1 root root 55751827 7月 29 04:01 kafka_2.11-2.0.0.tgz
-rw-r--r-- 1 root root 35042811 6月 20 2017 zookeeper-3.4.10.tar.gz
root@Master:~/Downloads# tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/
root@Master:~/Downloads# tar -zxvf kafka_2.11-2.0.0.tgz -C /opt/
root@Master:~/
root@Master:~/Downloads# cd /opt/
root@Master:/opt# ll
总用量 88
drwxr-xr-x 22 root root 4096 11月 16 17:21 ./
drwxr-xr-x 23 root root 4096 9月 21 16:22 ../
drwxr-xr-x 6 root root 4096 7月 24 22:19 kafka_2.11-2.0.0/
drwxr-xr-x 11 root root 4096 1月 29 2018 zookeeper-3.4.10/
- 进入 zookeeper 的 conf 文件夹,执行命令
cp zoo_sample.cfg to zoo.cfg
,将自带的zoo_sample.cfg
复制一份并命名为zoo.cfg
(此名称不能修改)。
如下图:
- 在
/opt/zookeeper-3.4.10/
目录下新建文件夹data
和logs
,(mkdir data,mkdir logs)用来存放 zookeeper 保存的数据和日志
root@Master:/opt/zookeeper-3.4.10# mkdir data
root@Master:/opt/zookeeper-3.4.10# mkdir logs
如下图:
- 修改 zookeeper
conf
目录下的zoo.cfg
文件配置
配置 zookeeper 数据(dataDir
)和日志(dataLogDir
)存放目录,以及 zookeeper 服务的 IP 和端口(自定义一个配置项 server.170
)。
- 启动 zookeeper
切换到 zookeeper bin
目录下,执行启动命令 ./zkServer.sh start
即可启动服务,待服务启动后可通过命令(./zkServer.sh status
)查看 zookeeper 的状态。
配置 kafka
进入 kafka 目录,使用 mkdir logs
创建日志存储目录。
进入 kafka config
目录修改 server.properties
配置文件:
log.dirs=/opt/kafka_2.11-2.0.0/logs
zookeeper.connect=192.190.10.170:2180
启动 kafka 服务
后台启动加 -daemon
选项。
./bin/kafka-server-start.sh -daemon config/server.properties
kafka 服务默认端口 9092
,我们查看一下端口和进程,服务已经启动。
root@Master:/opt/kafka_2.11-2.0.0# netstat -antp | grep 9092
tcp6 0 0 :::9092 :::* LISTEN 17574/java
tcp6 0 0 192.190.10.170:9092 192.190.10.170:50372 ESTABLISHED 17574/java
tcp6 0 0 192.190.10.170:50372 192.190.10.170:9092 ESTABLISHED 17574/java