K-means(纯计算密集型)
目的
K-means是CPU密集型场景,可以对IO参数和Spark执行参数进行调整。
方法
- 主要是调整Spark Executor参数适配到一个较优值,该场景可以使用以下分片设置:
1 2
spark.sql.shuffle.partitions 1000 spark.default.parallelism 2500
- 使用以下内核参数:
1echo 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的安装与替换步骤如下:
- 下载毕昇JDK。
- 将当前使用的JDK替换为毕昇JDK。
- 停止集群服务,避免因JDK切换导致服务异常。
- 将毕昇JDK解压并移动到“/usr/local/”下。
1 2
tar –zxvf bisheng-jdk-8u262-linux-aarch64.tar.gz mv bisheng-jdk1.8.0_262 /usr/local/
- 重命名原有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/
- 重启集群服务,确保JDK变更生效。
- 修改Spark配置,充分利用毕昇JDK的优化特性。
- 打开Spark配置文件。
1vi /opt/HiBench-HiBench-7.0/conf/spark.conf - 按“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。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开Spark配置文件。
父主题: (HiBench场景)专用场景优化