Вычисления с интенсивным использованием данных
Вычисления с интенсивным использованием данных — это класс приложений параллельных вычислений , которые используют параллельный подход к обработке данных для обработки больших объемов данных, обычно размером в терабайты или петабайты и обычно называемых большими данными . Вычислительные приложения, которые посвящают большую часть времени выполнения вычислительным задачам, считаются ресурсоемкими, тогда как приложения, требующие больших объемов данных, требуют больших объемов данных и посвящают большую часть своего времени обработке операциям ввода-вывода и манипулированию данными. [1]
Введение
[ редактировать ]Быстрый рост Интернета и Всемирной паутины привел к появлению огромных объемов информации, доступных в Интернете. Кроме того, бизнес и государственные организации создают большие объемы как структурированной, так и неструктурированной информации , которую необходимо обрабатывать, анализировать и связывать. Винтон Серф назвал это «информационной лавиной» и заявил: «Мы должны использовать энергию Интернета, прежде чем высвобождаемая им информация похоронит нас». [2] В официальном документе IDC , спонсируемом корпорацией EMC, объем информации, хранящейся в настоящее время в цифровой форме в 2007 году, оценивается в 281 эксабайт, а общий совокупный темп роста - в 57%, причем объем информации в организациях растет еще более быстрыми темпами. [3] В исследовании так называемого информационного взрыва, проведенном в 2003 году, было подсчитано, что 95% всей текущей информации существует в неструктурированной форме с повышенными требованиями к обработке данных по сравнению со структурированной информацией. [4] Хранение, управление, доступ и обработка этого огромного количества данных представляют собой фундаментальную потребность и огромную проблему для удовлетворения потребностей в поиске, анализе, добыче и визуализации этих данных в виде информации. [5] Вычисления с интенсивным использованием данных призваны удовлетворить эту потребность.
Подходы к параллельной обработке обычно можно классифицировать как интенсивные вычисления или интенсивные данные . [6] [7] [8] Термин «интенсивные вычисления» используется для описания прикладных программ, ориентированных на вычисления. Такие приложения посвящают большую часть времени выполнения вычислительным задачам, а не вводу-выводу, и обычно требуют небольших объемов данных. Параллельная обработка приложений с интенсивными вычислениями обычно включает в себя распараллеливание отдельных алгоритмов внутри процесса приложения и разложение всего процесса приложения на отдельные задачи, которые затем могут выполняться параллельно на соответствующей вычислительной платформе для достижения общей более высокой производительности, чем последовательная обработка. В приложениях с интенсивными вычислениями одновременно выполняются несколько операций, каждая из которых решает определенную часть проблемы. Это часто называют параллелизмом задач .
Термин «интенсивные данные» используется для описания приложений, которые связаны с вводом-выводом или которым необходимо обрабатывать большие объемы данных. [9] Такие приложения посвящают большую часть своего времени обработке ввода-вывода, а также перемещения и манипулирования данными. Параллельная обработка приложений с интенсивным использованием данных обычно включает в себя разделение или разделение данных на несколько сегментов, которые могут обрабатываться независимо с использованием одной и той же исполняемой прикладной программы параллельно на соответствующей вычислительной платформе, а затем повторно собирать результаты для получения завершенных выходных данных. [10] Чем больше совокупное распределение данных, тем больше преимуществ от параллельной обработки данных. Требования к интенсивной обработке данных обычно масштабируются линейно в зависимости от размера данных и легко поддаются прямому распараллеливанию. Фундаментальными проблемами вычислений с интенсивным использованием данных являются управление и обработка экспоненциально растущих объемов данных, значительное сокращение связанных циклов анализа данных для поддержки практических и своевременных приложений, а также разработка новых алгоритмов, которые могут масштабироваться для поиска и обработки огромных объемов данных. Исследователи придумали термин BORPS для «миллиардов записей в секунду» для измерения скорости обработки записей аналогично тому, как термин MIPS применяется для описания скорости обработки компьютеров. [11]
Параллелизм данных
[ редактировать ]Архитектуры компьютерных систем, которые могут поддерживать приложения, работающие с параллельными данными , были продвинуты в начале 2000-х годов для крупномасштабных требований к обработке данных при вычислениях с интенсивным использованием данных. [12] При параллелизме данных вычисления применяются независимо к каждому элементу данных в наборе данных, что позволяет масштабировать степень параллелизма в зависимости от объема данных. Наиболее важной причиной разработки приложений с параллельными данными является возможность масштабируемой производительности, что может привести к повышению производительности на несколько порядков. Ключевыми проблемами при разработке приложений с использованием параллелизма данных являются выбор алгоритма, стратегия декомпозиции данных, балансировка нагрузки на узлы обработки, передача сообщений между узлами и общая точность результатов. [13] Разработка приложения, работающего с параллельными данными, может потребовать существенной сложности программирования для определения проблемы в контексте доступных инструментов программирования и устранения ограничений целевой архитектуры. Извлечение информации из веб-документов и их индексирование типично для вычислений с интенсивным использованием данных, которые могут обеспечить значительный выигрыш в производительности за счет параллельных реализаций данных, поскольку коллекции веб-документов и других типов документов обычно могут обрабатываться параллельно. [14]
США Национальный научный фонд (NSF) финансировал исследовательскую программу с 2009 по 2010 год. [15] Направлениями внимания были:
- Подходы к параллельному программированию для решения задач параллельной обработки данных в системах с интенсивным использованием данных.
- Абстракции программирования, включая модели, языки и алгоритмы , которые позволяют естественно выражать параллельную обработку данных.
- Проектирование вычислительных платформ с интенсивным использованием данных для обеспечения высокого уровня надежности, эффективности, доступности и масштабируемости.
- Определение приложений, которые могут использовать эту вычислительную парадигму, и определение того, как она должна развиваться для поддержки новых приложений с интенсивным использованием данных.
Национальная лаборатория Тихоокеанского Северо-Запада определила вычисления с интенсивным использованием данных как «сбор, управление, анализ и понимание данных в объемах и скоростях, которые расширяют границы современных технологий». [16] [17]
Подход
[ редактировать ]Вычислительные платформы с интенсивным использованием данных обычно используют подход параллельных вычислений, объединяющий несколько процессоров и дисков в большие стандартные вычислительные кластеры , соединенные с помощью высокоскоростных коммуникационных коммутаторов и сетей, что позволяет распределять данные между доступными вычислительными ресурсами и обрабатывать их независимо для достижения производительности и масштабируемости. в зависимости от объема данных. Кластер можно определить как тип параллельной и распределенной системы , которая состоит из набора взаимосвязанных автономных компьютеров, работающих вместе как единый интегрированный вычислительный ресурс. [18] Этот подход к параллельной обработке часто называют подходом «ничего общего», поскольку каждый узел, состоящий из процессора, локальной памяти и дисковых ресурсов, ничего не разделяет с другими узлами в кластере. В параллельных вычислениях этот подход считается подходящим для вычислений с интенсивным использованием данных и задач, которые являются «затруднительно параллельными», т. е. когда относительно легко разделить проблему на ряд параллельных задач и между другими задачами не требуется никакой зависимости или связи. чем общее управление задачами. Эти типы задач обработки данных по своей сути адаптируются к различным формам распределенных вычислений, включая кластеры, сетки данных и облачные вычисления .
Характеристики
[ редактировать ]Несколько общих характеристик вычислительных систем с интенсивным использованием данных отличают их от других форм вычислений:
- Для выполнения вычислений используется принцип сбора данных и программ или алгоритмов. Для достижения высокой производительности в вычислениях с интенсивным использованием данных важно минимизировать перемещение данных. [19] Эта характеристика позволяет алгоритмам обработки выполняться на узлах, где находятся данные, сокращая накладные расходы системы и повышая производительность. [20] Новые технологии, такие как InfiniBand, позволяют хранить данные в отдельном репозитории и обеспечивают производительность, сравнимую с совместно размещенными данными.
- Используемая модель программирования. Вычислительные системы с интенсивным использованием данных используют машинно-независимый подход, при котором приложения выражаются в виде высокоуровневых операций с данными, а система времени выполнения прозрачно контролирует планирование, выполнение, балансировку нагрузки, связь и перемещение программ и данных по сети. распределенный вычислительный кластер. [21] Абстракция программирования и языковые инструменты позволяют выразить обработку в терминах потоков данных и преобразований, включающих новые языки программирования потоков данных и общие библиотеки общих алгоритмов манипулирования данными, таких как сортировка.
- Акцент на надежность и доступность. Крупномасштабные системы с сотнями или тысячами узлов обработки по своей природе более подвержены сбоям оборудования, ошибкам связи и ошибкам программного обеспечения. Вычислительные системы с интенсивным использованием данных спроектированы так, чтобы быть отказоустойчивыми. Обычно это включает избыточные копии всех файлов данных на диске, хранение промежуточных результатов обработки на диске, автоматическое обнаружение сбоев узла или обработки и выборочный повторный расчет результатов.
- Присущая базовому аппаратному и программному обеспечению масштабируемость . Вычислительные системы с интенсивным использованием данных обычно можно масштабировать линейным образом для размещения практически любого объема данных или для удовлетворения критичных по времени требований к производительности путем простого добавления дополнительных узлов обработки. Количество узлов и задач обработки, назначенных для конкретного приложения, может быть переменным или фиксированным в зависимости от аппаратного обеспечения, программного обеспечения, коммуникаций и архитектуры распределенной файловой системы .
Системные архитектуры
[ редактировать ]различные системные Для вычислений с интенсивным использованием данных и крупномасштабных приложений анализа данных были реализованы архитектуры, включая параллельные и распределенные системы управления реляционными базами данных , которые уже более двух десятилетий доступны для работы на кластерах узлов обработки без общего доступа. [22] Однако большая часть роста данных приходится на данные в неструктурированной форме, и необходимы новые парадигмы обработки с более гибкими моделями данных. Появилось несколько решений, включая архитектуру MapReduce , впервые разработанную Google и теперь доступную в реализации с открытым исходным кодом под названием Hadoop, используемой Yahoo , Facebook и другими. LexisNexis Risk Solutions также разработала и внедрила масштабируемую платформу для вычислений с интенсивным использованием данных, которую использует LexisNexis .
MapReduce
[ редактировать ]Модель архитектуры и программирования MapReduce , впервые разработанная Google, является примером современной системной архитектуры, предназначенной для вычислений с интенсивным использованием данных. [23] Архитектура MapReduce позволяет программистам использовать стиль функционального программирования для создания функции карты, которая обрабатывает пару ключ-значение , связанную с входными данными, для создания набора промежуточных пар ключ-значение , а также функцию сокращения, которая объединяет все промежуточные значения, связанные с тот же промежуточный ключ. Поскольку система автоматически заботится о таких деталях, как разделение входных данных, планирование и выполнение задач в кластере обработки, а также управление связью между узлами, программисты, не имеющие опыта параллельного программирования, могут легко использовать большую распределенную среду обработки.
Модель программирования для архитектуры MapReduce представляет собой простую абстракцию, в которой вычисления берут набор входных пар ключ-значение, связанных с входными данными, и создают набор выходных пар ключ-значение. На этапе карты входные данные разбиваются на входные разделения и назначаются задачам карты, связанным с узлами обработки в кластере. Задача Map обычно выполняется на том же узле, содержащем назначенный ему раздел данных в кластере. Эти задачи Map выполняют заданные пользователем вычисления для каждой входной пары ключ-значение из раздела входных данных, назначенного задаче, и генерируют набор промежуточных результатов для каждого ключа. Затем на этапе перемешивания и сортировки берутся промежуточные данные, сгенерированные каждой задачей Map, сортируются эти данные с промежуточными данными из других узлов, делятся эти данные на области для обработки задачами сокращения и распределяются по мере необходимости по узлам, где выполняется сокращение. задачи будут выполняться. Задачи сокращения выполняют дополнительные заданные пользователем операции над промежуточными данными, возможно, объединяя значения, связанные с ключом, с меньшим набором значений для получения выходных данных. Для более сложных процедур обработки данных несколько вызовов MapReduce могут быть последовательно связаны друг с другом.
Хадуп
[ редактировать ]Apache Hadoop — это проект программного обеспечения с открытым исходным кодом, спонсируемый Apache Software Foundation , который реализует архитектуру MapReduce. Hadoop теперь включает в себя несколько подпроектов в дополнение к базовому ядру, MapReduce и распределенной файловой системе HDFS. Эти дополнительные подпроекты предоставляют расширенные возможности обработки приложений для базовой реализации Hadoop и в настоящее время включают Avro, Pig , HBase , ZooKeeper , Hive и Chukwa. Архитектура Hadoop MapReduce функционально аналогична реализации Google, за исключением того, что базовым языком программирования для Hadoop является Java , а не C++ . Реализация предназначена для выполнения на кластерах обычных процессоров.
Hadoop реализует распределенную среду планирования и выполнения обработки данных, а также структуру для заданий MapReduce. Hadoop включает распределенную файловую систему под названием HDFS, которая аналогична GFS в реализации Google MapReduce. Среда выполнения Hadoop поддерживает дополнительные возможности распределенной обработки данных, которые предназначены для работы с использованием архитектуры Hadoop MapReduce. К ним относятся HBase , распределенная база данных, ориентированная на столбцы, которая обеспечивает возможности чтения/записи с произвольным доступом; Hive — система хранилища данных , построенная на основе Hadoop и предоставляющая возможности SQL -подобных запросов для суммирования данных, специальных запросов и анализа больших наборов данных; и Pig — высокоуровневый язык программирования потоков данных и среда выполнения для вычислений с интенсивным использованием данных.
Pig был разработан в Yahoo! обеспечить специальный язык обозначения для приложений анализа данных, а также повысить производительность программистов и сократить циклы разработки при использовании среды Hadoop MapReduce. Программы Pig автоматически транслируются в последовательности программ MapReduce, если это необходимо в среде выполнения. Pig предоставляет возможности языка для загрузки, хранения, фильтрации, группировки, дедупликации, упорядочивания, сортировки, агрегирования и объединения операций над данными. [24]
HPCC
[ редактировать ]HPCC (кластер высокопроизводительных вычислений) был разработан и внедрен компанией LexisNexis Risk Solutions. Разработка этой вычислительной платформы началась в 1999 году, а приложения уже были в производстве к концу 2000 года. В подходе HPCC также используются стандартные кластеры аппаратного обеспечения под управлением операционной системы Linux . Специальное системное программное обеспечение и компоненты промежуточного программного обеспечения были разработаны и внедрены в базовую операционную систему Linux, чтобы обеспечить среду выполнения и поддержку распределенной файловой системы, необходимые для вычислений с интенсивным использованием данных. LexisNexis также реализовал новый язык высокого уровня для вычислений с интенсивным использованием данных.
Язык программирования ECL — это высокоуровневый декларативный, ориентированный на данные, неявно параллельный язык, который позволяет программисту определить, каким должен быть результат обработки данных, а также потоки данных и преобразования, необходимые для достижения результата. Язык ECL включает в себя обширные возможности для определения, фильтрации, управления данными и преобразования данных, а также предоставляет обширный набор встроенных функций для работы с записями в наборах данных, которые могут включать определяемые пользователем функции преобразования. Программы ECL компилируются в оптимизированный исходный код C++ , который впоследствии компилируется в исполняемый код и распространяется по узлам обрабатывающего кластера.
Для решения как пакетных, так и онлайн-задач приложений с интенсивным использованием данных HPCC включает в себя две отдельные кластерные среды, каждую из которых можно оптимизировать независимо для целей параллельной обработки данных. Платформа Thor представляет собой кластер, целью которого является очистка данных для обработки огромных объемов необработанных данных для таких приложений, как очистка и гигиена данных, извлечение, преобразование, загрузка (ETL), связывание записей и разрешение сущностей, крупномасштабные специальные анализ данных и создание ключевых данных и индексов для поддержки высокопроизводительных структурированных запросов и приложений хранилищ данных. Система Thor аналогична платформе Hadoop MapReduce по конфигурации оборудования, функциям, среде выполнения, файловой системе и возможностям, но обеспечивает более высокую производительность в эквивалентных конфигурациях. Платформа Roxie предоставляет высокопроизводительную онлайн-систему структурированных запросов и анализа или хранилище данных, обеспечивающее требования к параллельной обработке доступа к данным онлайн-приложений через интерфейсы веб-сервисов, поддерживающие тысячи одновременных запросов и пользователей с временем ответа менее секунды. Система Roxie по своим функциям и возможностям аналогична Hadoop с добавленными возможностями HBase и Hive , но обеспечивает оптимизированную среду выполнения и файловую систему для высокопроизводительной онлайн-обработки. Системы Thor и Roxie используют один и тот же язык программирования ECL для реализации приложений, что повышает производительность программистов.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Справочник по облачным вычислениям , «Технологии с интенсивным использованием данных для облачных вычислений», А. М. Миддлтон. Справочник по облачным вычислениям. Спрингер, 2010.
- ^ Информационная лавина , Винтон Серф, IEEE Computer, Vol. 40, № 1, 2007, стр. 104-105.
- ↑ Расширяющаяся цифровая вселенная . Архивировано 27 июня 2013 года в Wayback Machine Дж. Ф. Ганцем, Д. Рейнселем, К. Чуте, В. Шлихтингом, Дж. Макартуром, С. Минтоном, Дж. Ксенети, А. Тончевой и А. Манфредиз, IDC , Белая книга, 2007 г.
- ^ Сколько информации? 2003 г. , П. Лайман и Х.Р. Вариан, Калифорнийский университет в Беркли, Отчет об исследовании, 2003 г.
- ^ Есть данные? Руководство по сохранению данных в век информации. Архивировано 18 июля 2011 г. в Wayback Machine , автор: Ф. Берман, Communications of the ACM, Vol. 51, № 12, 2008 г., стр. 50-56.
- ^ Модели и языки для параллельных вычислений , Д.Б. Скилликорн и Д. Талия, ACM Computing Surveys, Vol. 30, № 2, 1998, стр. 123-169.
- ^ Компьютеры в 21 веке [ постоянная мертвая ссылка ] , И. Гортон, П. Гринфилд, А. Салай и Р. Уильямс, IEEE Computer, Vol. 41, № 4, 2008, стр. 30-32.
- ^ Высокоскоростные, обширные вычисления с интенсивным использованием данных: десятилетняя ретроспектива , У.Э. Джонстон, Компьютерное общество IEEE, 1998.
- ^ IEEE: Аппаратные технологии для высокопроизводительных вычислений с интенсивным использованием данных , М. Гохале, Дж. Коэн, А. Ю и В.М. Миллер, IEEE Computer, Vol. 41, № 4, 2008, стр. 60-68.
- ^ IEEE: Методология проектирования приложений с параллельными данными. Архивировано 24 июля 2011 г. в Wayback Machine , Л.С. Найланд, Дж. Ф. Принс, А. Голдберг и П. Х. Миллс, Транзакции IEEE по разработке программного обеспечения, Vol. 26, № 4, 2000, стр. 293-314.
- ^ Справочник по облачным вычислениям. Архивировано 25 ноября 2010 г. в Wayback Machine , «Технологии с интенсивным использованием данных для облачных вычислений», автор: А.М. Миддлтон. Справочник по облачным вычислениям. Спрингер, 2010, стр. 83–86.
- ^ Терамасштабный вызов Д. Равичандрана, П. Пантеля и Э. Хови. «Терамасштабная задача», Материалы семинара KDD по майнингу для семантической сети и из нее, 2004 г.
- ^ Динамическая адаптация к доступным ресурсам для параллельных вычислений в автономной сети рабочих станций. Архивировано 20 июля 2011 г. в Wayback Machine У. Ренкузогуллари и С. Дваркадас . «Динамическая адаптация к доступным ресурсам для параллельных вычислений в автономной сети рабочих станций», Материалы восьмого симпозиума ACM SIGPLAN по принципам и практике параллельного программирования, 2001 г.
- ^ Извлечение информации в большие коллекции документов , Э. Агихтейн, «Масштабирование извлечения информации в большие коллекции документов», Microsoft Research, 2004 г.
- ^ «Вычисления с интенсивным использованием данных» . Описание программы . НФС. 2009 . Проверено 24 апреля 2017 г. .
- ^ Вычисления с интенсивным использованием данных от PNNL. «Вычисления с интенсивным использованием данных», 2008 г.
- ^ Меняющаяся парадигма вычислений с интенсивным использованием данных , Р. Т. Кузес, Г. А. Андерсон, С. Т. Элберт, И. Гортон и Д. К. Грасио, «Изменяющаяся парадигма вычислений с интенсивным использованием данных», Computer, Vol. 42, № 1, 2009, стр. 26-3
- ^ Облачные вычисления и новые ИТ-платформы Р. Буйя, К.С. Йео, С. Венугопал, Дж. Броберг и И. Брандич , «Облачные вычисления и новые ИТ-платформы: видение, шумиха и реальность для предоставления вычислений как 5-й утилиты», «Компьютерные системы будущего поколения», Vol. 25, № 6, 2009, стр. 599-616.
- ^ Экономика распределенных вычислений Дж. Грея, «Экономика распределенных вычислений», ACM Queue, Vol. 6, № 3, 2008, стр. 63-68.
- ^ Компьютеры в 21 веке [ постоянная мертвая ссылка ] , И. Гортон, П. Гринфилд, А. Салай и Р. Уильямс, IEEE Computer, Vol. 41, № 4, 2008, стр. 30-32.
- ^ Масштабируемые вычисления с интенсивным использованием данных , Р.Э. Брайант. «Масштабируемые вычисления с интенсивным использованием данных», 2008 г.
- ^ Сравнение подходов к крупномасштабному анализу данных А. Павло, Э. Полсона, А. Разина, DJ Абади, DJ Девитта, С. Мэддена и М. Стоунбрейкера. Материалы 35-й Международной конференции SIGMOD по управлению данными, 2009 г.
- ^ MapReduce: упрощенная обработка данных в больших кластерах. Архивировано 23 декабря 2009 г. в Wayback Machine Дж. Дином и С. Гемаватом. Материалы шестого симпозиума по проектированию и внедрению операционных систем (OSDI), 2004 г.
- ^ как первоклассная гражданская свинья. Латынь: не совсем иностранный язык для обработки данных. Архивировано 20 июля 2011 г. в Wayback Machine К. Олстоном, Б. Ридом, У. Шриваставой, Р. Кумаром и А. Томкинс. (Презентация на SIGMOD 2008),» 2008 г.