Вычисления с интенсивным использованием данных - это класс приложений для параллельных вычислений, которые используют подход параллельных данных для обработки больших объемов данных, обычно размером в терабайты или петабайты и обычно называемых большими данными . Вычислительные приложения, которые посвящают большую часть своего времени выполнению вычислительным требованиям, считаются ресурсоемкими, тогда как вычислительные приложения, которые требуют больших объемов данных и посвящают большую часть своего времени обработки вводу-выводу и манипулированию данными, считаются ресурсоемкими. [1]
Вступление
Быстрый рост Интернета и World Wide Web привел к появлению огромного количества информации, доступной в Интернете. Кроме того, коммерческие и правительственные организации создают большие объемы как структурированной, так и неструктурированной информации, которую необходимо обрабатывать, анализировать и связывать. Винтон Серф охарактеризовал это как «информационную лавину» и заявил, что «мы должны использовать энергию Интернета, прежде чем информация, которую он передает, похоронит нас». [2] В официальном документе IDC, спонсируемом EMC Corporation, объем информации, хранящейся в настоящее время в цифровой форме в 2007 году, оценивается в 281 эксабайт, а общий совокупный темп роста - в 57%, при этом объем информации в организациях растет еще более быстрыми темпами. [3] В исследовании 2003 года так называемого информационного взрыва было подсчитано, что 95% всей текущей информации существует в неструктурированной форме с повышенными требованиями к обработке данных по сравнению со структурированной информацией. [4] Хранение, управление, доступ и обработка этого огромного количества данных представляет собой фундаментальную потребность и огромную проблему для удовлетворения потребностей в поиске, анализе, добыче и визуализации этих данных как информации. [5] Для удовлетворения этой потребности предназначены вычисления с интенсивным использованием данных.
Подходы к параллельной обработке обычно можно разделить на интенсивные вычисления или данные . [6] [7] [8] Вычислительные ресурсы используются для описания прикладных программ с ограниченными вычислительными возможностями. Такие приложения посвящают большую часть своего времени выполнению вычислительным требованиям, в отличие от операций ввода-вывода, и обычно требуют небольших объемов данных. Параллельная обработка приложений с интенсивными вычислениями обычно включает распараллеливание отдельных алгоритмов в рамках процесса приложения и декомпозицию всего процесса приложения на отдельные задачи, которые затем могут выполняться параллельно на соответствующей вычислительной платформе для достижения общей более высокой производительности, чем последовательная обработка. В приложениях с интенсивными вычислениями одновременно выполняется несколько операций, каждая из которых решает определенную часть проблемы. Это часто называют параллелизмом задач .
Интенсивное использование данных используется для описания приложений, которые связаны с вводом-выводом или которым необходимо обрабатывать большие объемы данных. [9] Такие приложения посвящают большую часть времени обработки вводу-выводу, перемещению и обработке данных. Параллельная обработка приложений с большим объемом данных обычно включает разбиение или подразделение данных на несколько сегментов, которые могут обрабатываться независимо с использованием одной и той же исполняемой прикладной программы параллельно на соответствующей вычислительной платформе, а затем повторная сборка результатов для получения завершенных выходных данных. [10] Чем больше совокупное распределение данных, тем больше преимуществ дает параллельная обработка данных. Требования к интенсивной обработке данных обычно линейно масштабируются в соответствии с размером данных и легко поддаются прямому распараллеливанию. Основными проблемами для вычислений с интенсивным использованием данных являются управление и обработка экспоненциально растущих объемов данных, значительное сокращение связанных циклов анализа данных для поддержки практических и своевременных приложений и разработка новых алгоритмов, которые можно масштабировать для поиска и обработки огромных объемов данных. Исследователи придумали термин BORPS для «миллиардов записей в секунду» для измерения скорости обработки записей способом, аналогичным тому, как термин MIPS применяется для описания скорости обработки компьютеров. [11]
Параллелизм данных
Архитектуры компьютерных систем, которые могут поддерживать приложения с параллельными данными, были продвинуты в начале 2000-х годов для требований крупномасштабной обработки данных для интенсивных вычислений. [12] Параллелизм данных применяет вычисления независимо к каждому элементу данных в наборе данных, что позволяет масштабировать степень параллелизма с объемом данных. Самая важная причина для разработки приложений с параллельными данными - это возможность масштабирования производительности, которая может привести к увеличению производительности на несколько порядков. Основные проблемы , связанные с разработки приложений с использованием данных параллелизм являются выбор алгоритма, стратегия для разложения данных, балансировки нагрузки на узлы обработки, передачи сообщений между узлами, а общая точность результатов. [13] Разработка приложения с параллельными данными может включать существенную сложность программирования для определения проблемы в контексте доступных инструментов программирования и устранения ограничений целевой архитектуры. Извлечение информации из веб-документов и индексация веб-документов типичны для вычислений с интенсивным использованием данных, которые могут получить значительные преимущества в производительности за счет параллельной реализации данных, поскольку веб-сайты и другие типы коллекций документов обычно могут обрабатываться параллельно. [14]
США Национальный научный фонд (NSF) финансировало программу исследований с 2009 по 2010 год [15] В центре внимания были:
- Подходы к параллельному программированию для решения параллельной обработки данных в системах с интенсивным использованием данных
- Программные абстракции, включая модели, языки и алгоритмы, которые позволяют естественным образом выразить параллельную обработку данных.
- Разработка вычислительных платформ с интенсивным использованием данных для обеспечения высокого уровня надежности, эффективности, доступности и масштабируемости.
- Выявление приложений, которые могут использовать эту вычислительную парадигму, и определение того, как она должна развиваться для поддержки появляющихся приложений с интенсивным использованием данных.
Pacific Northwest National Labs определила вычисления с интенсивным использованием данных как «сбор, управление, анализ и понимание данных с объемами и скоростью, которые расширяют границы современных технологий». [16] [17]
Подход
Вычислительные платформы с интенсивным использованием данных обычно используют подход параллельных вычислений, объединяющий несколько процессоров и дисков в крупных массовых вычислительных кластерах, подключенных с помощью высокоскоростных коммуникационных коммутаторов и сетей, что позволяет разделять данные между доступными вычислительными ресурсами и обрабатывать их независимо для достижения производительности и масштабируемости. в зависимости от количества данных. Кластер можно определить как тип параллельной и распределенной системы , которая состоит из набора взаимосвязанных автономных компьютеров, работающих вместе как единый интегрированный вычислительный ресурс. [18] Такой подход к параллельной обработке часто называют подходом «без общего доступа», поскольку каждый узел, состоящий из процессора, локальной памяти и дисковых ресурсов, не имеет ничего общего с другими узлами в кластере. В параллельных вычислениях этот подход считается подходящим для вычислений с интенсивным использованием данных и задач, которые «до неприличия параллельны», т. Е. Когда относительно легко разделить проблему на несколько параллельных задач и не требуется никакой зависимости или связи между другими задачами. чем общее управление задачами. Эти типы проблем обработки данных по своей природе адаптируются к различным формам распределенных вычислений, включая кластеры, сетки данных и облачные вычисления .
Характеристики
Несколько общих характеристик вычислительных систем с интенсивным использованием данных отличают их от других форм вычислений:
- Принцип сбора данных и программ или алгоритмов используется для выполнения вычислений. Для достижения высокой производительности в вычислениях с интенсивным использованием данных важно минимизировать перемещение данных. [19] Эта характеристика позволяет алгоритмам обработки выполняться на узлах, где находятся данные, сокращая системные издержки и повышая производительность. [20] Новые технологии, такие как InfiniBand, позволяют хранить данные в отдельном репозитории и обеспечивают производительность, сопоставимую с совместно размещенными данными.
- Используемая модель программирования. Вычислительные системы с интенсивным использованием данных используют машинно-независимый подход, в котором приложения выражаются в терминах высокоуровневых операций с данными, а система времени выполнения прозрачно контролирует планирование, выполнение, балансировку нагрузки, обмен данными и перемещение программ и данных через распределенный вычислительный кластер. [21] Абстракция программирования и языковые инструменты позволяют выражать обработку в терминах потоков данных и преобразований, включая новые языки программирования потоков данных и общие библиотеки общих алгоритмов обработки данных, таких как сортировка.
- Акцент на надежность и доступность. Крупномасштабные системы с сотнями или тысячами узлов обработки по своей природе более восприимчивы к аппаратным сбоям, ошибкам связи и программным ошибкам. Вычислительные системы с интенсивным использованием данных спроектированы таким образом, чтобы обеспечивать отказоустойчивость. Обычно это включает в себя избыточные копии всех файлов данных на диске, хранение промежуточных результатов обработки на диске, автоматическое обнаружение узлов или сбоев обработки и выборочное повторное вычисление результатов.
- Присущая масштабируемость базовой аппаратной и программной архитектуры . Вычислительные системы с интенсивным использованием данных обычно можно масштабировать линейно для размещения практически любого объема данных или для удовлетворения критических по времени требований к производительности путем простого добавления дополнительных узлов обработки. Количество узлов и задач обработки, назначенных для конкретного приложения, может быть переменным или фиксированным в зависимости от оборудования, программного обеспечения, связи и архитектуры распределенной файловой системы .
Системные архитектуры
Для интенсивных вычислений и крупномасштабных приложений анализа данных были реализованы различные системные архитектуры, включая параллельные и распределенные системы управления реляционными базами данных, которые были доступны для работы на кластерах узлов обработки без общего доступа уже более двух десятилетий. [22] Однако наибольший рост данных происходит за счет данных в неструктурированной форме, и потребовались новые парадигмы обработки с более гибкими моделями данных. Появилось несколько решений, в том числе архитектура MapReduce, впервые разработанная Google и теперь доступная в реализации с открытым исходным кодом под названием Hadoop, используемой Yahoo , Facebook и другими. LexisNexis Risk Solutions также разработала и внедрила масштабируемую платформу для вычислений с интенсивным использованием данных, которая используется LexisNexis .
Уменьшение карты
MapReduce архитектура и модель программирования пионера Google является примером современной архитектуры систем , предназначенной для вычислений с интенсивной обработкой данных. [23] Архитектура MapReduce позволяет программистам использовать стиль функционального программирования для создания функции карты, которая обрабатывает пару ключ-значение, связанную с входными данными, для создания набора промежуточных пар ключ-значение , а также функцию сокращения, которая объединяет все промежуточные значения, связанные с одним и тем же промежуточным ключом. Поскольку система автоматически заботится о таких деталях, как разделение входных данных, планирование и выполнение задач в кластере обработки, а также управление связью между узлами, программисты, не имеющие опыта в параллельном программировании, могут легко использовать большую распределенную среду обработки.
Модель программирования для архитектуры MapReduce представляет собой простую абстракцию, в которой вычисление берет набор входных пар ключ-значение, связанных с входными данными, и производит набор выходных пар ключ-значение. На этапе сопоставления входные данные разделяются на входные части и назначаются задачам сопоставления, связанным с узлами обработки в кластере. Задача сопоставления обычно выполняется на том же узле, который содержит назначенный раздел данных в кластере. Эти задачи карты выполняют указанные пользователем вычисления для каждой входной пары ключ-значение из раздела входных данных, назначенного задаче, и генерируют набор промежуточных результатов для каждого ключа. Затем на этапе перемешивания и сортировки промежуточные данные, сгенерированные каждой задачей Map, сортируются с промежуточными данными из других узлов, разделяются на регионы, которые будут обрабатываться задачами сокращения, и распределяются по мере необходимости между узлами, где параметр Reduce задачи будут выполняться. Задачи Reduce выполняют дополнительные заданные пользователем операции с промежуточными данными, возможно, объединяя значения, связанные с ключом, с меньшим набором значений для получения выходных данных. Для более сложных процедур обработки данных несколько вызовов MapReduce могут быть последовательно связаны друг с другом.
Hadoop
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 (High-Performance Computing Cluster) был разработан и внедрен 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 для реализации приложений, что увеличивает продуктивность программистов.
Смотрите также
- Список важных публикаций по параллельным, параллельным и распределенным вычислениям
- Неявный параллелизм
- Массивно параллельный
- Суперкомпьютер
- График500
Рекомендации
- ^ Справочник по облачным вычислениям , «Технологии обработки больших объемов данных для облачных вычислений», автор AM Миддлтон. Справочник по облачным вычислениям. Спрингер, 2010.
- ^ Информационная лавина , Винтон Серф, IEEE Computer, Vol. 40, No. 1, 2007, pp. 104-105.
- ↑ Расширяющаяся цифровая вселенная. Архивировано 27 июня 2013 г. в Wayback Machine , Дж. Ф. Ганцем, Д. Рейнзелем, К. Чутом, В. Шлихтингом, Дж. МакАртуром, С. Минтоном, Дж. Ксенети, А. Тончевой и А. Манфредис, IDC , Белая книга, 2007.
- ^ Сколько информации? 2003 , П. Лайман и HR Вариан, Калифорнийский университет в Беркли, Research Report, 2003.
- ^ Есть данные? Руководство по сохранению данных в информационную эпоху, заархивированное 18 июля 2011 г. в Wayback Machine , Ф. Берман, Коммуникации ACM, Vol. 51, No. 12, 2008, pp. 50-56.
- ^ Модели и языки для параллельных вычислений , DB Skillicorn и D. Talia, ACM Computing Surveys, Vol. 30, No. 2, 1998, pp. 123-169.
- ^ Вычисления в 21 веке [ постоянная мертвая ссылка ] , И. Гортон, П. Гринфилд, А. Салай и Р. Уильямс, IEEE Computer, Vol. 41, No. 4, 2008, pp. 30-32.
- ^ High-Speed, Wide Area, Data Intensive Computing: 10 Year Retrospective , WE Johnston, IEEE Computer Society, 1998.
- ^ IEEE: Аппаратные технологии для высокопроизводительных вычислений с интенсивным использованием данных , М. Гокхейл, Дж. Коэн, А. Ю и В.М. Миллер, IEEE Computer, Vol. 41, No. 4, 2008, pp. 60-68.
- ^ IEEE: A Конструкция Методология данных параллельных приложений Архивные 2011-07-24 в Wayback Machine , Л. С. Nyland, И. Ф. Принса, А. Голдберг, и PH Миллс, IEEE Transactions по программной инженерии, Vol. 26, No. 4, 2000, pp. 293-314.
- ↑ Справочник по облачным вычислениям, заархивированный 25 ноября2010 г. на Wayback Machine , «Технологии обработки данных для облачных вычислений», автор AM Миддлтон. Справочник по облачным вычислениям. Springer, 2010, стр. 83-86.
- ^ TeraScale задача Д. Ravichandran, П. Pantel и Э. Хови. «Терамасштабный вызов», Труды семинара KDD по майнингу для и из семантической сети, 2004 г.
- ↑ Динамическая адаптация к доступным ресурсам для параллельных вычислений в автономной сети рабочих станций. Архивировано 20 июля 2011 г. на Wayback Machine У. Ренкузогуллари и С. Дваркадас . «Динамическая адаптация к доступным ресурсам для параллельных вычислений в автономной сети рабочих станций», Труды восьмого симпозиума ACM SIGPLAN по принципам и практикам параллельного программирования, 2001 г.
- ^ Извлечение информации для больших коллекций документов , Э. Агихтейн, "Масштабирование извлечения информации до больших коллекций документов", Microsoft Research, 2004
- ^ «Вычисления с интенсивным использованием данных» . Описание программы . NSF. 2009 . Проверено 24 апреля 2017 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ Data Intensive Computing от PNNL. «Интенсивные вычисления с использованием данных», 2008 г.
- ^ Изменяющаяся парадигма вычислений с интенсивным использованием данных , Р. Т. Кузес, Г. А. Андерсон, С. Т. Эльберт, И. Гортон и Д. К. Грацио, "Изменяющаяся парадигма вычислений с интенсивным использованием данных", Компьютер, Vol. 42, No. 1, 2009, pp. 26-3
- ^ Облачные вычисления и новые ИТ-платформы Р. Буйя, К. С. Йео, С. Венугопал, Дж. Броберг и И. Брандич , «Облачные вычисления и новые ИТ-платформы: видение, шумиха и реальность для предоставления вычислений в качестве 5-й утилиты», "Компьютерные системы будущего поколения, Vol. 25, No. 6, 2009, pp. 599-616.
- ^ Экономика распределенных вычислений Дж. Грея, "Экономика распределенных вычислений", очередь ACM, Vol. 6, № 3, 2008 г., стр. 63-68.
- ^ Вычисления в 21 веке [ постоянная мертвая ссылка ] , И. Гортон, П. Гринфилд, А. Салай и Р. Уильямс, IEEE Computer, Vol. 41, No. 4, 2008, pp. 30-32.
- ^ Масштабируемые вычисления с интенсивным использованием данных , Р. Э. Брайант. «Масштабируемые вычисления с интенсивным использованием данных», 2008 г.
- ^ Сравнение подходов к анализу крупномасштабных данных А. Павло, Э. Полсона, А. Расина, Д. Д. Абади, Д. Д. Девитта, С. Мэддена и М. Стоунбрейкера. Материалы 35-й Международной конференции SIGMOD по управлению данными, 2009 г.
- ^ MapReduce: Упрощенная обработка данных на больших кластерах Архивированные 2009-12-23 в Wayback Machine Дж Дину и С. Ghemawat. Труды Шестого симпозиума по проектированию и внедрению операционных систем (OSDI), 2004 г.
- ^ как первоклассный гражданин Свиной латынь: не очень иностранный язык для обработки данных. Архивировано 20 июля 2011 г.в Wayback Machine К. Олстоном, Б. Ридом, У. Шриваставой, Р. Кумаром и А. Томкинс. (Презентация на SIGMOD 2008), «2008 г.