前置准备
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 为首领副本,此时代表集群已经搭建成功。