Wordcount – IO + CPU密集型
目的
Wordcount是IO+CPU密集型场景,二者均衡,采用单队列的deadline调度算法反而不好,采用多队列的mq-deadline算法并调整相关IO参数,能得到较好的性能结果。
方法
- 对以下配置进行修改,其中sd$i指所有参与测试的磁盘名称:
1 2 3 4 5 6
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文件大小,对性能有正面提升。可以使用以下分片设置:
1 2
spark.sql.shuffle.partitions 300 spark.default.parallelism 600
- HiBench在配置文件中指定的运行核数、内存大小可以根据实际环境来做调整,来达到最优性能。比如对于鲲鹏920 5220处理器,Wordcount场景建议以下Executor参数:
1 2 3 4
yarn.executor.num 51 yarn.executor.cores 6 spark.executor.memory 13G spark.driver.memory 36G
- 调整JDK参数,对性能有正面影响(3%性能提升),以下配置添加到spark.conf文件中:
1 2
spark.executor.extraJavaOptions -XX:+UseNUMA -XX:BoxTypeCachedMax=100000 -XX:ParScavengePerStrideChunk=8192 spark.yarn.am.extraJavaOptions -XX:+UseNUMA -XX:BoxTypeCachedMax=100000 -XX:ParScavengePerStrideChunk=8192"
父主题: 专用场景优化项--HiBench场景