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 코어가있는 실행 프로그램을 하나만 사용하여 서버에서 스칼라 스크립트를 실행했습니다. 나는 결과를 1.5 시간 만에 찾아 냈다.hadoop 클러스터에서 스파크를 실행할 때 더 빠른 결과를 얻을 수 없음
내 결과를 훨씬 빨리 얻기 위해 각 노드에 20 코어 및 64GB 메모리가있는 3 개의 노드가있는 hpc의 원사를 통해 hadoop 클러스터에서 코드를 실행하려고했습니다. 내가 알 수있는 바와 같이
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 : 결과 https://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/
, 나는 다음과 같이 불꽃을 제출 한 : 나는 HPC에 많은 실행 코드를 경험하고 있지 않다 때문에, 나는 여기에 주어진 제안을 따랐다 노드 당 실행 프로그램과 각 실행 프로그램마다 19GB입니다.
그러나 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 FROM
실행 프로그램과 STAGES :
실행기 AND STAGES :
내 제 직감 병렬 처리를 제공하지 않는 실 클러스터 인 (총 40 개 코어 36 개 코어 v.s.)하지만, 네트워크의 오버 헤드를 도입한다. 더 많은 정보가 없으면 원인을 찾을 수 없습니다. Spark UI를 사용하여 작업 시간을 비교하고 어느 것이 더 느린 지 확인할 수 있습니다. – zsxwing
고맙습니다. @zsxwing! 나는 스테이지를 점검하고 여기에 알려줄 것이다. –
@zsxwing 일부 UI 추적을 추가했습니다. 보시다시피, 스테이지는 특히 선별 과정에서 원사 클러스터에서 조금 더 오래 걸립니다. 이 결과는 중요한 것을 알려줍니까? –