apache kafka性能测试命令使用和构建kafka-perf

Posted yjl33

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apache kafka性能测试命令使用和构建kafka-perf相关的知识,希望对你有一定的参考价值。

转自:http://blog.csdn.net/lizhitao/article/details/35847927



本来想用kafka官方提供的工具做性能测试的。但事与愿违,当我执行官方提供的kafka测试脚本,却报错没有找到ProducerPerformance,后来浏览一些代码文件,才发现没有把perf性能测试程序打包到kafka_2.x.0-0.8.x.x.jar发行版本中。

现在来教您如何打包做测试。

1.准备工作:

安装gradle

2.下载kafka源代码

kafka-0.8.1源代码

3.编译kafka-perf_2.x-0.8.1.x.jar

编译注意事项:默认情况下是编译为2.8.0版本,也可以指定版本编译。目前编译高版本的kafka-perf(2.8.0以上版本)是由问题的,因为build.gradle配置参数有问题(版本不同,会报如下错误,版本不兼容错误),如果要构建高版本kafka-perf多版本修改内容如下:

下载build.gradle   替换掉kafka-0.8.1.1-src根目录下文件即可

编译构建执行命令:

gradle jar    默认生成2.8.0版本的kafka和kafka-perf的jar

gradle jar_core_2_8_0 生成2.8.0版本的kafka的jar

gradle jar_core_2_8_2 生成2.8.2版本的kafka的jar

gradle jar_core_2_9_1 生成2.9.1版本的kafka的jar

gradle jar_core_2_9_2 生成2.9.2版本的kafka的jar

gradle jar_core_2_10_1 生成2.10.1版本的kafka的jar

gradle perf:jar 生成2.8.0版本的kafka和kafka-perf的jar

gradle perf_2_9_1 生成2.9.1版本的kafka和kafka-perf的jar

gradle perf_2_10_1 生成2.10.1版本的kafka和kafka-perf的jar

gradle -PscalaVersion=2.8.0 jar 编译scala 2.8.0版本编译所有jar

gradle -PscalaVersion=2.8.2 jar 编译scala 2.8.2版本编译所有jar

gradle -PscalaVersion=2.9.1 jar 编译scala 2.9.1版本编译所有jar

gradle -PscalaVersion=2.10.1 jar 编译scala 2.10.1版本编译所有jar

如果不想编译jar,可以直接下载:kafka-perf_2.x.x-0.8.1.jar 

lizhitao@users-MacBook-Pro:~/mt_wp/tmp$ cd kafka-0.8.1.1-src

lizhitao@users-MacBook-Pro:~/mt_wp/tmp/kafka-0.8.1.1-src$gradle jar

lizhitao@users-MacBook-Pro:~/mt_wp/tmp/kafka-0.8.1.1-src$gradle perf:jar
The TaskContainer.add() method has been deprecated and is scheduled to be removed in Gradle 2.0. Please use the create() method instead.
Building project 'core' with Scala version 2.8.0
Building project 'perf' with Scala version 2.8.0
:core:compileJava UP-TO-DATE
:core:compileScala
/Users/lizhitao/mt_wp/tmp/kafka-0.8.1.1-src/core/src/main/scala/kafka/admin/AdminUtils.scala:243: non variable type-argument String in type pattern scala.collection.Map[String,_] is unchecked since it is eliminated by erasure
        case Some(map: Map[String, _]) =>
                       ^
/Users/lizhitao/mt_wp/tmp/kafka-0.8.1.1-src/core/src/main/scala/kafka/admin/AdminUtils.scala:246: non variable type-argument String in type pattern scala.collection.Map[String,String] is unchecked since it is eliminated by erasure
            case Some(config: Map[String, String]) =>
                              ^
/Users/lizhitao/mt_wp/tmp/kafka-0.8.1.1-src/core/src/main/scala/kafka/api/LeaderAndIsrResponse.scala:66: non variable type-argument String in type pattern (String, Int) is unchecked since it is eliminated by erasure
    for ((key:(String, Int), value) <- responseMap)
              ^
/Users/lizhitao/mt_wp/tmp/kafka-0.8.1.1-src/core/src/main/scala/kafka/utils/Utils.scala:363: non variable type-argument V in type pattern List[V] is unchecked since it is eliminated by erasure
        case Some(l: List[V]) => m.put(k, v :: l)
                     ^
four warnings found
:core:processResources UP-TO-DATE
:core:classes
:core:copyDependantLibs UP-TO-DATE
:core:jar UP-TO-DATE
:perf:compileJava UP-TO-DATE
:perf:compileScala
:perf:processResources UP-TO-DATE
:perf:classes
:perf:jar UP-TO-DATE

BUILD SUCCESSFUL
Total time: 54.41 secs

编译jar包目录如下:

a. kafka_2.x-0.8.1.1.jar

kafka-0.8.1.1-src/core/build


b.kafka-perf_2.x-0.8.1.x.jar

kafka-0.8.1.1-src/perf/build/libs


kafka多版本jar:



4. kafka性能测试命令用法:

4.1 创建topic

bin/kafka-topics.sh --zookeeper 192.168.2.225:2182,192.168.2.225:2183/config/mobile/mq/mafka02 --create --topic test-rep-one --partitions 6 --replication-factor 1


4.2 kafka-producer-perf-test.sh中参数说明:

messages 生产者发送总的消息数量

message-size 每条消息大小

batch-size 每次批量发送消息的数量

topics 生产者发送的topic

threads 生产者使用几个线程同时发送

broker-list 安装kafka服务的机器ip:port列表

producer-num-retries 一个消息失败发送重试次数

request-timeout-ms 一个消息请求发送超时时间

4.3 bin/kafka-consumer-perf-test.sh中参数说明:

zookeeperzk 配置

messages 消费者消费消息总数量

topic 消费者需要消费的topic

threads 消费者使用几个线程同时消费

group 消费者组名称

socket-buffer-sizesocket 缓冲大小

fetch-size 每次向kafka broker请求消费大小

consumer.timeout.ms 消费者去kafka broker拿去一条消息超时时间

4.4 生产者发送数据:

lizhitao@users-MacBook-Pro:~/mt_wp/tmp/kafka-0.8.1.1-src$ bin/kafka-producer-perf-test.sh --messages 5000000 --message-size 5000  --batch-size 5000 --topics test-rep-one --threads 8 --broker-list mobile-esb03:9092,mobile-esb04:9092,mobile-esb05:9092

start.time, end.time, compression, message.size, batch.size, total.data.sent.in.MB, MB.sec, total.data.sent.in.nMsg, nMsg.sec
[2014-07-06 12:52:36,139] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[2014-07-06 12:52:36,199] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)
[2014-07-06 12:52:36,202] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)
[2014-07-06 12:52:36,204] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)
[2014-07-06 12:52:36,206] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)
[2014-07-06 12:52:36,207] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)
[2014-07-06 12:52:36,209] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)
[2014-07-06 12:52:36,214] WARN Property reconnect.interval is not valid (kafka.utils.VerifiableProperties)

4.5 消费者消费数据

lizhitao@users-MacBook-Pro:~/mt_wp/tmp/kafka-0.8.1.1-src$ bin/kafka-consumer-perf-test.sh --zookeeper

192.168.2.225:2182,192.168.2.225:2183/config/mobile/mq/mafka02 --messages 50000000 --topic test-rep-one --threads 1

start.time, end.time, fetch.size, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.


以上是关于apache kafka性能测试命令使用和构建kafka-perf的主要内容,如果未能解决你的问题,请参考以下文章

必读 | 大规模使用 Apache Kafka 的20个最佳实践

Kafka 入门和 Spring Boot 集成

JMeter进行Apache Kafka负载测试

Apache Kafka 删除 Apache ZooKeeper 的依赖

美光专栏 | 利用闪存存储提升 Apache Kafka 的性能

Apache Kafka:简单的命令行操作topic实现消息发送和接收