基于Hadoop的大数据技术生态当中,kafka在日志采集这个环节,提供重要的支持。今天的大数据开发学习分享,我们主要来讲讲在Hadoop集群上如何搭建和配置kafka集群。
一、集群规划
首先看一下集群规划,3台节点都搭建kafka,并且每个节点都需要提前安装有zookeeper集群。
二、kafka安装和配置
1、下载安装包并解压缩
下载地址:
http://kafka.apache.org/downloads
解压到/opt/module路径下
tar-zxvf kafka_2.11-2.4.1.tgz-C/opt/module/
2、修改压缩后的文件名
mv kafka_2.11-2.4.1/ kafka
3、创建logs文件夹
mkdir logs
4、修改配置文件server.properties
vi server.properties
修改或者增加以下内容:
#broker的全局唯一编号,不能重复
broker.id=1
#删除topic功能使能
delete.topic.enable=true
#kafka运行日志存放的路径
log.dirs=/opt/module/kafka/data
#配置连接Zookeeper集群地址
zookeeper.connect=node01:2181,node02:2181,node03:2181/kafka
5、配置环境变量
在/etc/profile.d/路径下面新建my_env.sh,这个文件配置所有的环境变量。如:JAVAHOME,HADOOPHOME,KAFKAHOME
sudo vi /etc/profile.d/my_env.sh
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
#使其生效
source /etc/profile.d/my_env.sh
这样单台节点的kafka安装配置已经完成。
6、配置其他两个节点
注意:
修改server.properties中的broker.id=2、broker.id=3
三、kafka集群启动和关闭
1、单台节点启动
进入/opt/module/kafka路径下执行
bin/kafka-server-start.sh-daemon/opt/module/kafka/config/server.properties
启动单个节点,然后在node02、03节点分别启动。
2、单台节点关闭
关闭单个节点,然后在node02、03节点分别关闭。
bin/kafka-server-stop.sh
3、shell脚本启动和关闭集群
为了方便,我们编写以下脚本文件,来启动和关闭3台集群。
#function:kafka集群启动、关闭
#!/bin/bash
case $1 in
"start"){
for node in node01 node02 node03
do
echo =============== kafka $node 启动 ===============
ssh $node "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
done
};;
"stop"){
for node in node01 node02 node03
do
echo =============== kafka $node 停止 ===============
ssh $node "/opt/module/kafka/bin/kafka-server-stop.sh -daemon /opt/module/kafka/config/server.properties"
done
};;
esac
四、kafka集群测试
可以用Kafka官方自带的脚本,对Kafka进行压测。Kafka压测时,可以查看到哪个地方出现了瓶颈(CPU,内存,网络IO)。一般都是网络IO达到瓶颈。
1、Kafka Producer压力测试
即写入性能测试
./kafka-producer-perf-test.sh
--topic test
--record-size 100
--num-records 100000
--throughput -1
--producer-props bootstrap.servers=node01:9092,node02:9092,node03:9092
record-size 一条信息有多大,单位是字节,这里是100字节
num-records 总共发送多少条信息,这里是10W条信息
throughput 每秒多少条信息,设成-1,表示不限流,可测出生产者最大吞吐量
测试结果如下:
“100000 records sent, 13583.265417 records/sec (1.30 MB/sec), 2940.74 ms avg latency, 4013.00 ms max latency, 2910 ms 50th, 3941 ms 95th, 3998 ms 99th, 4013 ms 99.9th.
参数解析:本例中一共写入10w条消息,吞吐量为1.3MB/sec,每次写入的平均延迟为2940.74毫秒,最大的延迟为4013.00毫秒。
2、kafka consumer测试
Consumer的测试即读性能测试,如果这四个指标(IO,CPU,内存,网络)都不能改变,考虑增加分区数来提升性能。
[qiusheng@node01 bin]$ ./kafka-consumer-perf-test.sh --broker-list node01:9092,node02:9092,node03:9092 --topic test --fetch-size 10000 --messages 10000000 --threads 1
start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec
WARNING: Exiting before consuming the expected number of messages: timeout (10000 ms) exceeded. You can use the --timeout option to increase the timeout.
2021-05-05 11:56:22:513, 2021-05-05 11:56:35:749, 9.5367, 0.7205, 100000, 7555.1526, 1620186983361, -1620186970125, -0.0000, -0.0001
broker-list 指定zookeeper的链接信息
topic 指定主题的名称
fetch-size 指定每次fetch的数据的大小
messages 总共要消费的消息个数,这里配置100W
测试结果:
2021-05-05 11:56:22:513, 2021-05-05 11:56:35:749,
9.5367,0.7205, 100000,7555.1526, 1620186983361, -1620186970125, -0.0000, -0.0001
共消费数据9.5367MB,吞吐量0.7205MB/s,共消费10W条,平均每秒消费7555.1526条消息。
五、kafka集群数量的选择
首先,是否是每天节点都需要配置kafka呢?
当然不是了,实际生产环境中,需要对kafka节点进行计算。以便合理选择kafka节点的数量。
Kafka机器数量 = 2 *(峰值生产速度 * 副本数 / 100)+ 1
说明:
1.先拿到峰值生产速度;
比如我们的峰值生产速度是50M/s,一般中型互联网公司在这几基准。
2.再根据设定的副本数;
一般副本数为2,或者3;
3.根据预估出需要部署Kafka的数量。
Kafka机器数量=2*(50*2/100)+ 1=3台
六、kafka集群分区数量的计算
步骤如下:
创建一个只有1个分区的topic
测试这个topic的producer吞吐量和consumer吞吐量。
假设他们的值分别是Tp和Tc,单位可以是MB/s。
假设总的目标(期望的)吞吐量是Tt,那么分区数=Tt / min(Tp,Tc)
例如:
producer吞吐量=20m/s,consumer吞吐量=50m/s,期望吞吐量100m/s;
分区数= 100 / 20 =5分区(选择最小吞吐量)
关于大数据开发学习,kafka集群搭建步骤示例,以上就为大家做了详细的讲解了。Kafka集群搭建,需要在Hadoop集群的基础之上去考虑,也涉及到Zookeeper等组件,需要实际去运用实践。
网友评论