Kafka分布式集群部署
1.集群规划
在hadoop01、hadoop02和hadoop03三个节点上部署Kafka。我安装的版本是kafka_2.11-2.1.0.tgz,下载地址:http://archive.apache.org/dist/kafka
2.解压安装
(1)解压Kafka安装包到/opt/modules/目录下
# 解压
[jiang@hadoop01 software]$ tar -zxvf kafka_2.11-2.1.0.tgz -C /opt/modules/
# 重命名
[jiang@hadoop01 modules]$ mv kafka_2.11-2.1.0 kafka-2.1.0
3.配置环境变量
编辑 profile
文件:
[jiang@hadoop01 ~]$ sudo vim /etc/profile
# 添加如下内容
export KAFKA_HOME=/opt/modules/kafka-2.1.0
export PATH=$PATH:$KAFKA_HOME/bin
使得配置的环境变量生效: source /etc/profile
4.修改配置
在 Kafka 安装目录下创建kafka-logs文件夹(用来存储分区信息的 ,不要把它与存放错误日志的目录混淆了,日志目录是配置在 `log4j.properties文件 里的 )
[jiang@hadoop01 kafka-2.1.0]$ mkdir kafka-logs
进入安装目录的 config/
目录下,修改配置文件server.properties
,找到对应数据进行修改:
# broker的全局唯一标识号,不能重复. 给集群中的每个broker配置一个不同的id
broker.id=1
# 分区数据的存储位置
log.dirs=/opt/software/kafka-2.1.0/kafka-logs
# 连接Zookeeper集群地址
zookeeper.connect=hadoop01:2181,hadoop02:2181,hadoop03:2181
5、分发安装包
分发之后需要修改 **broker.id( id 值一定不能重复. )**的值,同时建议其他节点的环境变量也配置下。
[jiang@hadoop01 modules]$ xsync kafka-2.1.0
xsync是一个分发脚本在Zookeeper分布式部署中有
6、启动集群
先启动zookeeper集群
[jiang@hadoop01 bin]$ zookeeper.sh start
再用kafka.sh 脚本启动kafka集群
[jiang@hadoop01 bin]$ kafka.sh start
kafka.sh脚本
#! /bin/bash
case $1 in
"start"){
for i in hadoop01 hadoop02 hadoop03
do
echo " -------- $i 正在启动 Kafka ......"
# 用于KafkaManager监控
ssh $i "source /etc/profile; nohup /opt/modules/kafka-2.1.0/bin/kafka-server-start.sh -daemon /opt/modules/kafka-2.1.0/config/server.properties "
done
echo " -------- Kafka 集群已启动完成!-------"
};;
"stop"){
for i in hadoop01 hadoop02 hadoop03
do
echo " -------- $1 正在停止Kafka -------"
ssh $i "source /etc/profile; /opt/modules/kafka-2.1.0/bin/kafka-server-stop.sh"
done
echo " -------- Kafka 集群已全部停止!-------"
};;
esac
赋予脚本执行权限:sudo chmod 777 kafka.sh
查看进程
[jiang@hadoop01 bin]$ xcall.sh jps
-------- hadoop01 ----------
5250 Jps
5178 Kafka
2318 QuorumPeerMain
-------- hadoop02 ----------
1990 QuorumPeerMain
3640 Kafka
3704 Jps
-------- hadoop03 ----------
3639 Kafka
3703 Jps
1998 QuorumPeerMain
已正常启动
7、验证
创建测试主题:
[jiang@hadoop01 kafka-2.1.0]$ bin/kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 3 --partitions 1 --topic jiang
#kafka-topics.sh 任何和 topic 相关的操作都使用这个命令
#--create 表示创建一个 topic
#--zookeeper 指明任意一个 zookeeper 服务器地址
#--replication-factor 表示每个 topic 的副本数. 注意: 副本数必须小于等于 kafka 集群的数量.
#--partitions 这个 topic 的分区的数量
#--topic 这个 topic 的名字.
创建完成后可以使用以下命令查看创建的主题信息:
[jiang@hadoop01 kafka-2.1.0]$ bin/kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 3 --partitions 1 --topic jiang
Created topic "jiang".
[jiang@hadoop01 kafka-2.1.0]$ bin/kafka-topics.sh --describe --zookeeper hadoop01:2181 --topic jiang
Topic:jiang PartitionCount:1 ReplicationFactor:3 Configs:
Topic: jiang Partition: 0 Leader: 2 Replicas: 2,1,3 Isr: 2,1,3
[jiang@hadoop01 kafka-2.1.0]$