目的
Wordcount是IO+CPU密集型场景,二者均衡,采用单队列的deadline调度算法反而不好,采用多队列的mq-deadline算法并调整相关IO参数,能得到较好的性能结果。
方法
- 对以下配置进行修改,其中sd$i指所有参与测试的磁盘名称:
| echo mq-deadline > /sys/block/sd$i/queue/scheduler
echo 512 > /sys/block/sd$i/queue/nr_requests
echo 8192 > /sys/block/sd$i/queue/read_ahead_kb
echo 500 > /proc/sys/vm/dirty_expire_centisecs
echo 100 > /proc/sys/vm/dirty_writeback_centisecs
echo 5 > /proc/sys/vm/dirty_background_ratio
|
- 该场景下采用3-5倍总核数作为数据分片的Partitions和Parallelism进行数据分片,减小单Task文件大小,对性能有正面提升。可以使用以下分片设置:
| spark.sql.shuffle.partitions 300
spark.default.parallelism 600
|
- HiBench在配置文件中指定的运行核数、内存大小可以根据实际环境来做调整,来达到最优性能。比如对于鲲鹏920 5220处理器,Wordcount场景建议以下Executor参数:
| yarn.executor.num 51
yarn.executor.cores 6
spark.executor.memory 13G
spark.driver.memory 36G
|
- 调整JDK参数,对性能有正面影响(3%性能提升),以下配置添加到spark.conf文件中:
| spark.executor.extraJavaOptions -XX:+UseNUMA -XX:BoxTypeCachedMax=100000 -XX:ParScavengePerStrideChunk=8192
spark.yarn.am.extraJavaOptions -XX:+UseNUMA -XX:BoxTypeCachedMax=100000 -XX:ParScavengePerStrideChunk=8192"
|