Hibench调优
目的
合理配置HiBench测试参数和集群资源,充分发挥鲲鹏多核架构优势,提升HiBench测试场景的执行效率和整体性能表现,提高任务的并行度和执行效率。
方法
在HiBench测试中,调优从数据导入阶段就开始影响性能。关键参数包括“conf/hibench.conf”文件中的“hibench.default.map.parallelism”和“hibench.default.shuffle.parallelism”。这两个parallelism参数决定了数据分片(Partition)的数量,进而影响Mapper和Reducer阶段的并行度。分片数越多,数据文件数量越多,单文件体积越小,有利于并行处理。Spark官方建议在Yarn管理的集群中,将parallelism设为执行节点总核数的2~3倍,每个CPU核运行2~3个任务。
- 在数据导入阶段进行调优。
- 确认集群资源情况,为后续参数设置提供依据。
- 将“conf/hibench.conf”文件中的parallelism参数设置为如下配置值。
hibench.default.map.parallelism=640 hibench.default.shuffle.parallelism=640
在Terasort等中间数据量大的场景中,可适当提高parallelism至3~5倍总核数,减小单Task输入量,提升处理效率。
- 执行数据导入操作。验证参数设置后的实际效果,观察数据分片是否符合预期。
- 执行HiBench数据导入命令(如terasort或wordcount)。
- 运行完成后,访问HDFS NameNode界面的。
- 检查Hibench对应数据目录下的文件数量,应该与parallelism设置值一致。
- 观察文件大小:Partition越多,单文件越小,有利于任务并行处理。
- 选择优势场景。
HiBench测试中,WordCount、Terasort、Bayesian、K-means等计算密集型场景更适合鲲鹏集群。相较SQL类场景,这些场景在数据IO量相近的前提下,CPU运算的S tage更复杂,更能体现多核并行优势。
- 为发挥硬件性能,建议根据实际情况保证硬件环境的配置和搭建合理(RAID控制卡Cache策略、网卡配置、块设备配置等)。
- 优化软件配置。
- 基础配置:客户端与Web端应保持一致的基础配置标准。
- Executor参数:根据集群总核数,通过理论公式推算出合理Executor数量和配置,确保资源充分利用。
- 亲和性配置:在鲲鹏平台进行CPU亲和性调优,提升任务调度效率和执行性能。
- 优化数据分片策略,目标是减小文件粒度,提升并行度,避免单个Task处理数据过大导致瓶颈。
- 通用场景:将数据分片数设为集群总核数的2~3倍。
- Terasort等中间数据较多的场景:建议使用3~5倍核数的分片数,减少单Task处理数据量,提升执行效率。
父主题: Spark调优