Изменения
→Работа с комплексом Apache Spark для обучения на больших данных
== Работа с комплексом Apache Spark для обучения на больших данных ==
Многие компании на сегодняшний день уже столкнулись с необходимостью обработки больших массивов данных. Для этой цели они начали использовать проекты экосистемы [https://hadoop.apache.org/ Apache Hadoop]. Данная экосистема базируется на [https://ru.wikipedia.org/wiki/MapReduce#:~:text=MapReduce%20%E2%80%94%20%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C%20%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D1%85%20%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9%2C%20%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F,%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D0%BC%D0%B8%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%20%D0%B2%20%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D1%8B%D1%85%20%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B0%D1%85. MapReduce], парадигме параллельного программирования, разработанного компанией Google.
Основные достоинства MapReduce:
* Масштабируемость
* Устойчивость к сбоям
* Простота использования
Но при всех достоинствах данного инструмента, наблюдалась низкая производительность на итеративных алгоритмах (например, алгоритмы машинного обучения). Решение проблемы было найдено в университете Беркли: была разработана модель распределенных вычислений, которая имеет устойчивость к сбоям при пользовании распределенной коллекцией данных(англ. resilient distributed dataset, RDD).На основе RDD по сей день развивается система [https://spark.apache.org/ Apache Spark], которая обладает сравнительно высокой эффективностью при работе итеративных алгоритмов за счет кэширования результатов в памяти. На основе концепции распределенных коллекций разрабатываются распределенные системы:* [https://spark.apache.org/docs/1.0.0/sql-programming-guide.html Shark ] – хранилище данных.* [https://spark.apache.org/docs/latest/graphx-programming-guide.html GraphX ] – система обработки графовых данных.* [https://spark.apache.org/docs/latest/streaming-programming-guide.html Spark Streaming ] – система обработки потоковых данных.* [https://spark.apache.org/docs/latest/ml-guide.html Spark MLlib ] – библиотека алгоритмов машинного обучения.
Все из перечисленных систем совместимы со стеком технологий Hadoop.
MLlib – основная библиотека Spark. Она предоставляет множество служебных программ, полезных для задач машинного обучения: