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

K-means(纯计算密集型)

目的

K-means是CPU密集型场景,可以对IO参数和Spark执行参数进行调整。

方法

  • 主要是调整Spark Executor参数适配到一个较优值,该场景可以使用以下分片设置:
    1
    2
    spark.sql.shuffle.partitions 1000
    spark.default.parallelism 2500
    
  • 使用以下内核参数:
    1
    echo 4096 > /sys/block/sd$i/queue/read_ahead_kb
    
  • HiBench在配置文件中指定的运行核数、内存大小可以根据实际环境来做调整,来达到最优性能。比如对于鲲鹏920 5220处理器,K-means场景建议以下Executor参数:
    1
    2
    3
    4
    5
    yarn.executor.num 42
    yarn.executor.cores 6
    spark.executor.memory 15G
    spark.driver.memory 36G
    spark.locality.wait 10s
    
  • 调整JDK参数,以下配置添加到spark-default.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
    

毕昇JDK对K-means有特定的优化,可以使用毕昇JDK进行加速。毕昇JDK的安装与替换步骤如下:

  1. 下载毕昇JDK
  2. 将当前使用的JDK替换为毕昇JDK。
    1. 停止集群服务,避免因JDK切换导致服务异常。
    2. 将毕昇JDK解压并移动到“/usr/local/”下。
      1
      2
      tar –zxvf bisheng-jdk-8u262-linux-aarch64.tar.gz
      mv bisheng-jdk1.8.0_262 /usr/local/
      
    3. 重命名原有JDK并替换,同时修改目录权限。

      将原JDK重命名,例如将“jdk8u222-b10/”重命名为“jdk8u222-b10-openjdk/”;再将毕昇JDK重命名为与原JDK相同的文件名,例如“jdk8u222-b10/”

      1
      2
      3
      mv jdk8u222-b10/ jdk8u222-b10-openjdk/
      mv bisheng-jdk1.8.0_262/ jdk8u222-b10/
      chmod -R 755 jdk8u222-b10/
      
    4. 重启集群服务,确保JDK变更生效。
  3. 修改Spark配置,充分利用毕昇JDK的优化特性。
    1. 打开Spark配置文件。
      1
      vi /opt/HiBench-HiBench-7.0/conf/spark.conf
      
    2. “i”进入编辑模式,修改spark.executor.extraJavaOptions的值。
      1
      2
      3
      spark.executor.extraJavaOptions -XX:+UnlockExperimentalVMOptions
      -XX:+EnableIntrinsicExternal -XX:+UseF2jBLASIntrinsics -Xms43g
      -XX:ParallelGCThreads=8
      

      -Xms的值(如43g)应根据“/opt/HiBench-HiBench-7.0/conf/spark.conf”中spark.executor.memory的配置值来调整,建议设置为:spark.executor.memory的值减1。

    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。