2016-12-19 14 views
0

Применяя алгоритм 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)

ИСПОЛНИТЕЛИ И СТАДИИ ИЗ ГПЦ:

enter image description here enter image description here

И СТАДИИ ИСПОЛНИТЕЛИ с сервера:

enter image description here

enter image description here

+0

Моя первая догадка кластер нити не обеспечивает более параллелизм (40 всего ядер 36 ядер В.С.), но он вводит нагрузку на сеть. Без дополнительной информации невозможно выяснить причину. Вы можете использовать пользовательский интерфейс Spark, чтобы сравнить время выполнения заданий и посмотреть, какой из них медленнее. – zsxwing

+0

Спасибо @zsxwing! Я проверю этапы и сообщит здесь. –

+0

@zsxwing Я добавил некоторые отслеживания пользовательского интерфейса. Как видно, этапы занимают немного больше времени в кластере пряжи, особенно во время процедур сортировки. Получают ли эти результаты что-то важное? –

ответ

0

больше памяти забитые в запоминающем устройстве. Вы не используете эту память эффективно, т.е. (вы кешируете данные). В общей сложности менее 10 концертов используется 40 концертов. Вы уменьшаете это запоминающее устройство и используете эту операцию памяти.

Даже если вы указали 11 исполнителей, он запустил только 4 исполнителя. Вывод из первого искрового экрана. Всего ядер, используемых искры, всего 19 для всех исполнителей. Всего ядра равны количеству выполняемых задач.

Пожалуйста, перейдите по следующей ссылке.

https://community.hortonworks.com/articles/42803/spark-on-yarn-executor-resource-allocation-optimiz.html