В 2006 году журнал Nature опубликовал статью «Наука в экспоненциальном мире», в которой астроном и футуролог Алекс Шалаи и компьютерный гуру Джим Грей разделили научное прошлое человечества на четыре периода в соответствии с тем, как оно использовало данные. В античные времена наука ограничивалась описанием наблюдаемых феноменов и логическими выводами, сделанными на основе наблюдений. В XVII веке данных стало больше, и тогда люди начали создавать теории, используя в качестве доказательств те или иные аналитические модели. В XX веке компьютеры открыли возможности для использования методов численного моделирования, а в XXI веке начали складываться научные методы, основанные на анализе данных (eScience), и здесь для работы с колоссальными объемами данных стали применяться синтезирующие теории, статистические и другие методы извлечения полезной информации. Всего пять лет назад Шалаи и Грей писали: «В будущем работа с большими объемами данных будет предполагать пересылку вычислений к данным, а не загрузку данных в компьютер для последующей обработки». Будущее наступило намного раньше. В 2013 году тот же Шалаи пишет об эпохе Data-Intensive Computing как о свершившемся факте — он считает, что для решения возникающих сегодня проблем с обработкой данных нужны революционные преобразования (под руководством Шалаи был построен датаскоп, а сам он заслужил ник Dr. Data), но, скорее всего, традиционными архитектурами, например кластерами, обойтись не удастся — потребуются не только более производительные и масштабируемые машины, но и системы совсем других архитектур.
Кому нужен экзафлопс?
Oрганизация вычислений в научных отраслях
Десять лет развития метакомпьютинга и сетевых технологий создали предпосылки для появления концепции grid и соответствующих инфраструктур поддержки Data-Intensive Computing, Collaborative Computing и On-Demand Computing. Владимир Кореньков, Елена Тихоненко |
Суперкомпьютеры заняли в общественном внимании такое место, что может сложиться впечатление, будто им нет альтернативы, но это не так. Одна из альтернатив — Data-Intensive Computing (DIC), инфраструктуры обработки больших объемов данных. В противоположность DIC, высокопроизводительные вычисления (High Performance Computing, HPC) стоит назвать Compute-Intensive Computing (CIC).
Большая часть классических приложений для суперкомпьютеров, то есть почти полностью CIC, так или иначе связаны с задачами моделирования, однако моделирование далеко не единственный научный метод. Целью CIC служит использование компьютерных ресурсов для решения задач с относительно небольшими данными, но большим объемам счета. И напротив — DIC нацелены на обработку больших объемов данных, часто поступающих от внешних источников в режиме, близком к реальному времени. Очевидно, что класс задач для DIC много шире, чем для CIC.
DIC имеют как минимум 25-летнюю историю и не привязаны к каким-либо модным тенденциям. Публично проблемы обработки больших объемов данных, поступающих по компьютерным сетям, впервые обсуждали на слушаниях в Конгрессе США еще в 1988 году, когда был принят акт о создании национальной исследовательской сети (Toward a National Research Network), заметно ускоривший создание Интернета. В следующие десять лет термин Data-Intensive Computing использовался редко, хотя в проектах девяностых можно найти прообразы многих современных решений, в том числе визуализацию и использование графических рабочих станций.
В 1997 году состоялся семинар по распределенным гетерогенным сетям знаний (Workshop On Distributed Heterogeneous Knowledge Networks), участники которого пришли к выводу, что в будущем будут доминировать приложения анализа данных и получения из них информации (Data-Intensive Applications, DIA), а не моделирования физических процессов. Во второй половине девяностых казалась привлекательной идея сетей грид, позволяющих утилизовать неиспользуемые ресурсы временно простаивающих компьютеров, и на тот момент представлялось, что основной платформой для DIA станет грид. Достижениям следующего десятилетия DIC в 2008 году был посвящен специальный номер журнала Computer, в обзоре которого («Открытые системы», № 4, 2008) можно найти следующее утверждение: «Прорывные технологии, требующиеся для решения многих важных проблем вычислений с использованием данных большого размера, могут быть созданы только путем совместных усилий специалистов в нескольких областях». За прошедший с тех пор короткий промежуток времени ситуация заметно изменилась, сегодня требуемые технологии есть, они активно развиваются и вполне готовы к тому, чтобы рассматривать DIC как еще один путь в развитии HPC в целом, а не только как CIC. После 2010 года начали складываться условия для создания инфраструктур, относящихся к категории DIC, и первыми из них стали LexisNexis Data Analytics и SDSC Gordon.
Основы Data-Intensive Computing
Теоретически возможностей для ускорения обработки данных и вычислений немного. Можно повышать производительность компьютера за счет роста тактовой частоты — по этому пути индустрия шла предшествующие 60 лет. Но сложность процессоров имеет свой предел, за которым движение в этом направлении уже бесполезно, поэтому остается резерв в виде многопроцессорной компьютерной архитектуры с использованием двух подходов к организации параллельной работы — параллелизм задач (task parallelism) и параллелизм данных (data parallelism). DIC — это подход с распараллеливанием данных (одна инструкция — много данных), при котором ускорение достигается за счет того, что каждый процессор выполняет работу над собственным фрагментом данных — и таким образом одновременно обрабатывается большой объем распределенных данных. Такой подход приобретает популярность в силу того, что большая часть данных, получаемых современными компьютерами, по своей природе параллельны (RFID, социальные среды, приборы видеонаблюдения и т. п.). Отличительная особенность таких систем в том, что они находятся в меньшей зависимости от ограничений по закону Амдала, а это значит, что чем меньше гранулярность данных, тем больше процессоров можно использовать и тем больше суммарная производительность системы, причем по мере увеличения степени гранулярности производительность обычно растет линейно.
Работа систем класса DIC (рис. 1) разделяется на три фазы: сбор данных, извлечение информации из данных и перевод информации в форму, удобную для восприятия человеком. Для измерения производительности систем класса DIC предложена единица измерения BORPS (Billions Of Records Per Second), в отличие от MIPS (Million Instructions Per Second) счет идет не по количеству выполненных за единицу времени команд, а по обработанным записям. В недавнем прошлом в качестве основной платформы для DIC рассматривались различные конфигурации грид, но с появлением высокопроизводительных кластеров, собираемых из рыночных серверов-лезвий, предпочтение отдается им. Перечислим отличительные особенности систем DIC.
- Совместное расположение программ и данных. При работе с большими объемами данных чрезвычайно важно минимизировать их транспортировку. В большинстве систем HPC, где нет такого требования, принято хранить основные данные в отдельных репозиториях, из которых в процессе работы требуемые данные перемещаются на серверы, где размещены задачи, а по мере необходимости результаты возвращаются в репозитории. В случае DIC ситуация противоположная — распределенные данные и распределенная файловая система статично на весь период решения задачи загружаются в узлы системы, а программы, реализующие алгоритмы обработки этих данных, подгружаются по мере того, как в них возникает потребность. Принцип перемещения кодов к данным (move the code to the data) эффективен еще и потому, что размеры программ намного меньше, чем объем данных, что заметно снижает нагрузку на сеть, образующую кластер.
- Иная программная модель. При реализации DIC обычно выбирают машинно-независимый подход, то есть операции над данными, выполняемые в приложениях, выражаются в терминах языка высокого уровня, независимо от особенностей той или иной аппаратной платформы и системы диспетчеризации (runtime system transparently), контролирующей последовательность, процесс исполнения, балансировку, коммуникации и перемещение программ и данных. Абстрагирование от оборудования позволяет выразить обработку данных в терминах их потоков и использовать общие распределяемые библиотеки. В этом состоит главное отличие данной модели от обычной программной модели HPC, где с целью повышения скорости счета за основу обычно берется машинно-зависимая модель, используется низкоуровневое управление выполнением задач и коммуникацией между узлами, а также специализированные программные пакеты, привносящие дополнительную сложность.
- Акцент на надежности. Параллелизм данных предполагает синхронность в обработке, поэтому система DIC более чувствительна к сбоям, нарушениям в коммуникациях и программным ошибкам. Если данные привязаны к узлам, то сложно перестроить работу всего кластера при выходе из строя одного узла. Такие системы должны быть чрезвычайно отказоустойчивыми, что предполагает создание копий промежуточных результатов, автоматическое обнаружение вышедших из строя узлов с автоматическим распределением нагрузки между оставшимися и возможностью восстановления на ходу.
- Гарантированная масштабируемость. Аппаратная и программная архитектура систем класса DIC должна быть адаптирована к различным объемам данных.
Рис. 1. Общая схема систем DIC |
MapReduce и DIC
MapReduce — будущее баз данных
Реляционные СУБД — продукты своего времени и не могут вечно оставаться образцами совершенства. Есть все основания полагать, что в недалеком будущем свое место займут параллельные СУБД, использующие программную конструкцию MapReduce. Леонид Черняк |
На протяжении всей истории DIC было предложено множество технологических решений, представлявших собой те или иные варианты распределенных баз, способных работать на кластерах без разделяемых ресурсов (shared nothing). При всех их достоинствах у них оставался один общий недостаток — они наследовали от своих централизованных реляционных предшественников способность работать исключительно со структурированными данными. Интернет-компаниям, прежде всего Google, Yahoo, Facebook и подобным, остро требуются методы работы с разнообразными данными, поэтому на вооружение была взята архитектура MapReduce: Map — обработка входного потока и разбиение его на группы по парным ключевым значениям (key-value pair); Reduce — агрегация по парным ключевым значениям в выходной поток. В случаях, когда требуется более сложная обработка и парных значений недостаточно, приходится организовывать последовательность из нескольких этапов MapReduce.
Для организации работы с данными в MapReduce используется распределенная масштабируемая файловая система Google File System (GFS), а также язык высокого уровня Sawzall параллельного анализа данных и параллельной раскопки данных. Apache Software Foundation оказала поддержку созданию открытого аналога MapReduce, известного как Hadoop, функционально повторяющего MapReduce, но запрограммированного на Java, а не на C++. У MapReduce есть хорошие перспективы, но пока это универсальное решение уступает по производительности cпециализированным — в частности, при сравнительном испытании Hadoop и LexisNexis High-Performance Computing Cluster на тесте TeraByte Sort (время, необходимое для сортировки 1012 байт данных) система HPCC показала в шесть раз более высокую скорость работы.
Кластер HPCC
Высокопроизводительный кластер LexisNexis High-Performance Computing, который еще называют DAS (Data Analytics Supercomputer), был создан подразделением Risk Solutions компании LexisNexis, до сих пор не замеченной в числе производителей высокопроизводительных систем, но тем не менее оказавшейся первой на поле DIC. Основной бизнес LexisNexis — предоставление онлайн-доступа к многоотраслевым базам данных через два своих основных информационных ресурса: источники юридической информации Lexis.com и бизнес-информации Nexis.com. Но кроме этого есть еще и подразделение Risk Solutions, возникшее в 2005 году в результате приобретения компании Seisint, созданной Хэнком Эшером, которого называют отцом data fusion («сплав данных» — процесс интеграции данных, представленных в разных формах). Свои первые десятки миллионов Эшер заработал в 21 год, создав компанию по раскраске жилых домов. Чтобы понять суть этого бизнеса, следует представить себе, как выглядят американские города — череда идентичных, стереотипных фасадов, однако раскрашенных с невероятной фантазией. В 80-е годы деятельность Эшера была связана с контрабандой кокаина под прикрытием ЦРУ — в известном скандале «Иран-контрас» Эшер играл не последнюю роль. В начале 90-х, покончив с сомнительным бизнесом, он переквалифицировался в программисты и создал в 1992 году компанию Database Technologies, использовавшую кластеры из ПК для параллельной обработки данных, что было существенно дешевле, чем вычисления на мэйнфреймах или на Unix-серверах. Его заказчиками были страховые и кредитные компании, которым нужно было знать как можно больше о своих клиентах. Database Technologies стала одной из компаний, занимающихся сбором и продажей сведений о гражданах. В 1999 году Эшер создал компанию Seisint, основными клиентами которой были власти штата Флорида. По их заказу Seisint должна была создать коммерческую систему, аналогичную федеральной системе «Тотальная информационная осведомленность» (Total Information Awareness, TIA). Система получила название MATRIX (Multistate Anti-Terrorist Information Exchange) — «Антитеррористический информационный обмен многих штатов». По замыслу Seisint, система MATRIX должна была стать крупнейшей на планете базой данных, содержащей миллиарды записей с досье на каждого жителя Земли. Все должно было начаться во Флориде, а затем администрациям других штатов предлагалось прислать имеющиеся у них файлы с данными о водительских лицензиях, зарегистрированных машинах, а также о криминальной деятельности. В Seisint их объединяют с данными из других штатов и со всеми базами данных, имеющимися в компании. После чего вновь подключившийся штат получает доступ ко всему хранилищу. В результате MATRIX могла бы получить доступ к разнообразной информации по конкретному человеку: фотографии, адреса за последние 30 лет, телефонные номера и имена людей, живущих по-соседству и т. п. Как нам известно, в полной мере все это реализовать не удалась, но технологии остались — они-то и представляют основной интерес в контексте DIC.
Архитектура HPCC
В концепции DAS нашла свое полное отражение общая схема систем класса DIC, достаточно бегло сравнить рисунки 1 и 2.
Рис. 2. Концепция суперкомпьютера для анализа данных DAS от LexisNexis |
Разработка платформы DAS началась в Seisint в 1999 году, и первый работающий экземпляр появился уже через год. Аппаратной основой служат обычные кластеры, собираемые из рыночных компьютеров, работающих под Linux, а ключевым компонентом является язык высокого уровня ECL (Enterprise Data Control Language).
Сейчас в DAS два кластера, работающих последовательно, — Thor (Data Refinery) и Roxie (Rapid Data Delivery Engine). Данные проходят через Thor в Roxie, и далее результаты предоставляются пользователям. Термин Refinery сугубо технический, так называют нефтеперегонные заводы и очистительные производства, и в данном случае он символизирует очистку данных.
По своему функционалу Thor аналогичен MapReduce и Hadoop, но намного производительнее. Thor строится из одного мастер-узла и множества подчиненных ему узлов, образующих среду для выполнения задач. Задача оформляется как программа на языке ECL, которая для исполнения передается агенту ECL Agent, черпающему исполняемые коды из репозитория ECL Repository. Данные хранятся в распределенной файловой системе (Distributed FileSystem, DFS), работающей с записями (record-oriented), что отличает Thor от кластеров MapReduce, работающих с блоками. Записи могут быть переменной или фиксированной длины, а для ускорения обмена и снижения задержки при операциях ввода-вывода они объединяются в крупные блоки. Процесс распределения записей по узлам называют распылением (spraying). После обработки происходит обратный процесс сборки данных (despraying).
Кластер Roxie представляет собой параллельную платформу обработки структурированных запросов для поддержки аналитических приложений, его можно рассматривать как аналог распределенной СУБД HBase и базы метаданных Hive в Hadoop.
Ориентированный на работу со структурированными данными язык ECL (Enterprise Control Language), в отличие от функциональной модели программирования, принятой в MapReduce, относится к категории декларативных и был создан под влиянием языков Пролог, Паскаль, SQL, Snobol4, Clarion и C++. Он не является языком программирования в строгом смысле этого слова — на ECL можно описывать наборы данных и операции, которые над ними следует выполнить. Его можно использовать для коллективной работы программистов при решении задач, связанных с Большими Данными.
Gordon
В 2009 году компании Appro и Intel и Суперкомпьютерный центр в Сан Диего выработали совместную программу по созданию суперкомпьютера, специально предназначенного для работы с Большими Данными, — Appro Xtreme-X Data Intensive Supercomputer, получившего название Gordon. В 2011 году Gordon занял 48-е место в Top500, а в 2012 году Appro перешла в собственность Cray, после чего Gordon стал официально именоваться Cray CS300-AC.
От большинства более известных конкурентов Gordon отличается широкомасштабным использованием твердотельных накопителей, большими размерами памяти в узлах и более производительной межузловой коммуникацией с архитектурой «трехмерный тор».
Проект Gordon создавался в две очереди. В 2009 году был предложен прототип Dash, построенный на лезвиях GreenBlade (строительные блоки кластера Cray CS 300) и состоящий из 65 узлов, в котором были воплощены основные идеи одного из первых DIC-компьютеров. Вторая очередь представляла собой уже промышленную систему, появившуюся в ноябре 2011 года и сразу вошедшую в первую сотню Top 500. Использованные в Gordon 300 Тбайт твердотельных накопителей обеспечили системе рекордную скорость обмена — 36 млн IOPS (система хранения построена на файловой системе Lustre).
Gordon (рис. 3) состоит из 1024 вычислительных узлов и 64 узлов ввода-вывода. В каждом из вычислительных узлов установлено по два восьмиядерных процессора Intel Xeon E5/2,6 ГГц и 64 Гбайт памяти DDR3-1333. Кроме того, каждый вычислительный узел укомплектован 80-гигабайтным накопителем Intel SSD, используемым в качестве диска. Каждый узел ввода-вывода имеет по два шестиядерных процессора Intel Xeon X5650/2,67 ГГц, 48 Гбайт DDR3-1333 и по 16 накопителей Intel SSD 710 емкостью 300 Гбайт. В качестве сетевой топологии избран двойной трехмерный тор.
Рис. 3. Gordon в сети Суперкомпьютерного центра в Сан-Диего |
Успешное применение Gordon для решения широкого класса задач дало основание назвать его «суперкомпьютером, превращающим данные в знание» (Supercomputing Transforms Data into Knowledge). Например, исследователям из Суперкомпьютерного центра в Сан-Диего совместно с учеными из Института Пастера во Франции удалось с помощью Gordon сделать то, что прежде было невозможно, — разработать лекарственные препараты, помогающие при аутизме и шизофрении. Руководитель работы Игорь Цигельный сказал по этому поводу: «Наступает удивительное время, когда огромное количество данных, относящихся к биологическим объектам, может быть выделено и сохранено. Я могу сравнить это время с тем периодом в истории человечества, когда люди научились извлекать металлы из руды. Теперь мы можем извлекать знания из данных, как железо из руды».
***
Причина недостаточной способности нынешних компьютеров к информационному поиску заключается в искусственности принятой системы индексации, предполагающей, что собранные данные должны быть кем-то как-то рассортированы, однако сознание работает не так — оно оперирует ассоциациями. Захватив один объект, мозг переходит к другому, что предполагает наличие механизма мысленных ассоциаций, паутины ячеек мозга, связанных сложными путями. Эта паутина характеризуется высокой динамикой связей и непостоянством, однако обладает огромным быстродействием. Сегодня требуются механизмы ассоциативного доступа к данным вместо индексного, которые позволят в более удобной форме выбирать данные из памяти. В какой-то мере первые реализации такого механизма имеются в DIC-системах Gordon и DAS, однако для дальнейшего продвижения по этому пути нужно совсем немного — снять шоры с глаз, отказаться от гонки за экзафлопсами и понять, какие на самом деле нужны компьютеры для каждого конкретного случая.