---
title: K-means（CPU密集型）
description: "K-means属于CPU密集型计算任务，可以对IO参数和Spark执行参数进行调整。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengbds/ecosystemEnable/Spark/kunpengspark2xhdpeu_05_0033.html
sourcePath: /source/zh/kunpengbds/ecosystemEnable/Spark/kunpengspark2xhdpeu_05_0033.html
indexId: 369757e6cb30e8231e340e913b494f2409338837b0559b2fdb8f7ea46ad6e65176
---
# K-means（CPU密集型）

#### 目的

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(https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_jdk/bisheng-jdk-8u262-linux-aarch64.tar.gz)。
2. 将当前使用的JDK替换为毕昇JDK。

  a. 停止集群服务，避免因JDK切换导致服务异常。
  b. 将毕昇JDK解压并移动到“/usr/local/”下。
    1 2 tar -zxvf bisheng-jdk-8u262-linux-aarch64.tar.gz mv bisheng-jdk1.8.0_262 /usr/local/

  c. 重命名原有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/

  d. 重启集群服务，确保JDK变更生效。
3. 修改Spark配置，充分利用毕昇JDK的优化特性。

  a. 打开Spark配置文件。
    1 vi /opt/HiBench-HiBench-7.0/conf/spark.conf

  b. 按“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。

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