美文网首页大数据开发
大数据开发:kafka集群搭建步骤示例

大数据开发:kafka集群搭建步骤示例

作者: 成都加米谷大数据 | 来源:发表于2021-07-01 17:35 被阅读0次

基于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等组件,需要实际去运用实践。

相关文章

网友评论

    本文标题:大数据开发:kafka集群搭建步骤示例

    本文链接:https://www.haomeiwen.com/subject/jutsultx.html