Вычисления с интенсивным использованием данных - это класс параллельных вычислений приложений, использующих параллельный подход к обработке больших объемов данных, обычно размером терабайт или петабайт и обычно называемых большими данными. Вычислительные приложения, которые посвящают большую часть своего времени выполнению вычислительным требованиям, считаются ресурсоемкими, тогда как вычислительные приложения, которые требуют больших объемов данных и посвящают большую часть своего времени обработки вводу-выводу и манипуляции данными, считаются ресурсоемкими.
Быстрый рост Интернета и World Wide Web привел к появлению огромного количества информации, доступной в Интернете. Кроме того, коммерческие и государственные организации создают большие объемы как структурированной, так и неструктурированной информации, которую необходимо обрабатывать, анализировать и связывать. Винтон Серф охарактеризовал это как «информационную лавину» и заявил, что «мы должны использовать энергию Интернета, прежде чем информация, которую он передает, похоронит нас». В официальном документе IDC, спонсируемом EMC Corporation, объем информации, хранящейся в настоящее время в цифровой форме в 2007 году, оценивается в 281 экзабайт, а общий совокупный темп роста - в 57% при росте информации в организациях. даже быстрее. В исследовании 2003 года, посвященном так называемому информационному взрыву, было подсчитано, что 95% всей текущей информации существует в неструктурированной форме с повышенными требованиями к обработке данных по сравнению со структурированной информацией. Хранение, управление, доступ и обработка этого огромного количества данных представляет собой фундаментальную потребность и огромную проблему для удовлетворения потребностей в поиске, анализе, добыче и визуализации этих данных как информации. Для удовлетворения этой потребности предназначены вычисления с интенсивным использованием данных.
Параллельная обработка подходы, как правило, можно разделить на интенсивные вычисления или данные. Вычислительные ресурсы используются для описания прикладных программ с ограниченными вычислительными возможностями. Такие приложения тратят большую часть своего времени на выполнение вычислительных задач, а не на ввод-вывод, и обычно требуют небольших объемов данных. Параллельная обработка приложений с интенсивными вычислениями обычно включает распараллеливание отдельных алгоритмов в рамках процесса приложения и декомпозицию всего процесса приложения на отдельные задачи, которые затем могут выполняться параллельно на соответствующей вычислительной платформе для достижения общей более высокой производительности, чем последовательная обработка. В приложениях с интенсивными вычислениями одновременно выполняется несколько операций, каждая из которых решает определенную часть проблемы. Это часто называют задачей параллелизм.
Интенсивное использование данных используется для описания приложений, которые связаны с вводом-выводом или которым необходимо обрабатывать большие объемы данных. Такие приложения посвящают большую часть времени обработки вводу-выводу, перемещению и обработке данных. Параллельная обработка приложений, интенсивно использующих данные, как правило, включает разбиение или подразделение данных на несколько сегментов, которые могут обрабатываться независимо с использованием одной и той же исполняемой прикладной программы параллельно на соответствующей вычислительной платформе, а затем повторная сборка результатов для получения завершенного выходные данные. Чем выше совокупное распределение данных, тем больше преимуществ дает параллельная обработка данных. Требования к интенсивной обработке данных обычно линейно масштабируются в соответствии с размером данных и легко поддаются прямому распараллеливанию. Основными проблемами для вычислений с интенсивным использованием данных являются управление и обработка экспоненциально растущих объемов данных, значительное сокращение связанных циклов анализа данных для поддержки практических и своевременных приложений и разработка новых алгоритмов, которые могут масштабироваться для поиска и обработки огромных объемов данных. Исследователи придумали термин BORPS для «миллиардов записей в секунду» для измерения скорости обработки записей аналогично тому, как термин MIPS применяется для описания скорости обработки компьютеров.
Архитектура компьютерных систем, которая может поддерживать приложения с параллельными данными, была продвинута в начале 2000-х годов для требований крупномасштабной обработки данных для интенсивных вычислений. Параллелизм данных применяет вычисления независимо к каждому элементу данных в наборе данных, что позволяет масштабировать степень параллелизма с объемом данных. Самая важная причина для разработки приложений с параллельными данными - это возможность масштабирования производительности, которая может привести к увеличению производительности на несколько порядков. Ключевыми проблемами при разработке приложений с использованием параллелизма данных являются выбор алгоритма, стратегии декомпозиции данных, балансировка нагрузки на узлах обработки, передача сообщений обмен данными между узлами и общая точность результатов. Разработка приложения с параллельными данными может включать значительную сложность программирования для определения проблемы в контексте доступных инструментов программирования и устранения ограничений целевой архитектуры. Извлечение информации из веб-документов и индексация веб-документов типичны для вычислений с интенсивным использованием данных, которые могут получить значительный выигрыш в производительности за счет параллельной реализации данных, поскольку в этом случае веб и другие типы коллекций документов обычно могут обрабатываться параллельно.
Национальный научный фонд США (NSF) финансировал исследовательскую программу с 2009 по 2010 год. Основными направлениями были:
Тихоокеанский Северо-Западный регион nal Labs определила вычисления с интенсивным использованием данных как «сбор, управление, анализ и понимание данных с объемами и скоростью, которые расширяют границы современных технологий».
с интенсивным использованием данных вычислительные платформы обычно используют подход параллельных вычислений, объединяющий несколько процессоров и дисков в большие товарные вычислительные кластеры, соединенные с помощью высокоскоростных коммуникационных коммутаторов и сетей, что позволяет разделить данные между доступными вычислениями ресурсы и обрабатываются независимо для достижения производительности и масштабируемости в зависимости от объема данных. Кластер можно определить как тип параллельной и распределенной системы, которая состоит из совокупности взаимосвязанных автономных компьютеров, работающих вместе как единый интегрированный вычислительный ресурс. Такой подход к параллельной обработке часто называют подходом «без общего доступа», поскольку каждый узел, состоящий из процессора, локальной памяти и дисковых ресурсов, не имеет ничего общего с другими узлами в кластере. В параллельных вычислениях этот подход считается подходящим для вычислений с интенсивным использованием данных и задач, которые являются «до неприличия параллельными», то есть где относительно легко разделить проблему на несколько параллельных задач и нет зависимости или требуется связь между задачами, кроме общего управления задачами. Эти типы проблем обработки данных по своей сути могут быть адаптированы к различным формам распределенных вычислений, включая кластеры, сетки данных и облачные вычисления.
Несколько общих характеристик интенсивных данных. вычислительные системы отличают их от других форм вычислений:
A были реализованы различные системные архитектуры для вычислений с интенсивным использованием данных и крупномасштабных приложений анализа данных, включая параллельные и распределенные системы управления реляционными базами данных, которые были доступны для работы на кластерах без общего доступа узлы обработки более двух десятилетий. Однако наибольший рост данных происходит за счет данных в неструктурированной форме, и потребовались новые парадигмы обработки с более гибкими моделями данных. Появилось несколько решений, включая архитектуру MapReduce, впервые разработанную Google и теперь доступную в реализации с открытым исходным кодом под названием Hadoop, используемую Yahoo, Facebook и другие. LexisNexis Risk Solutions также разработала и внедрила масштабируемую платформу для интенсивных вычислений, которая используется LexisNexis.
Архитектура и программирование MapReduce Модель, впервые разработанная Google, является примером современной системной архитектуры, предназначенной для вычислений с интенсивным использованием данных. Архитектура MapReduce позволяет программистам использовать стиль функционального программирования для создания функции карты, которая обрабатывает пару «ключ-значение», связанную с входными данными, для создания набора промежуточных пар «ключ-значение», и функция сокращения, которая объединяет все промежуточные значения, связанные с одним и тем же промежуточным ключом. Поскольку система автоматически заботится о таких деталях, как разделение входных данных, планирование и выполнение задач в кластере обработки, а также управление связью между узлами, программисты, не имеющие опыта в параллельном программировании, могут легко использовать большую распределенную среду обработки.
Модель программирования для архитектуры MapReduce - это простая абстракция, в которой вычисление берет набор входных пар ключ-значение, связанных с входными данными, и производит набор выходных пар ключ-значение. На этапе сопоставления входные данные разделяются на входные части и назначаются задачам сопоставления, связанным с узлами обработки в кластере. Задача сопоставления обычно выполняется на том же узле, который содержит назначенный раздел данных в кластере. Эти задачи карты выполняют указанные пользователем вычисления для каждой входной пары ключ-значение из раздела входных данных, назначенного задаче, и генерируют набор промежуточных результатов для каждого ключа. Затем на этапе перемешивания и сортировки промежуточные данные, сгенерированные каждой задачей карты, сортируются с промежуточными данными из других узлов, разделяются на регионы, которые будут обрабатываться задачами сокращения, и распределяются по мере необходимости узлам, на которых выполняется сокращение. задачи будут выполняться. Задачи Reduce выполняют дополнительные заданные пользователем операции с промежуточными данными, возможно, объединяя значения, связанные с ключом, с меньшим набором значений для получения выходных данных. Для более сложных процедур обработки данных несколько вызовов 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 предоставляет возможности языка для загрузки, хранения, фильтрации, группировки, исключения дубликатов, упорядочивания, сортировки, агрегации и объединения данных.
HPCC (High-Performance Вычислительный кластер) был разработан и внедрен 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 для реализации приложений, что увеличивает продуктивность программистов.