前言
大家好,我是风云,欢迎大家关注我的博客,在未来的日子里我们一起来学习大数据相关的技术,一起努力奋斗,遇见更好的自己!
百度百科对Kafka
有如下描述:
Kafka
是由Apache软件基金会
开发的一个开源流处理平台,由Scala
和Java
编写。Kafka
是一种高吞吐量的分布式发布订阅消息系统
,它可以处理消费者在网站中的所有动作流数据。
具备以下特点:
高吞吐量、低延迟
:kafka
每秒可以处理百万条消息,它的延迟最低只有几毫秒,topic
可以分多个partition
,consumer group
对partition
进行consumer
操作可扩展性
:kafka
集群支持热扩展持久性、可靠性
:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失容错性
:允许集群中节点失败(若副本数量为n
,则允许n-1
个节点失败)高并发
:支持数千个客户端同时读写
基于Kafka
具备这么多特点,在大数据开发领域已经占据不可或缺的地位,我们在工作中就会不可避免与之打交道,那么搭建Kafka
集群就非常有必要了,今天就来分享一下kafka
集群搭建的详细过程。
详细步骤
前期准备:
- 准备三个虚拟机:
192.168.36.121 hadoop1
192.168.36.122 hadoop2
192.168.36.123 hadoop3
- 虚拟机上配置有
ssh
服务,可以进行免密登录 Kafka
运行在JVM
上,需要安装JDK
kafka
依赖zookeeper
,需要安装zookeeper
,可以参考我的另一篇文章《zookeeper集群搭建超详细教程》
注意:下边的步骤都是在
hadoop1
这个节点上进行的操作,除特殊说明外。
1、下载安装包
cd /opt/module # 下载kafka安装包 wget https://archive.apache.org/dist/kafka/2.6.0/kafka_2.13-2.6.0.tgz
2、解压
# 解压kafka安装包 tar -zxvf kafka_2.13-2.6.0.tgz mv kafka_2.13-2.6.0 kafka
3、创建存放kafka消息的目录
cd kafka mkdir kafka-logs
4、修改配置文件
vim /opt/module/kafka/config/server.properties # 修改如下参数 broker.id=0 listeners=PLAINTEXT://hadoop1:9092 log.dirs=/opt/module/kafka/kafka-logs zookeeper.connect=hadoop1:2181,hadoop2:2181,hadoop3:2181
参数说明:
broker.id
: 集群内全局唯一标识,每个节点上需要设置不同的值
listeners
:这个IP
地址也是与本机相关的,每个节点上设置为自己的IP
地址
log.dirs
:存放kafka
消息的
zookeeper.connect
: 配置的是zookeeper集群地址
5、分发kafka安装目录
# 分发kafka安装目录给其他集群节点 scp -r /opt/module/kafka/ hadoop2:/opt/module scp -r /opt/module/kafka/ hadoop3:/opt/module
分发完成后,其他集群节点都需要修改配置文件server.properties
中的 broker.id
和listeners
参数。
6、编写kafka集群操作脚本
# 导入java环境 vim /etc/profile # 添加如下内容(注意:填写自己的java安装目录) export JAVA_HOME=/usr/java/jdk1.8.0_131 export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin cd /opt/module/kafka/bin # 创建kafka启动脚本 vim kafka-cluster.sh # 添加如下内容 #!/bin/bash case $1 in "start"){ for i in hadoop1 hadoop2 hadoop3 do echo -------------------------------- $i kafka 启动 --------------------------- ssh $i "source /etc/profile;/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties" done } ;; "stop"){ for i in hadoop1 hadoop2 hadoop3 do echo -------------------------------- $i kafka 停止 --------------------------- ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh" done } ;; esac # 保存退出后,修改执行权限 chmod +x ./kafka-cluster.sh
脚本命令说明:
启动kafka集群命令 ./kafka-cluster.sh start 停止kafka集群命令 ./kafka-cluster.sh stop
7、启动kafka集群
首先启动zookeeper
集群
然后执行kafka
集群脚本启动命令
cd /opt/module/kafka/bin ./kafka-cluster.sh start
8、测试
kafka
集群启动成功后,我们就可以对kafka
集群进行操作了。
创建主题
cd /opt/module/kafka ./bin/kafka-topics.sh --create --bootstrap-server hadoop1:9092 --replication-factor 3 --partitions 1 --topic test
查看主题列表
./bin/kafka-topics.sh --list --bootstrap-server hadoop1:9092
启动控制台生产者
./bin/kafka-console-producer.sh --broker-list hadoop1:9092 --topic test
启动控制台消费者
./bin/kafka-console-consumer.sh --bootstrap-server hadoop1:9092 --topic test --from-beginning
在生产者控制台输入hello kafka
,消费者控制台,就可以消费到生产者的消息,输出 hello kafka
,表示消费端成功消费了生产者生产的消息!
至此,我们就顺利完成了kafka
集群搭建的整个过程!
希望大家都能有所收获,喜欢的可以点赞和收藏,有疑问的可以在评论区留言,也欢迎转发分享给更多的人!