2016-12-19 41 views
0

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

为了让我的结果快得多,我尝试通过hpc中的纱线在一个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。

但是,即使超过2小时过去了,我仍无法获得结果。

我的火花的配置是:

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:

enter image description here enter image description here

执行程序和阶段,从SERVER:

enter image description here

enter image description here

+0

我的第一预感是纱线簇不提供更多的并行(40总芯V.S. 36芯),但它引入了网络开销。没有更多信息,找出原因是不可能的。您可以使用Spark UI来比较作业的时间并查看哪一个更慢。 – zsxwing

+0

谢谢@zsxwing!我会检查阶段并告知这里。 –

+0

@zsxwing我已经添加了一些用户界面跟踪。如所看到的那样,纱线组中的阶段花费更长的时间,特别是在分类过程中。这些结果是否说明了重要的事情 –

回答

0

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

即使您指定了11个执行程序,它也只启动4个执行程序。 从第一次火花用户界面截图推断。在所有执行者中,火花使用的内核总数只有19个。总内核数等于正在运行的任务数。

请通过以下链接。

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

相关问题