Применение концепции активных хранилищ в задачах обработки данных сейсмических наблюдений

ПРИМЕНЕНИЕ КОНЦЕПЦИИ АКТИВНЫХ ХРАНИЛИЩ В ЗАДАЧАХ ОБРАБОТКИ ДАННЫХ СЕЙСМИЧЕСКИХ

_ ________ «_»

НАБЛЮДЕНИЙ1

Е.О. Тютляева, А.А. Московский, С.С. Конюхов, Е.А. Курин

Предложен подход для организации распределенной обработки сейсмических данных на базе свободно распространяемого пакета Seismic Un*x и системы активного хранения данных с использованием TSim и ФС Lustre. В работе рассмотрены ключевые проблемы обработки сейсмических данных, и для каждой предложено и обосновано использование соответствующего инструмента из арсенала системы активного хранения данных. Обработка данных непосредственно на узлах хранения позволяет продемонстрировать значительную эффективность за счет минимизации количества дорогостоящих операций передачи данных по сети. Проведено исследование производительности разработанного программного прототипа по обработке сейсмических данных в системе активного хранения для оценки перспектив полноценной интеграции.

Ключевые слова: активные хранилища, обработка сейсмических данных, распределенное хранение и обработка данных.

Введение

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

Например, в 2009 г. на месторождении Карачаганак (Казахстан) проводились трехмерные наблюдения на площади около 900 км2. При этом были зарегистрированы около трех миллиардов записей (трасс). Общий объем данных превысил 100 Тб [1]. Другим примером может служить работа [2], где приводится сопоставление различных методов построения глубинного изображения среды по сейсмическим данным и необходимых вычислительных ресурсов.

Приведенные в работах [1, 2] примеры показывают, что в ряде случаев применение суперкомпьютеров может значительно улучшить качество результатов обработки сейсмических данных, а также обеспечить решение задач в экономически оправданные сроки.

Многообразие решаемых задач в сейсморазведке порождает многообразие применяемых вычислительных методов и программ обработки сейсмических данных. Одним из популярных пакетов по обработке сейсмических данных является свободно распространяемый пакет Seismic Un*x [3], создание которого началось более 24 лет назад в Center for Wave Phenomena Colorado School of Mines. В настоящее время данный пакет содержит большинство необходимых операций над сейсмическими данными и активно используется и обновляется специалистами по сейсмологии со всего мира. Seismic Un*x позволяет строить комплексные задания обработки данных из набора простых процедур при помощи конвейеров Unix.

1 Статья рекомендована к публикации программным комитетом международной научной конференции

«Научный сервис в сети Интернет: Поиск новых решений — 2012»

При обработке сейсмических данных при помощи стандартного набора процедур из пакета Seismic Un*x возможна обработка отдельных порций данных независимо друг от друга. Для этого класса задач узким местом является подсистема ввода-вывода.

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

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

Описанная концепция реализована в системе активного хранения данных, базирующейся на библиотеке шаблонных классов C++ TSim для распараллеливания вычислений и кластерной файловой системе Lustre для обеспечения высокопроизводительного масштабируемого ввода-вывода. Разработанный прототип системы и опыт ее использования для хранения и обработки данных дистанционного зондирования уже были представлена на конференции «Научный сервис в сети интернет» [4]. В развитие предшествующих результатов, в данной статье будет представлен ряд модификаций данной системы и интеграция данного подхода со свободно распространяемым пакетом Seismic Un*x, предназначенным для обработки сейсмических данных.

1. Структура данных и вычислительных модулей в Seismic Un*x

Базовой структурной единицей хранения сейсмических данных в формате Seismic Un*x (SU) является трасса. Каждая трасса содержит заголовок фиксированного размера и бинарные данные, отражающие результаты измерения с описанными в заголовке параметрами. Файл SU содержит набор трасс с результатами различных измерений, проведенных в ходе эксперимента. Большинство программ из пакета Seismic Un*x обрабатывают трассы (все, или отвечающие определенным критериям) последовательно, независимо друг от друга. Типовая схема работы с сейсмическими данными приведена на рис. 1.

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

/* Считывание первой трассы; инициализация основных параметров */

/* Обработка трассы, подготовка модифицированного результата на запись*/

puttr(fttr); //запись обработанной трассы в файл результата } while (gettr(&tr)); //считывание следующей трассы для обработки

Рис. 1. Типовая схема работы с сейсмическими данными

2. Принципы интеграции пакета Seismic Un*x и системы активного хранения

Большое значение при интеграции имела возможность организации распределенных вычислений без модификации исходных кодов пакета Seismic Un*x. Система активного хранения на базе TSim предоставляет такую возможность при обработке разных файлов, распределенных по узлам вычислительного кластера.

Поскольку данные сейсмических наблюдений обычно представлены в виде одного файла в формате SU, для удобства распределенной обработки в системе активного хранения файл был разбит на фрагменты, количество которых было выбрано кратным количеству узлов вычислительного кластера. Разбиение выполняется при помощи утилиты suwind пакета Seismic Un*x.

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

Предложенный подход имеет ряд преимуществ:

• допускается постепенный перенос данных и обработки в кластер: часть данных и обработчиков могут находиться в «традиционном» серверном Seismic Un*x, а часть быть реализована в активном хранилище;

• размещение данных прозрачно для ОС и для пользователя: для доступа к файлам используются средства ФС Lustre;

• за счет возможностей ФС Lustre возможна интеграция в высокопроизводительные вычислительные комплексы (например, за счет интерфейса MPI-IO).

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

Рис. 2. Схема распределения данных по узлам

Алгоритм распределенной обработки состоит из следующих этапов:

• На первом шаге для обработки каждого файла порождается отдельная параллельная задача.

• Для каждой задачи планировщик системы активного хранения определяет схему расположения обрабатываемого файла в ФС Lustre, в частности, на каком устройстве хранения расположен данный файл.

• По конфигурационным настройкам Lustre планировщик определяет, к какому вычислительному узлу относится определенное устройство хранения и перенаправляет вычисления на заданный узел.

3. Предварительная оценка производительности

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

Табл. Конфигурация вычислительного кластера в ИПС им. А.К. Айламазяна РАН

Количество узлов 7

Тип процессоров Intel Xeon E5410 (12M L2 Cache, 2,33 ГГц, 1333 МГц FSB, 4 ядра) — 10 шт., на 5 узлах, Intel Xeon X5570 (8M Cache, 2,93 ГГц, 6,40 ГТ/с Intel QPI, 4 ядра) — 4 шт., на 2 узлах

Количество ядер 56

Объем ФС Lustre 6,3 Тб

Интерконнект Gigabit Ethernet

Форм-фактор Full ATX

Файл данных был разбит на 7 частей по 110 Мб в соответствии с доступным количеством вычислительных узлов кластера. Полученные фрагменты были распределены по одному на каждый узел средствами ФС Lustre.

Конвейер обработки содержал только те команды, которые можно применять к каждой трассе независимо и имел вид представленный на рис. 3.

sunmo cdp=600,1200 tnmo=0,1.2,1.8,2.4,2.9,3.6,4.0,4.3 vnmo=1500,150

0,1630,1770,1925,2080,2350,2280 tnrao=0,0.7,1.4,2.06,2.46,3.37,3.88,4.07

Рис. 3. Использованный конвейер обработки

Данный конвейер применялся параллельно ко всем частям исходного файла данных.

Последовательная обработка целого файла при помощи приведенного конвейера занимает 21,784 секунд.

Параллельная обработка по указанной схеме в системе активного хранения занимает 4,400 секунд.

Параллельная обработка при помощи планировщика «барабанного» типа (не учитывающего расположения файлов) занимает 11.009 секунд. Важно отметить, что файловая система Lustre позволяет клиенту выполнять операции с данными вне зависимости от того, где они расположены, что позволило обеспечить корректную обработку данных в случае «барабанного» планировщика без дополнительных операций с данными.

Приведенные значения измерения времени являются усредненными результатами по 10 экспериментам.

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

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

4. Сортировка данных в активном хранилище

Программы из набора Seismic Un*x, которые обладают более сложными зависимостями по данным чем описано в предыдущем разделе, очевидно, более сложны для распараллеливания. Характерным примером является операция сортировки трасс в файле (модуль susort), которая используется в большинстве конвейеров обработки. При сортировке файла сейсмических данных при помощи операции susort сначала считываются значения тех ключей, по которым будет проводиться сортировка. Затем множество ключей сортируется в соответствии с заданным порядком, при этом с каждым ключом связан номер трассы,

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

Для распараллеливания данной операции в системе активного хранения была реализована следующая схема (рис. 4):

Считать Считать Считать Считать

КЛЮЧИ КЛЮЧИ КЛЮЧИ КЛЮЧИ

1111 Сортировка Сортировка Сортировка Сортировка

Записать Записать Записать Записать

первую вторую третью последнюю

четверть четверть четверть четверть

Рис. 4. Сортировка сейсмических данных

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

• Выполняется локальная сортировка считанных подмножества на соответствующих узлах хранения.

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

• На заключительном шаге выполняется запись фрагментов упорядоченного множества на узлах хранения. Для определения, к какому исходному файлу относилась рассматриваемая трасса, был использован уникальный номер заданный на этапе сквозной нумерации. Отсортированное множество трасс записывается таким образом, чтобы на i-м узле кластера были сохранены трассы с (i-1)*size/N по i*size/N, где N - количество доступных узлов, а size — общее количество трасс в исходном файле с данными.

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

последнего шага из приведенной схемы был использован шаблон параллельного программирования Мар [5], входящий в состав библиотеки ТБ1ш.

Предварительное тестирование полученной операции сортировки в системе активного хранения данных применительно к файлу размером 767 Мб продемонстрировало следующие результаты:

• Последовательное выполнение: 1 мин 10 с

• 2 узла (данные разбиты на 2 фрагмента): 38 с

• 7 узлов (данные разбиты на 7 фрагментов): 14 с

5. Надежность и отказоустойчивость

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

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

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

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

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

Мы проводили теоретические исследования, нацеленные на минимизацию накладных расходов при организации отказоустойчивых вычислений [6]. Мы ведем работы по расширению данных исследований в приложении к обработке сейсмических данных. Естественной точкой для повышения надежности системы представляется сортировка сейсмических дан-

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

6. Обзор аналогов

Наиболее близким аналогом является проект Seismic Hadoop, предложенный в начале этого года [7]. В рамках указанного проекта была проведена интеграция пакета Seismic Un*x и библиотеки Java Crunch, нацеленной на организацию MapReduce конвейеров. Seismic Hadoop использует вычислительный кластер Hadoop для хранения и обработки данных. Hadoop обеспечивает автоматическое резервирование данных и оптимизирован для выполнения Map Reduce операций.

Среди отличительных особенностей нашего подхода можно выделить:

1. Для организации распределенных вычислений используется библиотека шаблонных классов C++ TSim, что предоставляет нам возможности:

• Быстрой смены стратегии планирования, разработки собственной стратегии в виде шаблонного параметра планировщика.

• В классических случаях возможно использовать шаблоны распараллеливания Map и Reduce. При необходимости реализации более сложных схем распараллеливания возможно использование параллелизма по задачам, неготовых переменных в качестве примитивов синхронизации, активных сообщений и др.

• Использование всех возможностей шаблонов C++, легкая интеграция с исходными кодами библиотеки Seismic Un*x, написанной на С.

2. В качестве уровня хранения в нашей системе используется кластерная файловая система Lustre, которая установлена на ведущих суперкомпьютерах мира, таких как K computer (модифицированная версия ФС Lustre, называемая FEFS), Tianhe-1A, Jaguar (модифицированная версия - Spider), TSUBAME 2.0 и др. Использование Lustre обеспечивает высокую производительность операций с данными и высокий потенциал масштабируемости.

Приведенные отличительные черты позволяют предположить, что интеграция системы активного хранения данных с пакетом Seismic Un*x может позволить исследовать эффективность различных комбинаций алгоритмов планирования и реплицирования данных и реализовать эффективные схемы распараллеливания для сложных подпрограмм обработки сейсмических данных.

Заключение

В работе предложен подход для организации распределенной обработки сейсмических данных на базе свободно распространяемого пакета Seismic Un*x и системы активного хранения данных с использованием TSim и ФС Lustre.

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

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

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

Работа проводилась при финансовой поддержке Программы фундаментальных исследований Президиума РАН № 14)- Работа проводилась при финансовой поддержке Министерства образования и науки Российской Федерации, Государственный контракт № 07.514.12.4007).

Литература

1. Курин, E.A. Сейсморазведка и суперкомпьютеры / Е.А. Курин // Вычислительные методы и программирование. - 2011. - № 1. - С. 38-43.

2. Camp, W.J. Trends for high-performance scientific computing / W.J. Camp, P. Thierry // The Leading Edge. - 2010. - P. 44--47.

3. Stockwell, J. Домашняя страница библиотеки Seismic Un*x / J. Stockwell. - URL: http: //www.cwp.mines.edu/cwpcodes/ (дата обращения: 28.12.2012).

4. Распределенный архив изображений дистанционного зондирования Земли / А.А. Московский, А.Ю. Первин, Е.О. Тютляева, Е.В. Шевчук // Программные продукты и системы. - 2009. - № 2(86). - С. 40-42.

5. Московский, А.А. Параллельная реализация модели map-reduce с использованием шаблонных классов C++ / А.А. Московский, А.Ю. Первин, Е.О. Тютляева // Программные продукты и системы. - 2009. - № 2(86). - С. 53-57.

6. Tyutlyaeva, E.O. An Initial Approximation to the Resource-Optimal Checkpoint Interval / E.O. Tyutlyaeva, A.A. Moskovsky // Parallel Computing Technologies, Lecture Notes in Computer Science. - 2011. - V. 6873/2011. - P. 384-389.

7. Wills, J. Seismic Data Science: Reflection Seismology and Hadoop / J. Wills. - URL: http://www.cloudera.com/blog/2012/01/seismic-data-science-hadoop-use-case/

(дата обращения: 18.12.2012).

Екатерина Олеговна Тютляева, аспирант, Институт программных систем им. А.К. Айламазяна РАН, Исследовательский центр мультрипроцессорных систем (г. Переславль-Залесский, Российская Федерация), ordi@xgl.pereslavl.ru.

Александр Александрович Московский, кандидат химических наук, генеральный директор ЗАО «РСК Технологии» (г. Москва, Российская Федерация), moskov@rsc-tech.ru.

Сергей Станиславович Конюхов, кандидат химических наук, инженер, ЗАО «РСК Технологии» (г. Москва, Российская Федерация), s.konyuhov@rsc-tech.ru.

Евгений Александрович Курин, генеральный директор ООО «ГЕОЛАБ» (г. Москва, Российская Федерация), ekurin@yahoo.com.

APPLYING ACTIVE STORAGE APPROACH FOR SEISMIC DATA PROCESSING TASKS

E.O. Tyutlyaeva, Program System Institute of RAS (Pereslavl-Zalessky, Russian Federation),

A.A. Moskovsky, RSK Tech (Moscow, Russian Federation),

S.S. Konuhov, RSK Tech (Moscow, Russian Federation),

E.A. Kurin OOO «GEOLAB»

In this paper, we propose an approach to distributed seismic data processing using active storage system based on TSim C+—H Library and Lustre file System and open-source package Seismic Un*x. Data processing using storage nodes demonstrates dramatic performance increase by avoiding redundant data transfers over networks, interconnects, or storage busses. Performance tests of developed programming prototype of seismic data processing in active storage system allows to evaluate integration prospects.

Keywords: active storages, seismic data processing, distributed storing and processing data.

References

1. Kurin E.A. Seismic Prospecting and Supercomputers //Numerical methods and programming. 2011. Vol. 12, No. 1. P. 38-43.

2. Camp W.J, Thierry P. Trends for High-Performance Scientific Computing // The Leading Edge. 2010. Vol. 29. P. 44—47.

3. Stockwell J. Seismic Un*x Home Page. URL: http://www.cwp.mines.edu/cwpcodes/

4. Tyutlyaeva E.O., Moskovsky A.A., Pervin A.Y., Schevchuk E.V. Distributed Remote Sensing Data Storage // Software and Systems. 2009. Vol. 2, No. 86. P. 40-42.

5. Tyutlyaeva E.O., Moskovsky A.A., Pervin A.U. Distributed Implementation of Map-Reduce Model Using C++ Template Classes // Software and Systems. 2009. Vol. 2, No. 86. P. 53-57.

6. Tyutlyaeva E.O., Moskovsky A.A. An Initial Approximation to the Resource-Optimal Checkpoint Interval // Lecture Notes in Computer Science. 2011. Vol. 6873/2011. P. 384389.

7. Wills, J. Seismic Data Science: Reflection Seismology and Hadoop URL:

http://www.cloudera.com/blog/2012/01/seismic-data-science-hadoop-use-case/

(accessed: 28.12.2012).

Поступила в редакцию 23 ноября 2012 г.