Документ взят из кэша поисковой машины. Адрес оригинального документа : http://angel.cs.msu.su/projects/system/doc/System%20Description.html
Дата изменения: Mon Dec 27 20:21:18 2004
Дата индексирования: Sat Apr 9 23:48:36 2016
Кодировка:
Система обработки экспериментальных данных

Система обработки экспериментальных данных

Устройство и функционирование

Введение

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

Более детально, функциональность системы состоит в следующем:

·        Аутентификация пользователя, организация многопользовательского режима работы.

·        Прием данных от пользователя и занесение (импорт) их в хранилище данных системы.

·        Предоставление пользователю списка установленных в системе программ.

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

·        Запуск пользовательских заявок (задач) на выполнение:

o       организация очереди задач,

o       выбор вычислительной машины для выполнения счета,

o       подготовка данных пользователя для выполнения счета,

o       запуск программы на вычислительной машине,

o       слежение за статусом выполняемой программы.

·        Доставка (экспорт) результатов вычислений пользователю.

·        Визуализация результатов.

Архитектура

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

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

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

·        ПО вычислителей. Устанавливается на компьютеры, составляющие вычислительную мощность системы (именно на них запускаются задачи пользователей). Реализует необходимые ядру системы интерфейсы для управления задачами и данными на  вычислительных узлах. Система поддерживает несколько типов компьютеров – от персональных до больших SMP-систем и кластеров. Для каждого типа компьютеров создается свой набор программ, составляющий ПО вычислителя.

·        Хранилища данных. Файловые серверы, необходимые для хранения пользовательских данных.

 


Рисунок 1 Архитектура системы

       

Модули

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

Графические интерфейсы модулей

Для представления вычислительных модулей в пользовательком приложении (“рабочем столе”), используются встраиваемые в приложение пользователя интерфейсные модули. Каждый из них “знает”, какому или каким вычислительным модулям он соответствует, форматы входных и выходных данных модулей, может содержать средства визуализации этих данных.


Рисунок 2 Взаимодействие интерфейсных и вычислительных модулей

  

Схема работы

 1.  Пользователь запускает приложение “рабочий стол”.

 2.  “Рабочий стол” (зд. клиент или приложение пользователя) устанавливает соединение с сервером системы, запрашивает имя пользователя и пароль.

 3.  Сервер отсылает список модулей, доступных пользователю, и список данных, помещенных пользователем в систему. Эти списки отображаются в приложении пользователя.

 4.  Пользователь может запросить добавление/удаление данных в системе

 a)  Соответствующий запрос отправляется серверу.

 b) Если выбрано добавление данных, клиент оформляет в соответствие с принятым в системе внутренним форматом данных, и отправляет серверу.

 c)  Сервер заботится о размещении данных в своих хранилищах.

 d) После этого данные считаются зарегистрированными в системе, и доступными для использования при счете.

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

 a)  Пользователь выбирает данные из списка зарегистрированных в системе с помощью функциональности “рабочего стола”.

 b) Пользователь активизирует один из интерфесных модулей, и далее работает с ним.

 c)  Работа с различными интерфейсными модулями может различаться, но общая схема состоит в следующем:

·  установка необходимых параметров запускает

·  визуализации исходных данных для контроля

·  запрос запуска вычислительного модулям

·  визуализация выходных данных

 6.  При получении запроса на запуск вычислительного модуля, ядро сервера помещает заявку в общесистемную очередь заявок.

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

 8.  ПО вычислителя подтверждает прием заявки на запуск. (Действия ПО вычислительного узла зависят от конкретного вычислителя, но представлены ядру системы общим интерфейсом. Например, большие вычислительные кластеры помещают заявку в локальную очередь, а небольшие рабочии станции – сразу запускают вычислительный модуль)

 9.  Ядро периодически опрашивает вычислительные узлы о состоянии принятых на счет задач.

 10.            По завершении задачи, ядро перенаправляет выходные данные в общесистемное хранилище, делая их доступными пользователю, запустившему задачу.

 11.            Ядро шлет уведомление клиенту.

 12.            Соответствующий интерфейсный модуль может приступить к визуализации выходных данных.

 


Иллюстрация 1Клиентское приложение "рабочий стол" с активизированным интерфейсным модулем для фильтра шума Фурье (окно Fourier Noise Filter)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Особенности реализации компонентов системы

Основные компоненты системы (клиентское приложение и ядро сервера) написаны на языке Java, известном переносимостью и удобством создания распределенных приложений. Ядро сервера оформлено в виде Java-сервлета, общение ядра сервера с клиентом осуществляется  по протоколу HTTP. Для связи с базой данных используется технология JDBC.

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

Для удаленного запуска вычислительных модулей ядром, поддерживается несколько вариантов:

·        удаленный запуск непосредственно вычислительного модуля с помощью SSH.

·        удаленное обращение (также с помощью SSH) к менеджеру запуска, который, в свою очередь, запустит вычислительный модуль. Создание дополнительного менеджера запуска, расположенного непосредственно на вычислительном узле обусловлено необходимостью выполнения сложных действий для запуска и слежения за программами на мощных вычислительных системах (таких, как кластеры). Менеджеры запуска различаются на различных платформах, но реализуют один интерфейс, что унифицирует общение сервера с вычислительными узлами.

·        удаленный запуск модулей с помощью установленного на вычислительном узле веб-сервера по интерфейсу CGI

 

Внутренний формат данных

Система работает с данными в формате NetCDF (network Common Data Form).  Задача формата и интерфейса netCDF - обеспечить хранение и обработку данных в переносимом и самоопределяемом виде.

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

Подробнее об обрабатываемых данных и о формате NetCDF см. в документе “Внутренний формат представления  экспериментальных данных”.

Хранение данных

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

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

Для повышения эффективности применяется кэширование данных как на сервере, так и на клиенте.

 

Кэширование данных

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

Чтобы повысить скорость работы и уменьшить сетевой трафик, в Системе применяется кэширование на стороне сервера и на стороне клиента.

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

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

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

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

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

 

 

 

Разработка модулей системы

Разработка вычислительных модулей

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

Все данные, с которыми имеет дело модуль, представлены в виде файлов в формате netCDF. Модуль может быть реализован на любом языке программирования, для которого на вычислительном узле установлена библиотека netCDF. Библиотека netCDF в настоящий момент существует для C, C++, Fortran, Java и Perl.

Модулю первым параметром или в стандартном вводе (stdin) передается имя файла-заголовка.

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

Ядро Системы передает модулю все входные файлы. После работы модуля ядро забирает все выходные файлы,  и размещает их в хранилище данных.

Подробнее о создании модулей см. документ “Разработка модулей системы”.

 

Разработка модулей интерфейса пользователя

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

Графический интерфейс модуля  представляет собой Java-класс, который вызывается клиентским приложением. Как правило, ГИ модуля осуществляет ввод необходимых параметров, создает заголовочный netCDF-файл и вызывает вычислительный модуль (с помощью отправки соответствующего запроса серверу).

Подробнее о создании ГИ модулей см. документ “Разработка модулей системы”.

 

Служебная база данных сервера системы

Служебная база используется для хранения состояния системы между сессиями.

База данных служебной информации представлена 6-ю сущностями: пользователь (user), хост (host), группа (group), модуль (module), метод (method)

 

·        Модуль – информация о вычислительном модуле. Модуль располагается на одном или нескольких хостах.  Модуль характеризуется именем (name), по которому он идентифицируется методами и визуализаторами, и названием программы (prog) на хосте.

·        Под методом понимается графический интерфейс модуля. Он, как правило, вызывает один или несколько модулей. Метод характеризуется именем соответствующего Java-класса (jclass) и порядковым номером (seq), который может интерпретироваться клиентом как, например, позиция данного метода в меню.

·        Хост соответствует узлу вычислительной сети, который выполняет функции хранилища данных или вычислительного сервера. Хост определяется уникальным именем (name), адресом, по которому находятся вычислительные модули (cgibin), и адресом директории с файлами netCDF (netcdf).

·        Пользователь - человек, работающий с Системой. Для него определен хост, на котором находятся его данные, и группа, в которую он входит. Пользователь имеет уникальный идентификатор (id), используемый Системой для адресации данных, а также имя (username) и пароль (password).

·        Группа пользователей определяет набор методов, доступных ее членам, и вид клиента. Для этого группа имеет название Java-класса, реализующего рабочий стол членов этой группы.