Введение в большие данные: основные понятия и термины

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

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

Что такое большие данные?

Точное определение «больших данных» трудно сформулировать, потому что проекты, вендоры, специалисты-практики и бизнес-специалисты используют его совершенно по-разному. Имея это в виду, большие данные можно определить как:

  • Большие наборы данных.
  • Категорию вычислительных стратегий и технологий, которые используются для обработки больших наборов данных.

В этом контексте «большой набор данных» означает набор данных, который слишком велик, чтобы обрабатываться или храниться с помощью традиционных инструментов или на одном компьютере. Это означает, что общий масштаб больших наборов данных постоянно меняется и может значительно варьироваться от случая к случаю.

Системы больших данных

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

В 2001 году Даг Лэйни (Doug Laney) из Gartner представил «три V больших данных», чтобы описать некоторые характеристики, которые отличают обработку больших данных от процесса обработки данных других типов:

  1. Volume (объем данных).
  2. Velocity (скорость накопления и обработки данных).
  3. Variety (разнообразие типов обрабатываемых данных).

Объем данных

Исключительный масштаб обрабатываемой информации помогает определить системы больших данных. Эти наборы данных могут быть на порядки больше, чем традиционные наборы, что требует большего внимания на каждом этапе обработки и хранения.

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

Скорость накопления и обработки

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

Этот акцент на мгновенной обратной связи заставил многих специалистов-практиков отказаться от пакетно-ориентированного подхода и отдать предпочтение потоковой системе реального времени. Данные постоянно добавляются, обрабатываются и анализируются, чтобы успевать за притоком новой информации и получать ценные данные на ранней стадии, когда это наиболее актуально. Для этого необходимы надежные системы с высокодоступными компонентами для защиты от сбоев по конвейеру данных.

Разнообразие типов обрабатываемых данных

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

Данные могут поступать из внутренних систем, таких как логи приложений и серверов, из каналов социальных сетей и других внешних API-интерфейсов, с датчиков физических устройств и из других источников. Целью систем больших данных является обработка потенциально полезных данных независимо от происхождения путем объединения всей информации в единую систему.

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

Другие характеристики

Со временем специалисты и организации предложили расширить первоначальные «три V», хотя эти нововведения, как правило, описывают проблемы, а не характеристики больших данных.

  • Veracity (достоверность данных): разнообразие источников и сложность обработки могут привести к проблемам при оценке качества данных (и, следовательно, качества полученного анализа).
  • Variability (изменчивость данных): изменение данных приводит к широким изменениям качества. Для идентификации, обработки или фильтрации данных низкого качества могут потребоваться дополнительные ресурсы, которые смогут повысить качество данных.
  • Value (ценность данных): конечная задача больших данных – это ценность. Иногда системы и процессы очень сложны, что затрудняет использование данных и извлечение фактических значений.

Жизненный цикл больших данных

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

Основные категории, связанные с обработкой больших данных:

  • Внесение данных в систему
  • Сохранение данных в хранилище
  • Вычисление и анализ данных
  • Визуализация результатов

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

Кластерные вычисления

Из-за качества больших данных отдельные компьютеры не подходят для обработки данных. Для этого больше подходят кластеры, так как они могут справляться с хранением и вычислительными потребностями больших данных.

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

  • Объединение ресурсов: для обработки больших наборов данных требуется большое количество ресурсов процессора и памяти, а также много доступного пространства для хранения данных.
  • Высокая доступность: кластеры могут обеспечивать различные уровни отказоустойчивости и доступности, благодаря чему аппаратные или программные сбои не повлияют на доступ к данным и их обработку. Это особенно важно для аналитики в реальном времени.
  • Масштабируемость: кластеры поддерживают быстрое горизонтальное масштабирование (добавление новых машин в кластер).

Для работы в кластере необходимы средства для управления членством в кластере, координации распределения ресурсов и планирования работы с отдельными нодами. Членство в кластерах и распределение ресурсов можно обрабатывать с помощью программ типа Hadoop YARN (Yet Another Resource Negotiator) или Apache Mesos.

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

Получение данных

Прием данных – это процесс добавления необработанных данных в систему. Сложность этой операции во многом зависит от формата и качества источников данных и от того, насколько данные отвечают требованиям для обработки.

Добавить большие данные в систему можно с помощью специальных инструментов. Такие технологии, как Apache Sqoop, могут принимать существующие данные из реляционных БД и добавлять их в систему больших данных. Также можно использовать Apache Flume и Apache Chukwa – проекты, предназначенные для агрегирования и импорта логов приложений и серверов. Брокеры сообщений, такие как Apache Kafka, могут использоваться в качестве интерфейса между различными генераторами данных и системой больших данных. Фреймворки типа Gobblin могут объединить и оптимизировать вывод всех инструментов в конце конвейера.

Во время приема данных обычно проводится анализ, сортировка и маркировка. Этот процесс иногда называют ETL (extract, transform, load), что означает извлечение, преобразование и загрузку. Хотя этот термин обычно относится к устаревшим процессам хранения данных, иногда он применяется и к системам больших данных. среди типичных операций – изменение входящих данных для форматирования, категоризация и маркировка, фильтрация или проверка данных на соответствие требованиям.

В идеале, поступившие данные проходят минимальное форматирование.

Хранение данных

После приема данные переходят к компонентам, которые управляют хранилищем.

Обычно для хранения необработанных данных используются распределенные файловые системы. Такие решения, как HDFS от Apache Hadoop, позволяют записывать большие объемы данных на несколько нод в кластере. Эта система обеспечивает вычислительным ресурсам доступ к данным, может загрузить данные в ОЗУ кластера для операций с памятью и обрабатывать сбои компонентов. Вместо HDFS могут использоваться другие распределенные файловые системы, включая Ceph и GlusterFS.

Данные также можно импортировать в другие распределенные системы для более структурированного доступа. Распределенные базы данных, особенно базы данных NoSQL, хорошо подходят для этой роли, поскольку они могут обрабатывать неоднородные данные. Существует множество различных типов распределенных баз данных, выбор зависит от того, как вы хотите организовывать и представлять данные.

Читайте также: Модели и системы управления базами данных NoSQL

Вычисление и анализ данных

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

Пакетная обработка – это один из методов вычисления в больших наборах данных. Этот процесс включает разбивку данных на более мелкие части, планирование обработки каждой части на отдельной машине, перестановку данных на основе промежуточных результатов, а затем вычисление и сбор окончательного результата. Эту стратегию использует MapReduce от Apache Hadoop. Пакетная обработка наиболее полезна при работе с очень большими наборами данных, для которых требуется довольно много вычислений.

Другие рабочие нагрузки требуют обработки в режиме реального времени. При этом информация должна обрабатываться и готовиться немедленно, и система должна своевременно реагировать по мере поступления новой информации. Одним из способов реализации обработки в реальном времени является обработка непрерывного потока данных, состоящих из отдельных элементов. Еще одна общая характеристика процессоров реального времени – это вычисления данных в памяти кластера, что позволяет избежать необходимости записи на диск.

Apache Storm, Apache Flink и Apache Spark предлагают различные способы реализации обработки в реальном времени. Эти гибкие технологии позволяют подобрать наилучший подход для каждой отдельной проблемы. В общем, обработка в режиме реального времени лучше всего подходит для анализа небольших фрагментов данных, которые меняются или быстро добавляются в систему.

Все эти программы являются фреймворками. Однако есть много других способов вычисления или анализа данных в системе больших данных. Эти инструменты часто подключаются к вышеуказанным фреймворкам и предоставляют дополнительные интерфейсы для взаимодействия с нижележащими уровнями. Например, Apache Hive предоставляет интерфейс хранилища данных для Hadoop, Apache Pig предоставляет интерфейс запросов, а взаимодействия с данными SQL обеспечиваются с помощью Apache Drill, Apache Impala, Apache Spark SQL и Presto. В машинном обучении применяются Apache SystemML, Apache Mahout и MLlib от Apache Spark. Для прямого аналитического программирования, которое широко поддерживается экосистемой данных, используют R и Python.

Визуализация результатов

Часто распознавание тенденций или изменений в данных с течением времени важнее полученных значений. Визуализация данных – один из наиболее полезных способов выявления тенденций и организации большого количества точек данных.

Обработка в реальном времени используется для визуализации метрик приложения и сервера. Данные часто меняются, и большие разлеты в показателях обычно указывают на значительное влияние на состояние систем или организаций. Проекты типа Prometheus можно использовать для обработки потоков данных и временных рядов и визуализации этой информации.

Одним из популярных способов визуализации данных является стек Elastic, ранее известный как стек ELK. Logstash используется для сбора данных, Elasticsearch для индексирования данных, а Kibana – для визуализации. Стек Elastic может работать с большими данными, визуализировать результаты вычислений или взаимодействовать с необработанными метриками. Аналогичный стек можно получить, объединив Apache Solr для индексирования форк Kibana под названием Banana для визуализации. Такой стек называется Silk.

Другой технологией визуализации для интерактивной работы в области данных являются документы. Такие проекты позволяют осуществлять интерактивное исследование и визуализацию данных в формате, удобном для совместного использования и представления данных. Популярными примерами этого типа интерфейса являются Jupyter Notebook и Apache Zeppelin.

Глоссарий больших данных

  • Большие данные – широкий термин для обозначения наборов данных, которые не могут быть корректно обработаны обычными компьютерами или инструментами из-за их объема, скорости поступления и разнообразия. Этот термин также обычно применяется к технологиям и стратегиям для работы с такими данными.
  • Пакетная обработка – это вычислительная стратегия, которая включает обработку данных в больших наборах. Обычно этот метод идеально подходит для работы с несрочными данными.
  • Кластеризованные вычисления – это практика объединения ресурсов нескольких машин и управления их общими возможностями для выполнения задач. При этом необходим уровень управления кластером, который обрабатывает связь между отдельными нодами.
  • Озеро данных – большое хранилище собранных данных в относительно сыром состоянии. Этот термин часто используется для обозначения неструктурированных и часто меняющихся больших данных.
  • Добыча данных – это широкий термин для обозначения разных практик поиска шаблонов в больших наборах данных. Это попытка организовать массу данных в более понятный и связный набор информации.
  • Хранилище данных (data warehouse) — это большое, упорядоченное хранилище для анализа и отчетности. В отличие от озера данных хранилище состоит из отформатированных и хорошо упорядоченных данных, интегрированных с другими источниками. Хранилища данных часто упоминаются в отношении больших данных, но часто они являются компонентами обычных систем обработки данных.
  • ETL (extract, transform, и load) – извлечение, преобразование и загрузка данных. Так выглядит процесс получения и подготовки необработанных данных к использованию. Он связан с хранилищами данных, но характеристики этого процесса также обнаруживаются в конвейерах систем больших данных.
  • Hadoop – это проект Apache с открытым исходным кодом для больших данных. Он состоит из распределенной файловой системы под названием HDFS и планировщика кластеров и ресурсов, который называется YARN. Возможности пакетной обработки предоставляются механизмом вычисления MapReduce. Вместе с MapReduce в современных развертываниях Hadoop можно запускать другие вычислительные и аналитические системы.
  • Вычисления в памяти – это стратегия, которая предполагает полное перемещение рабочих наборов данных в память кластера. Промежуточные вычисления не записываются на диск, вместо этого они хранятся в памяти. Это дает системам огромное преимущество в скорости по сравнению с системами, связанными с I/O.
  • Машинное обучение – это исследование и практика проектирования систем, которые могут учиться, настраиваться и улучшаться на основе передаваемых им данных. Обычно под этим подразумевают реализацию прогнозирующих и статистических алгоритмов.
  • Map reduce (не путать с MapReduce от Hadoop) – это алгоритм планирования работы вычислительного кластера. Процесс включает в себя разделение задачи между нодами и получение промежуточных результатов, перетасовку и последующий вывод единого значения для каждого набора.
  • NoSQL – это широкий термин, обозначающий базы данных, разработанные вне традиционной реляционной модели. Базы данных NoSQL хорошо подходят для больших данных благодаря их гибкости и распределенной архитектуре.
  • Потоковая обработка – это практика вычисления отдельных элементов данных при их перемещении по системе. Это позволяет анализировать данные в режиме реального времени и подходит для обработки срочных операций с использованием высокоскоростных метрик.
Tags: