一、实现功能
Kafka是消息队列的一种实现。A模块发送数据到kafka, B模块从kafka中获取数据。 这样可以避免消息过多对处理消息服务器造成过大压力,消息可以先缓存在kafka然后,消费者从kafka中提取数据消费。
二、部署和配置
1.前提条件
(1) 搭建jdk环境 => jdk1.8.x
(2)搭建scala环境 => scala2.11.8
(3)搭建zookeeper=>zookeeper-3.4.5-cdh5.15.0
2.解压
tar -zxvf /opt/softwares/kafka_2.10-0.8.2.1.tgz -C /opt/modules/
3.更改config文件夹中的Kafka服务配置项:server.properties
broker.id=0
## 给定broker的id的值,在一个kafka集群中该参数必须唯一
port=9092
## 监听的端口号,默认9092,需要保证改端口没有被使用
host.name=hadoop
## 监听的主机名,默认是localhost,需要更改为hostname
log.dirs=/opt/modules/kafka_2.10-0.8.2.1/data/0
## 指定kafka存储磁盘的路径,可以使用","分割,给定多个磁盘路径;如果服务器挂载多个磁盘,可以将kafka的数据分布存储到不同的磁盘中(每个磁盘写一个路径),对于Kafka的数据的读写效率有一定的提升(场景:高并发、大数据量的情况)
zookeeper.connect=hadoop:2181/kafka08
## 配置kafka连接zk的相关信息,连接url以及kafka数据存储的zk根目录;这里的配置含义是:连接hadoop机器2181端口的zookeeper作为kafka的元数据管理zk,zk中使用/kafka08作为kafka元数据存储的根目录,默认kafka在zk中的根目录是zk的顶级目录("/")
如果有多个server.properties例如server1.properties,server2.properties,server3.properties,则依次累加一下三个参数
broker.id=1
port=9093
log.dirs=/opt/modules/kafka_2.10-0.8.2.1/data/1
备注:****
针对kafka_2.11-0.9.0.0,如果远程使用spark api连接,需要配置。否则,是消费是本地local的。
listeners=PLAINTEXT://hadoop:9092
针对:kafka_2.11-2.4.1的版本,参考文章
https://mp.csdn.net/mp_blog/creation/editor/82973573
4.启动kafka
(1)启动zk
bin/zkServer.sh start
(2)启动kafka
bin/kafka-server-start.sh config/server.properties
后台启动kafka
bin/kafka-server-start.sh -daemon config/server.properties
bin/kafka-server-start.sh -daemon config/server1.properties
bin/kafka-server-start.sh -daemon config/server2.properties
bin/kafka-server-start.sh -daemon config/server3.properties
(3)关闭Kafka服务
会将当前机器上的所有broker全部关闭
bin/kafka-server-stop.sh