在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:
执行程序和阶段,从SERVER:
我的第一预感是纱线簇不提供更多的并行(40总芯V.S. 36芯),但它引入了网络开销。没有更多信息,找出原因是不可能的。您可以使用Spark UI来比较作业的时间并查看哪一个更慢。 – zsxwing
谢谢@zsxwing!我会检查阶段并告知这里。 –
@zsxwing我已经添加了一些用户界面跟踪。如所看到的那样,纱线组中的阶段花费更长的时间,特别是在分类过程中。这些结果是否说明了重要的事情 –