Apache Flink 微基准测试指南
本文档旨在提供详细的指导,帮助开发者和研究人员深入了解并有效使用 Apache Flink 的微基准测试套件(flink-benchmarks)。本指南涵盖安装步骤、项目使用方法、API调用详情以及配置说明。
安装指南
要开始使用 flink-benchmarks
,首先需要确保您的环境满足以下要求:
- Java 环境: 确保您安装了 JDK 11 或更高版本。
- Git: 用于克隆项目源码。
- Maven: 项目管理工具,版本推荐 3.6 及以上。
通过 Git 克隆项目到本地:
git clone https://github.com/apache/flink-benchmarks.git
项目使用说明
默认基准测试套件执行
默认的全面基准测试可以通过以下命令运行,该过程大约需要一小时:
cd flink-benchmarks
mvn clean install exec:exec
状态后端特定基准测试
如果您对特定的状态后端性能感兴趣,例如 RocksDB,可以使用以下命令进行测试:
mvn clean package exec:exec \
-Dbenchmarks="org.apache.flink.state.benchmark.*"
单个基准测试执行
有三种方式执行单个测试案例:
- IDE(如 IntelliJ IDEA): 使用插件直接运行主函数,并记得在项目设置中指定正确的
flink.version
。 - 命令行:
示例:mvn -Dflink.version=<FLINK_VERSION> clean package exec:exec \ -Dbenchmarks="<benchmark_class>"
mvn -Dflink.version=1.12-SNAPSHOT clean package exec:exec -Dbenchmarks="YourBenchmarkClass"
- 直接运行 Uber JAR:
若使用 Java 17,可能需要添加额外参数:java -jar target/benchmarks.jar -rf csv "<benchmark_class>"
java --add-opens java.base/java.util=ALL-UNNAMED -jar target/benchmarks.jar -rf csv "<benchmark_class>"
快速测试模式
对于测试目的,仅运行一次(单次迭代)可以使用:
mvn test -P test
API 使用文档
基准测试类定义的主要方法利用了 JMH(Java Microbenchmark Harness),允许通过命令行参数自定义运行时行为。比如通过 -lp
显示所有可选参数组合,或者 -p
参数来覆盖默认配置。
配置与参数
- 基准配置文件: 项目包含
benchmark-conf.yaml
用于调整基本设置,如修改状态数据目录。 - 参数传递: 从命令行可以直接传递参数以调整基准测试的行为,例如指定不同的状态后端类型
-p "backendType=ROCKSDB"
。
Flame Graphs生成
为了生成性能调优所需的火焰图,需启用异步分析器(async profiler):
java -jar target/benchmarks.jar -prof async:libPath=<PATH_TO_LIBASYNC_PROFILER>;<OUTPUT_OPTION> "<benchmark_class>"
进阶配置与注意事项
文中详细描述了关于OpenSSL依赖的配置、代码结构的最佳实践以及命名约定,强调避免性能优化过早、保证测试环境的纯净和重复验证结果的重要性。
通过遵循上述指南,您可以有效地利用 flink-benchmarks
来评估和改进 Flink 应用程序的性能表现。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考