一、Kafka简介
Apache Kafka是分布式发布-订阅消息系统,在 kafka官网上对 kafka 的定义:一个分布式发布-订阅消息传递系统。 它最初由LinkedIn公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。Kafka并没有遵循JMS规范,它只提供了发布和订阅通讯方式。
kafka中文官网:http://kafka.apachecn.org/quickstart.html
二、Kafka相关名称
- Broker:Kafka节点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群
- Topic:一类消息,消息存放的目录即主题,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能够同时负责多个topic的分发
- massage: Kafka中最基本的传递对象。
- Partition:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列
- Segment:partition物理上由多个segment组成,每个Segment存着message信息
- Producer : 生产者,生产message发送到topic
- Consumer : 消费者,订阅topic并消费message, consumer作为一个线程来消费
- Consumer Group:消费者组,一个Consumer Group包含多个consumer
- Offset:偏移量,理解为消息partition中的索引即可
三、Zookeeper集群搭建
由于Kafka依赖于Zk,因此搭建Kafka环境需先搭建Zk集群环境。
主机 | ip |
---|---|
主机一 | 192.168.159.128 |
主机二 | 192.168.159.129 |
主机三 | 192.168.159.130 |
- 下载Zookpper
https://download.csdn.net/download/qq_43692950/13451478
将下载后的Zookpeer上传至每台服务器。
- 解压安装包
tar -zxvf zookeeper-3.4.10.tar.gz
- 在解压后zookeeper-3.4.10目录下新建data目录,并新建myid,里面内容填写当前主机id,我是三台服务器的集群,id就为0,1,2
mkidr data
cd data
nano myid
- 将zookeeper-3.4.10/conf下的zoo_sample.cfg重命名为zoo.cfg。
修改内容:
dataDir=/home/kafka/zookeeper/zookeeper-3.4.10/data
#这个地方的路径就是上面创建data文件夹的地址。根据自己的实际地址填写。
并在文本最后添加节点信息:
server.0=192.168.159.128:2888:3888
server.1=192.168.159.129:2888:3888
server.2=192.168.159.130:2888:3888
其中server.后的数字便是约定该服务器的id。
-
每台服务器上都进行上面配置,唯一不同的为data/myid 里的内容不一致,根据server.id 的id对应每台服务器填写。
-
释放端口
firewall-cmd --zone=public --add-port=2888/tcp --permanent&firewall-cmd --reload
firewall-cmd --zone=public --add-port=3888/tcp --permanent&firewall-cmd --reload
- 进入zookeeper-3.4.10/bin下启动zookeeper
./zkServer.sh start
- 查看zookeeper启动状态
./zkServer.sh status
其中 follower 代表从节点,leader代表主节点。
- 重启zookeeper
./zkServer.sh restart
四、KafKa集群搭建
- 下载Kafka
https://download.csdn.net/download/qq_43692950/13451449
将下载好的kafka包,上传至每个节点服务器。
- 解压安装包
tar -zxvf kafka_2.12-2.6.0.tgz
- 修改kafka_2.12-2.6.0/config/server.properties文件
修改broker.id
#对应上面配置zk的每台节点的id
broker.id=0
修改listeners
#本机主机的ip
listeners=PLAINTEXT://192.168.159.128:9092
修改zookeeper.connect
#每个节点的信息
zookeeper.connect=192.168.159.128:2181,192.168.159.129:2181,192.168.159.130:2181
- 释放端口
firewall-cmd --zone=public --add-port=2181/tcp --permanent&firewall-cmd --reload
firewall-cmd --zone=public --add-port=9092/tcp --permanent&firewall-cmd --reload
- 进入kafka_2.12-2.6.0/bin下启动kafka
./kafka-server-start.sh -daemon ../config/server.properties
启动后查看kafka_2.12-2.6.0/logs/server.log是否启动成功。
- 关闭kafka
./kafka-server-stop.sh