鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

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"