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 集群,集群向消费者提供消息,如下图所示:

kafka-producer-consumer.png

客户端和服务端通过 TCP 协议通信。Kafka 提供了 Java 客户端,并且对多种语言都提供了支持。

  1. Producer 即生产者,向 Kafka 集群发送消息,在发送消息之前,会对消息进行分类,即 Topic
  2. Topic 即主题,通过对消息指定主题可以将消息分类,消费者可以只关注自己需要的 Topic 中的消息
  3. Consumer 即消费者,消费者通过与 kafka 集群建立长连接的方式,不断地从集群中拉取消息,然后可以对这些消息进行处理。

功能及特性

Kafka 主要具有以下功能和特性:

  • 高吞吐量、低延迟:kafka 每秒可以处理几十万条消息,它的延迟最低只有几毫秒
  • 可扩展性:kafka 集群支持热扩展
  • 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
  • 容错性:允许集群中节点失败(若副本数量为 n,则允许 n-1 个节点失败)
  • 高并发:支持数千个客户端同时读写

安装部署

  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/
  1. 进入 zookeeper 的 conf 文件夹,执行命令 cp zoo_sample.cfg to zoo.cfg,将自带的 zoo_sample.cfg 复制一份并命名为 zoo.cfg(此名称不能修改)。

如下图:

kafka-zookeeper-conf-dir.jpg

  1. /opt/zookeeper-3.4.10/ 目录下新建文件夹 datalogs,(mkdir data,mkdir logs)用来存放 zookeeper 保存的数据和日志
root@Master:/opt/zookeeper-3.4.10# mkdir data
root@Master:/opt/zookeeper-3.4.10# mkdir logs

如下图:

kafka-zookeeper-data-logs.jpg

  1. 修改 zookeeper conf 目录下的 zoo.cfg 文件配置

配置 zookeeper 数据(dataDir)和日志(dataLogDir)存放目录,以及 zookeeper 服务的 IP 和端口(自定义一个配置项 server.170)。

kafka-zookeeper-conf.jpg

  1. 启动 zookeeper

切换到 zookeeper bin 目录下,执行启动命令 ./zkServer.sh start 即可启动服务,待服务启动后可通过命令(./zkServer.sh status)查看 zookeeper 的状态。

kafka-zookeeper-server-start-status.jpg

配置 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
如果觉得这对你有用,请随意赞赏,给与作者支持
评论 0
最新评论