Введение в концепции и терминологию больших данных

Вступление

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

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

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

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

  • большие наборы данных

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

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

Чем отличаются большие системы данных?

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

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

объем

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

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

Скорость

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

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

разнообразие

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

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

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

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

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

  • * Достоверность *: разнообразие источников и сложность обработки могут привести к сложностям при оценке качества данных (и, следовательно, качества результирующего анализа).

  • * Изменчивость *: изменение данных приводит к значительному изменению качества. Дополнительные ресурсы могут потребоваться для идентификации, обработки или фильтрации данных низкого качества, чтобы сделать их более полезными.

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

Как выглядит жизненный цикл больших данных?

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

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

  • Загрузка данных в систему

  • Сохранение данных в хранилище

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

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

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

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

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

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

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

  • * Высокая доступность *. Кластеры могут обеспечивать различные уровни отказоустойчивости и гарантии доступности, чтобы предотвратить сбои оборудования или программного обеспечения, влияющие на доступ к данным и обработке. Это становится все более важным, поскольку мы по-прежнему подчеркиваем важность аналитики в реальном времени.

  • * Легкая масштабируемость *: кластеры позволяют легко масштабировать по горизонтали, добавляя дополнительные группы в группу. Это означает, что система может реагировать на изменения требований к ресурсам, не увеличивая физические ресурсы на машине.

Использование кластеров требует решения для управления членством в кластере, координации совместного использования ресурсов и планирования фактической работы на отдельных узлах. Членство в кластере и распределение ресурсов могут быть обработаны с помощью программного обеспечения, такого как * Hadoop’s YARN * (что означает еще один согласователь ресурсов) или * Apache Mesos *.

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

Загрузка данных в систему

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

Одним из способов добавления данных в систему больших данных являются специальные инструменты приема. Такие технологии, как * Apache Sqoop *, могут брать существующие данные из реляционных баз данных и добавлять их в систему больших данных. Аналогично, * Apache Flume * и * Apache Chukwa * - это проекты, предназначенные для объединения и импорта журналов приложений и серверов. Системы очередей, такие как * Apache Kafka *, также могут использоваться в качестве интерфейса между различными генераторами данных и большой системой данных. Инфраструктуры проглатывания, такие как * Gobblin *, могут помочь агрегировать и нормализовать вывод этих инструментов в конце конвейера проглатывания.

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

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

Сохранение данных в хранилище

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

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

Данные также могут быть импортированы в другие распределенные системы для более структурированного доступа. Распределенные базы данных, особенно базы данных NoSQL, хорошо подходят для этой роли, потому что они часто разрабатываются с учетом отказоустойчивости и могут обрабатывать разнородные данные. Существует много различных типов распределенных баз данных на выбор, в зависимости от того, как вы хотите организовать и представить данные. Чтобы узнать больше о некоторых опциях и о том, для чего они лучше всего подходят, прочитайте наш https://www.digitalocean.com/community/tutorials/a-comparison-of-nosql-database-management-systems-and-models[NoSQL руководство по сравнению.

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

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

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

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

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

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

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

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

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

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

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

Большой Глоссарий Данных

Хотя мы пытались определить понятия так, как мы использовали их в руководстве, иногда полезно иметь специализированную терминологию в одном месте:

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

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

  • * Кластерные вычисления *: Кластерные вычисления - это практика объединения ресурсов нескольких машин и управления их общими возможностями для выполнения задач. Компьютерные кластеры требуют уровня управления кластером, который управляет связью между отдельными узлами и координирует рабочие задания.

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

  • * Интеллектуальный анализ данных *. Интеллектуальный анализ данных - это широкое понятие для практики поиска шаблонов в больших наборах данных. Это процесс попытки уточнить массу данных в более понятный и сплоченный набор информации.

  • * Хранилище данных *: Хранилища данных - это большие упорядоченные хранилища данных, которые можно использовать для анализа и составления отчетов. В отличие от data lake, хранилище данных состоит из данных, которые были очищены, интегрированы с другими источниками и, как правило, упорядочены. Хранилища данных часто упоминаются в связи с большими данными, но обычно являются компонентами более традиционных систем.

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

  • * Hadoop *: Hadoop - это проект Apache, который был ранним успехом открытого кода в больших данных. Он состоит из распределенной файловой системы, называемой HDFS, с кластером управления кластером и планировщиком ресурсов, который называется YARN (еще один согласователь ресурсов). Возможности пакетной обработки предоставляются механизмом вычислений MapReduce. Другие вычислительные и аналитические системы могут работать вместе с MapReduce в современных развертываниях Hadoop.

  • * Вычисления в памяти *: Вычисления в памяти - это стратегия, которая предполагает перемещение рабочих наборов данных полностью в коллективную память кластера. Промежуточные вычисления не записываются на диск и вместо этого хранятся в памяти. Это дает вычислительным системам в памяти, таким как Apache Spark, огромное преимущество в скорости по сравнению с системами, связанными с вводом / выводом, такими как MapReduce Hadoop.

  • * Машинное обучение *: Машинное обучение - это изучение и практика проектирования систем, которые могут учиться, настраиваться и совершенствоваться на основе данных, которые им передаются. Обычно это включает в себя реализацию прогнозирующих и статистических алгоритмов, которые могут постоянно сосредоточиться на «правильном» поведении и анализировать, как больше данных проходит через систему.

  • * Уменьшение карты (алгоритм больших данных) *: Уменьшение карты (алгоритм больших данных, а не механизм вычислений MapReduce Hadoop) - это алгоритм для планирования работы на вычислительном кластере. Процесс включает в себя разделение поставленной задачи (сопоставление ее с различными узлами) и вычисление по ним для получения промежуточных результатов, перетасовка результатов для выравнивания как наборы, а затем сокращение результатов путем вывода одного значения для каждого набора.

  • * NoSQL *: NoSQL - это широкий термин, относящийся к базам данных, разработанным вне традиционной реляционной модели. Базы данных NoSQL имеют различные компромиссы по сравнению с реляционными базами данных, но часто хорошо подходят для больших систем данных из-за их гибкости и частой архитектуры распределенной первой обработки.

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

Заключение

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

Related