鉴于2MB CSV(golub,请参阅here)数据集和一些简单的机器学习,我发现了以下RAM用法:
SizeEstimator.estimate()
鉴于JVM开销,我完全同意前两点。但是,第3点可能是过多垃圾收集的原因,在应用程序UI冻结之前占用的时间超过50%,而且我只根据系统监视器看到单个核心上的活动。
所有这些都导致了一个非常缓慢的应用:60分钟没有结果用于训练2MB数据集上的随机forrest分类器。
我的SparkSession
创建如下:
val spark = SparkSession
.builder()
.master("spark://10.180.225.53:7077")
.appName("spark performance eval")
.config("spark.executor.memory", "32g")
.config("spark.executor.cores", 30)
.config("spark.default.parallelism", 3 * 30)
之后,它只是标准,复制和粘贴从文档中读取数据,转换并训练模型。
设置:同一台机器上的spark-master和一个spark-slave,HP Z840上的96GB RAM,32核,Ubuntu 16.04LTS。