前置准备

Kafka集群需要Zookeeper集群来进行管理,需要预先安装

一、概述

Kafka 由LinkedIn(领英)​​全球职场社交平台​​公司开发,贡献给Apache成为顶级项目,是一个分布式的流平台。它具有以下特点:


  • 支持消息的发布和订阅,类似于 RabbtMQ、ActiveMQ 等消息队列;
  • 支持数据实时处理;
  • 能保证消息的可靠性投递;
  • 支持消息的持久化存储,并通过多副本分布式的存储方案来保证消息的容错;
  • 高吞吐率,单 Broker 可以轻松处理数千个分区以及每秒百万级的消息量。

二、搭建

1.1 下载

下载对应版本 Kafka,这里我下载的最新稳定版本 ​​2.4.1​​​。

这里解释一下 kafka 安装包的命名规则:以 ​​kafka_2.11-2.4.1.tgz​​ 为例,前面的 2.11 代表 Scala 的版本号(Kafka 采用 Scala 语言进行开发),后面的 2.4.1 则代表 Kafka 的版本号。


1.2 解压

[xiaokang@hadoop01 ~]$ tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/software/
#重命名
[xiaokang@hadoop01 software]$ mv /opt/software/kafka_2.11-2.4.1/ /opt/software/kafka-2.4.1

1.3 配置环境变量

编辑 ​​profile​​ 文件:

[xiaokang@hadoop01 ~]$ sudo vim /etc/profile

在原来基础上更新配置环境变量:

export KAFKA_HOME=/opt/software/kafka-2.4.1
export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZOOKEEPER_HOME}/bin:${HIVE_HOME}/bin:${HBASE_HOME}/bin:${KYLIN_HOME}/bin:${KAFKA_HOME}/bin:$PATH

使得配置的环境变量生效:

[xiaokang@hadoop01 ~]$ source /etc/profile

1.4 修改配置

在 Kafka 安装目录下创建​​kafka-logs​​​文件夹(用来存储分区信息的,不要把它与存放错误日志的目录混淆了,日志目录是配置在 ​​log4j.properties​​ 文件 里的)

[xiaokang@hadoop01 ~]$ mkdir /opt/software/kafka-2.4.1/kafka-logs

进入安装目录的 ​​config/​​​ 目录下,修改配置文件​​server.properties​​:

# broker的全局唯一标识号,不能重复. 给集群中的每个broker配置一个不同的id
broker.id=0
# 分区数据的存储位置
log.dirs=/opt/software/kafka-2.4.1/kafka-logs
# 连接Zookeeper集群地址
zookeeper.connect=hadoop01:2181,hadoop02:2181,hadoop03:2181

1.5 分发安装包

分发之后需要修改 **broker.id( id 值一定不能重复. )**的值,同时建议其他节点的环境变量也配置下。

[xiaokang@hadoop01 ~]$ scp -r /opt/software/kafka-2.4.1/ xiaokang@hadoop02:/opt/software
[xiaokang@hadoop01 ~]$ scp -r /opt/software/kafka-2.4.1/ xiaokang@hadoop03:/opt/software

1.6 启动

使用下面命令启动即可:

#先启动3个节点的zookeeper
zkServer.sh start
#再启动3个节点的kafka
kafka-server-start.sh /opt/software/kafka-2.4.1/config/server.properties

1.7 验证

创建测试主题:

[xiaokang@hadoop01 ~]$ kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 3 --partitions 1 --topic xiaokang

#kafka-topics.sh 任何和 topic 相关的操作都使用这个命令
#--create 表示创建一个 topic
#--zookeeper 指明任意一个 zookeeper 服务器地址
#--replication-factor 表示每个 topic 的副本数. 注意: 副本数必须小于等于 kafka 集群的数量.
#--partitions 这个 topic 的分区的数量
#--topic 这个 topic 的名字.

创建完成后可以使用以下命令查看创建的主题信息:

[xiaokang@hadoop01 ~]$ kafka-topics.sh --describe --zookeeper hadoop01:2181 --topic xiaokang

可以看到分区 0 的有 0,1,2 三个副本,且三个副本都是可用副本,都在 ISR(in-sync Replica 同步副本) 列表中,其中 2 为首领副本,此时代表集群已经搭建成功。