2016-12-19 88 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

相關問題