Применяя алгоритм LSH в Spark 1.4 (https://github.com/soundcloud/cosine-lsh-join-spark/tree/master/src/main/scala/com/soundcloud/lsh), я обрабатываю текстовый файл (4 ГБ) в формате LIBSVM (https://www.csie.ntu.edu.tw/~cjlin/libsvm/), чтобы найти дубликаты. Во-первых, я запустил скрипт scala на сервере, используя только одного исполнителя с 36 ядрами. Я получил результаты за 1,5 часа.Невозможно получить более быстрые результаты с помощью пряжи при работе искры в кластере hadoop
Чтобы получить мои результаты намного быстрее, я попытался запустить свой код в кластере hadoop через пряжу в hpc с 3 узлами, где каждый узел имеет 20 ядер и 64-гигабайтную память. Так как я не испытывал много погонных кодов в КВД, я следовал предложения, приведенные здесь: 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 гб для каждого исполнителя.
Однако я не смог получить результаты, даже если прошло более 2 часов.
Моя конфигурация искра:
val conf = new SparkConf()
.setAppName("LSH-Cosine")
.setMaster("yarn-cluster")
.set("spark.driver.maxResultSize", "0");
Как я могу выкопать этот вопрос? С какого места следует начинать улучшать расчетное время?
РЕДАКТИРОВАТЬ:
1)
Я заметил, что COALESCE это способ гораздо медленнее пряжи
entries.coalesce(1, true).saveAsTextFile(text_string)
2)
ИСПОЛНИТЕЛИ И СТАДИИ ИЗ ГПЦ:
И СТАДИИ ИСПОЛНИТЕЛИ с сервера:
Моя первая догадка кластер нити не обеспечивает более параллелизм (40 всего ядер 36 ядер В.С.), но он вводит нагрузку на сеть. Без дополнительной информации невозможно выяснить причину. Вы можете использовать пользовательский интерфейс Spark, чтобы сравнить время выполнения заданий и посмотреть, какой из них медленнее. – zsxwing
Спасибо @zsxwing! Я проверю этапы и сообщит здесь. –
@zsxwing Я добавил некоторые отслеживания пользовательского интерфейса. Как видно, этапы занимают немного больше времени в кластере пряжи, особенно во время процедур сортировки. Получают ли эти результаты что-то важное? –