Оптимизация Apache Spark - PullRequest
       75

Оптимизация Apache Spark

0 голосов
/ 02 декабря 2019

Я использую Spark MLlib с Pyspark для своего задания и мне нужно доказать, что это лучше, чем традиционные методы машинного обучения. У меня есть набор данных, на котором я запускаю логистическую регрессию, и я нахожу такие метрики, как Aaccuracy, Precision, Recall и т.д. завершит выполнение быстрее, чего не должно было быть, поскольку в наборе данных много данных. Вскоре я начал копать глубже и понял, что Spark работает только с 1 работником и ему назначено только одно ядро. Поэтому я внес следующие изменения в spark-defaults.conf, поскольку у меня есть виртуальная машина с 8 VCPU и 16 ГБ ОЗУ.

spark.driver.memory 8g
spark.driver.cores 8
spark.executor.instances 8

Теперь время, затраченное Spark на выполнение кода ML на данныхзначительно сократилось. Есть ли какие-то дальнейшие оптимизации, на которые я должен обратить внимание? Я использую Spark в автономном режиме, т.е. мой мастер и рабочий - это один и тот же узел.

1 Ответ

1 голос
/ 02 декабря 2019

Помните, что Spark предназначен для среды больших данных, поэтому, вероятно, он не будет самым быстрым решением для небольших наборов данных (размер <1 ГБ), но он будет необходим для очень больших (размер> несколько ТБ),Это происходит из-за издержек Spark Java, добавляя большую сложность для небольших вычислений, в то время как в кластерных средах (Hadoop) эта структура гарантирует, что даже если некоторые узлы выйдут из строя, вы сможете выполнить свои задачи. Для небольших наборов данных все платформы ML, использующие графические процессоры, являются конкурентами со Spark, но в конце концов Spark дает вам гораздо больше, чем просто ML.

Вот пара статей, которые могут оказаться полезными для настройки: https://spark.apache.org/docs/latest/tuning.html https://spark.apache.org/docs/latest/sql-performance-tuning.html

Мой совет - использовать Dataframes, а не RDD, когда это возможно, так как Catalyst Optimizer запускает и ускоряет вашу работу.

...