Scala& Spark:高RAM使用率,长垃圾收集,应用程序缓慢

时间:2017-02-13 17:09:33

标签: java scala apache-spark garbage-collection

鉴于2MB CSV(golub,请参阅here)数据集和一些简单的机器学习,我发现了以下RAM用法:

  1. 根据spark中的“存储”选项卡提供54MB的RAM 应用程序UI
  2. 104MB根据SizeEstimator.estimate()
  3. 根据spark应用程序UI
  4. 中的“Executors”选项卡,对执行程序0执行18.1GB

    鉴于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。

0 个答案:

没有答案