• Bitcoin $ 11,324.17 (4.9025%)
  • Ethereum $ 313.17 (2.03734%)
 13.07.2019 в 09:52   coinnews

Анализ больших данных: Spark и Hadoop


По данным Forbes, каждый день генерируется около 2,5 квинтиллионов байтов данных. Тем не менее, согласно прогнозам, это число будет постоянно увеличиваться, стоит отметить, что 90% хранимых в настоящее время данных было получено в течение последних двух лет.

Рассмотрим введение в большие данные и различные методы, используемые для их обработки, такие как MapReduce, Apache Spark и Hadoop.

Что отличает большие данные от любого другого большого объема данных, хранящихся в реляционных базах данных, — это их неоднородность. Данные поступают из разных источников и записываются в разных форматах.

Обычно используются три различных способа форматирования данных:

  • Неструктурированные = неорганизованные данные (например, видео).
  • Полуструктурированный = данные организованы в нефиксированном формате (например, JSON).
  • Структурированный = данные хранятся в структурированном формате (например, СУБД).

Большие данные определяются тремя свойствами:

  • Объем = из-за большого объема данных, сохранение данных на одном компьютере невозможно. Как мы можем обрабатывать данные на нескольких машинах, обеспечивая отказоустойчивость?
  • Разнообразие = Как мы можем иметь дело с данными, поступающими из различных источников, которые были отформатированы с использованием различных схем?
  • Скорость = Как мы можем быстро хранить и обрабатывать новые данные?

Большие данные могут быть проанализированы с использованием двух различных методов обработки:

  • Пакетная обработка = обычно используется, если нас интересует объем и разнообразие наших данных. Сначала мы храним все необходимые данные, а затем обрабатываем их за один раз (это может привести к высокой задержке). Типичным примером применения может быть расчет ежемесячных сводок заработной платы.
  • Потоковая обработка = обычно используется, если нас интересует быстрое время отклика. Мы обрабатываем наши данные сразу после их получения (низкая задержка). Примером приложения может быть определение того, является ли банковская транзакция мошеннической или нет.

Большие данные могут быть обработаны с использованием различных инструментов, таких как MapReduce, Spark, Hadoop, Pig, Hive, Cassandra и Kafka. Каждый из этих различных инструментов имеет свои преимущества и недостатки, которые определяют, как компании могут принять решение использовать их.

Анализ больших данных в настоящее время широко используется многими компаниями для прогнозирования рыночных тенденций, персонализации взаимодействия с клиентами, ускорения работы компаний и т. д.

MapReduce

При работе с большим объемом данных, когда у нас заканчиваются ресурсы, есть два возможных решения: горизонтальное или вертикальное масштабирование.

В горизонтальном масштабировании мы решаем эту проблему, добавляя больше машин одинаковой емкости и распределяя рабочую нагрузку. При использовании вертикального масштабирования мы вместо этого масштабируем, добавляя больше вычислительной мощности в нашу машину (например, ЦП, ОЗУ).

Вертикальное масштабирование проще в управлении и контроле, чем горизонтальное, и доказано, что оно эффективно при работе с проблемами сравнительно небольшого размера. Хотя горизонтальное масштабирование обычно дешевле и быстрее вертикального масштабирования при работе с большой проблемой.

MapReduce основан на горизонтальном масштабировании. В MapReduce кластер компьютеров используется для распараллеливания, что упрощает обработку больших данных.

В MapReduce мы берем входные данные и делим их на множество частей. Каждая часть затем отправляется на другой компьютер для обработки и наконец, агрегирования в соответствии с заданной функцией groupby.

Apache Spark

Платформа Apache Spark была разработана в качестве усовершенствования MapReduce. Что выделяет Spark среди конкурентов, так это скорость выполнения, которая примерно в 100 раз выше, чем у MapReduce (промежуточные результаты не сохраняются и все выполняется в памяти).

Apache Spark обычно используется для:

  • Чтение хранимых и данных в реальном времени.
  • Предварительная обработка большого количества данных (SQL).
  • Анализируйте данные с помощью машинного обучения и графовых сетей.

 

Apache Spark можно использовать с такими языками программирования, как Python, R и Scala. Для запуска Spark обычно используются облачные приложения, такие как Amazon Web Services, Microsoft Azure и Databricks (который предоставляет бесплатную версию сообщества).

При использовании Spark наши большие данные распараллеливаются с использованием эластичных распределенных наборов данных (RDDs). RDDs являются основной абстракцией Apache Spark, которая берет наши исходные данные и распределяет их по различным кластерам (работникам). RRD являются отказоустойчивыми, что означает, что они могут восстановить потерянные данные в случае сбоя любого из узлов.

RDDs можно использовать для выполнения двух типов операций в Spark: преобразования и действия

Преобразования создают новые наборы данных из RDDs и возвращают в результате RDDs  (например, отображают, фильтруют и сокращают по ключевым операциям). Все преобразования выполняются только один раз, когда вызывается действие (они помещаются в карту выполнения, а затем выполняются, когда вызывается действие).

Вместо этого используются действия, чтобы получить результаты нашего анализа из Apache Spark и вернуть значение в наше приложение Python / R (например, операции сбора и получения).

Для хранения пар key/value в Spark используются парные RDDs. Пара RDD сформирована двумя RRD, хранящимися в кортеже. Первый элемент tuple используется для хранения значений ключа, а второй — для хранения элементов значения (ключ, значение).

Hadoop

Hadoop — это набор программ с открытым исходным кодом, написанных на Java, которые можно использовать для выполнения операций с большим объемом данных. Hadoop — это масштабируемая, распределенная и отказоустойчивая экосистема. Основными компонентами Hadoop являются:

  • Hadoop YARN = управляет и планирует ресурсы системы, разделяя рабочую нагрузку на кластер машин.
  • Распределенная файловая система Hadoop (HDFS) = это кластерная система хранения файлов, разработанная для обеспечения отказоустойчивости, высокой пропускной способности. Кроме того, он может хранить данные любого типа в любом возможном формате.
  • Hadoop MapReduce = используется для загрузки данных из базы данных, их форматирования и проведения количественного анализа.

Некоторые примеры применения Hadoop: поиск (например, Yahoo), обработка журналов / хранилище данных (например, Facebook) и анализ видео / изображений (например, New York Times).

Традиционно Hadoop была первой системой, которая сделала MapReduce доступной в большом масштабе, хотя Apache Spark в настоящее время является основой предпочтений многих компаний благодаря более высокой скорости выполнения.

Заключение

Термин «большие данные» изначально был придуман для описания проблемы: генерируя большие данные, чем их можем реально обработать. После многих лет исследований и технологических достижений большие данные вместо этого теперь рассматриваются как возможность. Благодаря Big Data последние достижения в области искусственного интеллекта и глубокого обучения стали возможными, что позволило машинам выполнять задачи, которые казались невозможными всего несколько лет назад.

Комментарии: