spark-bench性能测试工具

Posted python真好用

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark-bench性能测试工具相关的知识,希望对你有一定的参考价值。

关于spark-bench是一款spark的性能测试工具,可以用来生成数据以及训练数据,个人理解应该是用生成的数据跑一套机器学习的算法,记录它每个环节消耗的时间。

言归正传,讲解一下关于spark-bench的安装一整套流程,这是spark-bench的安装包以及环境(链接:https://pan.baidu.com/s/1_cg6vBwTAcXvT0YGra6zUg 提取码:748l)

1.安装mvn
2.安装wikixmlj
3.安装spark-bench

1.安装mvn

  1. 解压
  2. 添加环境变量
vi /etc/profile
MAVEN_HOME=/解压的路径/apache-maven-3.5.4
export MAVEN_HOME
export PATH=$PATH:$MAVEN_HOME/bin
source /etc/profile
  1. mvn -v 看一下能不能出现版本号
  2. 换阿里源(不然待会儿下jar包的时候速度感人)
    文件夹,在conf目录中找到settings.xml 文件,配置mirrors的子节点,添加如下mirror
<mirror>  
    <id>nexus-aliyun</id>  
    <mirrorOf>central</mirrorOf>    
    <name>Nexus aliyun</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
</mirror>  
  1. 不联网的情况下mvn安装

在maven的setting.xml文件中添加(这是本地仓库jar包的位置,本地jar包需要解压到本地仓库)

<localRepository>/env/repository</localRepository>

需要删除/root/.m2这个文件夹,这是系统默认目录,不删会从网上下载。
实操的时候发现在无外网的环境下还是会从中央仓库下载,但是换了阿里源之后就从本地下载了
2.安装wikixmlj
解压

cd wikixmlj
mvn package -Dmaven.test.skip=true
mvn install -Dmaven.test.skip=true

3.安装spark-bench
解压

./SPARK_BENCH_HOME/bin/build-all.sh
vi spark-bench-legacy/conf/env.sh
# global settings


master="namenode01"
#A list of machines where the spark cluster is running
MC_LIST="namenode01"




[ -z "$HADOOP_HOME" ] &&     export HADOOP_HOME=/opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/
# base dir for DataSet
HDFS_URL="hdfs://namenode01:8020"
SPARK_HADOOP_FS_LOCAL_BLOCK_SIZE=536870912


# DATA_HDFS="hdfs://$master:9000/SparkBench", "file:///home/`whoami`/SparkBench"
DATA_HDFS="hdfs://namenode01:8020/SparkBench"


#Local dataset optional
DATASET_DIR=/home/`whoami`/SparkBench/dataset


SPARK_VERSION=2.0.1  #1.5.1
[ -z "$SPARK_HOME" ] &&     export SPARK_HOME=/opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/spark


#SPARK_MASTER=local
#SPARK_MASTER=local[K]
#SPARK_MASTER=local[*]
#SPARK_MASTER=spark://HOST:PORT
##SPARK_MASTER=mesos://HOST:PORT
##SPARK_MASTER=yarn-client
SPARK_MASTER=yarn
MASTER=yarn
YARN_DEPLOY_MODE=client # or cluster, this will go to spark submit as --deploy-mode
SPARK_RPC_ASKTIMEOUT=500
#SPARK_MASTER=spark://$master:7077






# Spark config in environment variable or aruments of spark-submit 
# - SPARK_SERIALIZER, --conf spark.serializer
# - SPARK_RDD_COMPRESS, --conf spark.rdd.compress
# - SPARK_IO_COMPRESSION_CODEC, --conf spark.io.compression.codec
# - SPARK_DEFAULT_PARALLELISM, --conf spark.default.parallelism
SPARK_SERIALIZER=org.apache.spark.serializer.KryoSerializer
SPARK_RDD_COMPRESS=false
SPARK_IO_COMPRESSION_CODEC=lzf


# Spark options in system.property or arguments of spark-submit 
# - SPARK_EXECUTOR_MEMORY, --conf spark.executor.memory
# - SPARK_STORAGE_MEMORYFRACTION, --conf spark.storage.memoryfraction
#SPARK_STORAGE_MEMORYFRACTION=0.5
SPARK_EXECUTOR_MEMORY=1g
#export MEM_FRACTION_GLOBAL=0.005


# Spark options in YARN client mode
# - SPARK_DRIVER_MEMORY, --driver-memory
# - SPARK_EXECUTOR_INSTANCES, --num-executors
# - SPARK_EXECUTOR_CORES, --executor-cores
# - SPARK_DRIVER_MEMORY, --driver-memory
#export EXECUTOR_GLOBAL_MEM=2g
#export executor_cores=2
export SPARK_DRIVER_MEMORY=2g
export SPARK_EXECUTOR_INSTANCES=4
export SPARK_EXECUTOR_CORES=1


# Storage levels, see http://spark.apache.org/docs/latest/api/java/org/apache/spark/api/java/StorageLevels.html
# - STORAGE_LEVEL, set MEMORY_AND_DISK, MEMORY_AND_DISK_SER, MEMORY_ONLY, MEMORY_ONLY_SER, or DISK_ONLY
STORAGE_LEVEL=MEMORY_AND_DISK


# for data generation
NUM_OF_PARTITIONS=2
# for running
NUM_TRIALS=1

根据你集群的情况调整参数,接下来可以调整算法的参数,以Kmeans为例

cd KMeans/conf
vi env.sh

KMeans:(这是20台节点,4亿点数据,NUM_OF_PARTITIONS设为7500,10台节点,NUM_OF_PARTITIONS设为15000,30台设为5000)

# The parameters for data generation. 100 million points roughly produces 36GB data size
NUM_OF_POINTS=400000000
NUM_OF_CLUSTERS=500
DIMENSIONS=60
SCALING=0.6
NUM_OF_PARTITIONS=7500

MAX_ITERATION=10
NUM_RUN=1

根据节点数,以及生成的数据量调整你的NUM_OF_PARTITIONS,节点数少,数据量大就调大点。
接下来就是生成数据

cd KMeans/bin
./gen_data.sh

生成完数据就可以训练数据了

./run.sh

以上就是spark-bench性能测试工具的用法了,关于性能测试的参数调整需要根据多种因素进行调整,可以多测试几次来将集群的性能发挥到最大。

以上是关于spark-bench性能测试工具的主要内容,如果未能解决你的问题,请参考以下文章

性能测试是啥意思?

通过Jmeter对Dubbo接口进行接口及性能测试

数组求和的多种方法,并比较性能

性能测试

博客测试

自从学了这套框架,自动化+性能都搞定了