Изменения
Нет описания правки
== Признаки больших данных. Правило VVV ==
Чтобы массив информации обозначить приставкой «big» он должен обладать следующими признаками:
* Volume (Объем) {{---}} данные измеряются по физической величине и занимаемому пространству на цифровом носителе. К «big» относят массивы свыше 150 Гб в сутки.;* Velocity (Скорость, обновление) {{---}} информация регулярно обновляется и для обработки в реальном времени необходимы интеллектуальные технологии больших данных.;
* Variety (Разнообразие) {{---}} информация в массивах может иметь неоднородные форматы, быть структурированной частично, полностью и скапливаться бессистемно. Например, социальные сети используют большие данные в виде текстов, видео, аудио, финансовых транзакций, картинок и прочего.
В современных системах рассматриваются два дополнительных фактора:
* Variability (Изменчивость) {{---}} потоки данных могут иметь пики и спады, сезонности, периодичность. Всплески неструктурированной информации сложны в управлении, требует мощных технологий обработки.;
* Value (Значение данных) {{---}} информация может иметь разную сложность для восприятия и переработки, что затрудняет работу интеллектуальным системам. Например, массив сообщений из соцсетей {{---}} это один уровень данных, а транзакционные операции {{---}} другой. Задача машин определить степень важности поступающей информации, чтобы быстро структурировать.
* Любая попытка обработать большие данные целиком скорее всего приведёт к очень длительному ожиданию результата, если обработка происходит традиционными способами (например, чтение массива в цикле);
* В связи с большим потоком данных, конечный их набор постоянно изменяется, поэтому необходимо анализировать данные особым образом. Так, чтобы своевременно актуализировать информацию о них;
* Возникает проблема разнородности данных. Необходимо уметь обрабатывать данные различных форматов в рамках одной системы. Например, описания книг, фильмов и музыки.
Также стоит отметить, что в связи с большой популярностью "больших данных", эта сфера очень быстро развивается, постоянно появляются всё новые технологии и инструменты для работы. Для бизнеса это приводит к дополнительным материальным затратам, т. к. крайне важно "идти в ногу со временем". Для специалистов по "большим данным" это так же приводит к дополнительным трудностям, т. к. необходимо крайне быстро овладевать этими новыми технологиями.
Многие компании на сегодняшний день уже столкнулись с необходимостью обработки больших массивов данных. Для этой цели они начали использовать проекты экосистемы [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. Она предоставляет множество служебных программ, полезных для задач машинного обучения:
* Классификация;* Регрессия;* Кластеризация;* Моделирование;* Сингулярное разложение и анализ по методу главных компонент;* Проверка гипотез и статистической выборки.
== Примеры реализации алгоритмов с использованием Spark MLlib ==