0

在 Spark 1.4 中应用 LSH 算法(https://github.com/soundcloud/cosine-lsh-join-spark/tree/master/src/main/scala/com/soundcloud/lsh),我处理一个文本文件(4GB ) 以 LIBSVM 格式 ( https://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) 来查找重复项。首先,我在一台服务器上运行了我的 scala 脚本,只使用了一个 36 核的执行器。我在 1.5 小时内检索了我的结果。

为了更快地获得结果,我尝试在具有 3 个节点的 hpc 中通过 yarn 在 hadoop 集群中运行我的代码,其中每个节点有 20 个内核和 64 gb 内存。由于我在 hpc 中没有太多运行代码,因此我遵循了此处给出的建议:https ://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part -2/

结果,我提交了如下火花:

spark-submit --class com.soundcloud.lsh.MainCerebro --master yarn-cluster --num-executors 11 --executor-memory 19G --executor-cores 5 --driver-memory 2g cosine-lsh_yarn.jar 

据我了解,我为每个节点分配了 3 个执行程序,并为每个执行程序分配了 19 GB。

但是,即使过去了两个多小时,我也无法得到我的结果。

我的火花配置是:

val conf = new SparkConf()
      .setAppName("LSH-Cosine")
      .setMaster("yarn-cluster")
      .set("spark.driver.maxResultSize", "0");

我该如何挖掘这个问题?我应该从哪里开始改进计算时间?

编辑:

1)

我注意到在纱线中合并的速度要慢得多

  entries.coalesce(1, true).saveAsTextFile(text_string)

2)

HPC 的执行者和阶段:

在此处输入图像描述 在此处输入图像描述

服务器的执行者和阶段:

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

0

存储内存中堵塞了更多内存。您没有有效地使用该内存,即(您正在缓存数据)。在 40 场演出中,总共使用了不到 10 场演出。您正在减少该内存存储并使用该内存执行。

即使您指定了 11 个执行程序,它也只启动了 4 个执行程序。从第一个 spark UI 屏幕截图推断。在所有执行程序中,spark 使用的总内核数仅为 19。总核心数等于正在运行的任务数。

请通过以下链接。

https://community.hortonworks.com/articles/42803/spark-on-yarn-executor-resource-allocation-optimiz.html

于 2017-07-19T19:03:31.897 回答