在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我已經添加了一些用戶界面跟蹤。如所看到的那樣,紗線組中的階段花費更長的時間,特別是在分類過程中。這些結果是否說明了重要的事情 –