一、环境
操作系统:CentOS6.9
软件版本:Zookeeper3.4.13,Kafka2.1.0
集群架构:
Node1:10.200.4.117(oracle02)
Node2:10.200.4.116(oracle03)
Node3:10.100.125.156(db01)
二、搭建kafka集群
kafka的使用依赖于Zookeeper,zk运行在jvm之上,所以要先安装JDK和Zookeeper。
1、安装JDK1.8(在所有Node操作)
安装方法见:https://blog.csdn.net/andyguan01_2/article/details/86701213
2、安装Zookeeper3.4.13(在所有Node操作)
这里没有用Kafka自带的zookeeper,所以需要单独安装,安装方法见:https://blog.csdn.net/andyguan01_2/article/details/86694080
3、下载Kafka安装文件(在Node1操作)
只需下载到Node1,在Node1上安装完成后,再复制安装文件到其他Node。
我用的是最新版Kafka2.1.0。打开以下网址:
http://kafka.apache.org/downloads.html
点击kafka_2.12-2.1.0.tgz链接,打开以下页面:
复制kafka_2.12-2.1.0.tgz的下载链接:
http://mirrors.shu.edu.cn/apache/kafka/2.1.0/kafka_2.12-2.1.0.tgz
在root用户下载安装文件:
cd /install_pack/
wget http://mirrors.shu.edu.cn/apache/kafka/2.1.0/kafka_2.12-2.1.0.tgz
4、安装Kafka
4.1 解压安装文件(在Node1操作)
在root用户解压安装文件至Kafka安装目录:
tar -zxvf /install_pack/kafka_2.12-2.1.0.tgz -C /u01/app
更改Kafka安装目录的所有者:(我这里是将Kafka安装在hadoop用户)
chown -R hadoop:hadoop /u01/app/kafka_2.12-2.1.0
4.2 添加环境变量(在所有Node操作)
在root用户下执行:
vi /etc/profile
在最后增加以下内容:
export KAFKA_HOME=/u01/app/kafka_2.12-2.1.0
export PATH=$PATH:$KAFKA_HOME/bin
使配置文件生效:
source /etc/profile
4.3 创建日志文件目录(在所有Node操作)
在root用户创建Kafka日志文件目录,并更改目录所有者。
mkdir -p /data/kafka_log
chown hadoop:hadoop /data/kafka_log
4.4 修改配置文件(在Node1操作)
在hadoop用户修改/u01/app/kafka_2.12-2.1.0/config/server.properties 配置文件,主要修改以下几项:
#给当前服务器指定一个id,多台服务器的这个值要设置成不一样的
broker.id=1
#日志文件所在目录
log.dirs=/data/kafka_logs/
#每个topic的分区数,可改可不改
num.partitions=1
#zookeeper集群的地址和端口,ip地址要和zookeeper配置文件zoo.cfg里面的server.1=x.x.x.x一致,端口号和里面的clientPort一致
zookeeper.connect=10.200.4.117:2181,10.200.4.116:2181,10.100.125.156:2181
vi /u01/app/kafka_2.12-2.1.0/config/server.properties
4.5 在Node2和Node3安装Kafka
复制Node1的Kafka安装目录到Node2和Node3。在Node1的hadoop用户下执行:
scp -r /u01/app/kafka_2.12-2.1.0 root@10.200.4.116:/u01/app
scp -r /u01/app/kafka_2.12-2.1.0 root@10.100.125.156:/u01/app
修改安装文件的所有者。在Node2和Node3的root用户下分别执行:
chown -R hadoop:hadoop /u01/app/kafka_2.12-2.1.0
分别在Node2和Node3修改配置文件/u01/app/kafka_2.12-2.1.0/config/server.properties,将broker.id=1中的1,分别改为2和3。(在hadoop用户)
vi /u01/app/kafka_2.12-2.1.0/config/server.properties
至此,Kafka在所有Node安装完成。
5、启动和停止服务(在所有Node操作)
5.1 启动服务
kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
启动后,使用jps命令查看jvm进程,发现多出一个Kafka:
5.2 创建Topic验证
在Node1创建一个Topic:
kafka-topics.sh --create --zookeeper 10.200.4.117:2181,10.200.4.116:2181,10.100.125.156:2181 --replication-factor 3 --partitions 4 --topic test_topic
参数说明:
–replication-factor 3 #复制3份
–partitions 4 #创建4个分区
–topic #主题为test_topic
在Node1查看Topic明细:
kafka-topics.sh --describe --zookeeper 10.200.4.117:2181 --topic test_topic
在Node1创建一个生产者:
kafka-console-producer.sh --broker-list 10.200.4.117:9092 -topic test_topic
在Node2创建一个消费者:
kafka-console-consumer.sh --bootstrap-server 10.200.4.117:9092 --topic test_topic
然后,在Node1输入字符,观察Node2上面的输出。
Node1输入字符:
Node2输出字符:
5.3 停止服务
kafka-server-stop.sh
完毕。