Hibench调优

在Hibench的测试中,实际在导入数据时性能的优化就开始了,在conf/hibench.conf文件中,hibench.default.map.parallelism和hibench.default.shuffle.parallelism会对数据的分片以及Mapper、Reducer的Partition数量进行限定;后续需要调优这个分片数,需要重新导入数据。

现象:

采用不同的parallelism数量进行数据导入,采用的是Hadoop Mapreduce进行,在HDFS NameNode界面的Utils – Filesystem Explorer界面上查看Hibench对应数据目录下的文件,能够看到导入成功后实际数据文件的总数与parallelism设置的值相同;另外文件的大小也会随partition的数量而不同,partition越多,单文件越小。

参数初始值设置推荐:

在Spark2x官网上的描述如下所示。

对于Yarn作为集群管理器的Spark2x集群,官方推荐设置为执行节点核数总数的2~3倍,使得每个CPU物理核上运行2~3个Tasks,因此在Hibench的测试中该参数初始值设置为300。

  1. 场景上:Hibench场景Wordcount、Terasort、Bayesian、K-Means是鲲鹏集群的优势场景,相比SQL场景,该场景在IO数据量上虽然处于基本接近的数量级,但是由于CPU运算的Stage更加复杂,鲲鹏计算密集型更容易发挥优势。
  2. 硬件配置上:建议保证硬件环境的配置和搭建合理(RAID控制卡Cache策略、网卡配置、块设备配置等)。
  3. 软件配置上:在客户端及Web按照基础固定值配置的基础上,按照理论计算公式得到较合理的一组Executor执行参数,使能在鲲鹏上效果明显的亲和性配置调优,进行hibench测试能跑出较优的一组性能结果。
  4. 数据分布上:在测试时根据集群总核数,采用2~3倍总核数作为数据分片的Partitions和Parallelism进行数据分片;在Terasort场景由于有更多的中间数据,推荐可采用3~5倍总核数的分片数,减小单Task文件大小,对性能有正面提升。
  5. 当前性能结果原因:在HiBench场景,针对相同Task数量的Stage任务,在同样是压满CPU的情况下,由于鲲鹏多核优势,在执行时并发度更高,处理任务时速度相对更快,优势明显。