原文地址:http://www.louisvv.com/archives/2127.html
许久不见,最近工作有点忙,没来得及更博
这段时间对几个大数据框架做了BenchMark(基准测试),待整理后,会分享出来
关于BenchMark
简单的来说,BenchMark是一个系统性能的测量工作,也可以看做是一种评价方式
主要测试负载的执行时间、传输速度、吞吐量、资源占用率等
对系统进行性能基准测试后,将得到的基准数据作为性能指标的参照物,可用于以下场景
1.任意一项变更为系统产生的影响
修改某项配置参数后(启用某项参数),系统的变化情况
2.系统环境的变更对系统性能产生的影响
3.在相同场景下,不同框架的系统性能表现的差异
一些大数据BenchMark工具:
1.Hibench:由Intel开发的针对Hadoop的基准测试工具
2.Berkeley BigDataBench:随着Spark的推出,由AMPLab开发的一套大数据基准测试工具
3.Hadoop GridMix:Hadoop自带的Benchmark,作为Hadoop自带的测试工具使用方便、负载经典,应用广泛
除此之外,有些大型的框架会自带BenchMark工具,方便进行测试
了解BenchMark后,就要开始今天的文章:Kafka基准测试
分别实用Kafka自带的基准工具对Kafka Producer/Consumer进行性能基准测试
Kafka版本:Scala_2.11-1.1.0
服务器配置:
三台服务器
- IntelXeon 3.2 GHz * 12 cores
- 251GB RAM
- Red Hat 7.5
- 10 Gb Ethernet
Kafka Producer基准测试
测试背景
需要对Kafka Producer在不同参数下的性能
性能指标
平均吞吐量(条/秒)、平均延时(毫秒)、平均吞吐率速率(MB/秒)
测试方法
使用Kafka基准测试工具kafka-producer-perf进行测试
这个工具位于kafka/bin目录下
这里仅简单介绍一下该工具的一些必要参数
<span style="color:#000000">./kafka-producer-perf-test.sh
--topic 指定topic
--num-records 指定生产数据量
--throughtput 指定吞吐量
--record-size record数据大小
--producer-props key=value 指定producer配置</span>
一个实例如下:
<span style="color:#000000">./kafka-producer-perf-test.sh
--topic louisvv
--num-records 5000000
--throughtput -1
--record-size 200
--producer-props bootstrap.servers=192.168.1.20:9092,192.168.1.21:9092,192.168.1.22:9092 acks=1</span>
测试参数
除了测试acks以及replication对kafka producer的吞吐量外,还对其他参数进行测试。
参数列表如下
参数 | 参数说明 |
acks | 数据发送确认机制 |
batch-size | 批处理大小 |
record-size | 数据长度 |
num-records | 数据条数 |
replication | topic备份数 |
partition | topic分区数 |
默认设置
1.以5000万数据测试结果为准,该结果更加具有代表性
2.测试其他参数时,默认设置acks=1,partition数为5,replication数为2
测试结果分析
acks
分别设置kafka producer acks参数为0、1、all,进行测试
测试结果如下:
数据(万) | acks | 平均吞吐量 (条/秒) |
平均延时(毫秒) | 平均吞吐速率(MB/S) |
5000 | 0 | 627045.7367 | 250.83 | 119.6 |
5000 | 1 | 771771.6791 | 202.89 | 147.2 |
5000 | all | 219516.7996 | 721.08 | 41.87 |
图表如下:
结论: