第1章 简介
Kafka作为一个高吞吐量的分布式发布订阅消息系统,在现今大数据生态中已经占有很重要的地位,在系统削峰、解耦等场景上也发挥了重要作用。其天生的分布式架构,可以灵活的进行扩展,可以非常好的支持大吞吐量的数据传输。因为其在大数据场景中的重要地位,并且后续文章案例中需要使用到Kafka,所以笔者这里单独介绍一章。
第2章 集群规划
Kafka笔者这里只安装2台
另外,由于Kafka需要使用Zookeeper,Zookeeper相关部署请参照笔者之前的文章:大数据实操篇 No.1-Zookeeper集群搭建
据说后续Kafka的版本会逐渐抛弃Zookeeper,持续关注!
Kafka120 |
Kafka121 |
|
Kafka |
√ |
√ |
第3章 下载解压
直接到官网下载, 官网地址:http://kafka.apache.org
解压:
$ tar -zxvf kafka_2.12-2.5.0.tgz -C /opt/module/
第4章 修改配置
4.1 修改环境变量
修改/etc/profile 添加如下内容
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka_2.12-2.5.0
export PATH=$PATH:$KAFKA_HOME/bin
source一下
$ source /etc/profile
4.2 创建数据目录
到kafka解压目录,创建数据目录,默认是logs文件夹,这里建议单独创建数据目录,与默认的logs文件夹的log文件分开。
$ mkdir data
4.3 修改配置文件
4.3.1 修改server.propertie
修改kafka配置文件,config目录下server.properties,修改内容如下:
#Kafka集群节点ID(int型,集群中唯一)
broker.id=0
#允许删除topic
delete.topic.enable=true
#数据+日志保存路径
log.dirs= /opt/module/kafka_2.12-2.5.0/logs
#分区数量
num.partitions=2
#数据存储时间(默认7天)
log.retention.hours=168
segment最大数据量(默认1G)
log.segment.bytes=1073742824
#zookeeper集群地址
zookeeper.connect=zookeeper110:2181, zookeeper111:2181, zookeeper112:2181
4.3.2 修改consumer.properties
修改kafka配置文件,config目录下consumer.properties,修改内容如下:
bootstrap.servers=kafka120:9092,kafka121:9092
注:旧版kafka(0.11之前),consumer还是建议连接zookeeper,在之后的版本已经建议甚至禁止连接zookeeper了,consumer直接连接kafka自己,offset等信息直接存在kafka本地。
第5章 启动/停止 Kafka
5.1 单点启动
$ bin/kafka-server-start.sh -daemon config/server.properties
注:-daemon表示在后台启动,不填写-daemon将在前台占用窗口。
Kafka默认只提供单点启动的脚本,群起需要自行编写脚本,下面提供一个群起脚本供参考。
5.2 群起脚本
在kafka120和kafka121上,配置环境变量到当前用户环境变量目录下
$ cat /etc/profile >> ~/.bashrc
先创建群起脚本文件
$ touch kafka-all.sh
$ chmod 777 kafka-all.sh
$ vi kafka-all.sh
填写如下内容:
#!/bin/bash
case $1 in
"start"){
for i in kafka120 kafka121
do
ssh $i "source /etc/profile && export JMX_PORT=9988 && /opt/module/kafka_2.12-2.5.0/bin/kafka-server-start.sh -daemon /opt/module/kafka_2.12-2.5.0/config/server.properties"
echo "=============$i==========="
done
};;
"stop"){
for i in kafka120 kafka121
do
ssh $i "source /etc/profile && /opt/module/kafka_2.12-2.5.0/bin/kafka-server-stop.sh"
echo "=============$i==========="
done
};;
esac
5.3 启动kafka集群
注意,启动前请先启动zookeeper
$ bin/kafka-all.sh start
5.4 停止kafka集群
$ bin/kafka-all.sh stop
第6章 命令测试
6.1 启动控制台消费者
[zihao@kafka121 kafka_2.12-2.5.0]$ bin/kafka-console-consumer.sh --topic test --bootstrap-server kafka120:9092,kafka121:9092
6.2 启动控制台生产者
[zihao@kafka120 kafka_2.12-2.5.0]$ bin/kafka-console-producer.sh --topic test --broker-list kafka120:9092,kafka121:9092
>
6.3 生产数据
[zihao@kafka120 kafka_2.12-2.5.0]$ bin/kafka-console-producer.sh --topic test --broker-list kafka120:9092,kafka121:9092
>hello kafka
>hello bigdata
>
对应截图:
6.4 查看消费者
[zihao@kafka120 kafka_2.12-2.5.0]$ bin/kafka-console-producer.sh --topic test --broker-list kafka120:9092,kafka121:9092
>hello kafka
>hello bigdata
>
对应截图:
可以看到数据已经正常的被生产和消费。
至此,Kafka已经部署配置完成。下一章我们以Kafka->Flink-Mysql的场景,给大家分享Flink在开发环境中如何使用!
欢迎大家扫描下面的二维码,关注笔者的公众号:知数知理,文章会逐步同步到微信公众号,并持续更新,方便更多的朋友一起学习交流: