Архитектура системы обработки больших объемов изображений с автоматическим распараллеливанием Созыкин А.В. Гольдштейн М.Л. Институт математики и механики УрО РАН г.Екатеринбург Международная суперкомпьютерная конференция Научный сервис в сети Интернет: поиск новых решений сентября 2012 года, Абрау-Дюрсо
Актуальность При проведении научных исследований часто создаются изображения: Астрономия, медицина, физические эксперименты и др. Объем изображений очень большой (терабайты) Обрабатывать изображения в последовательном режиме нерационально
Проблемы Параллельные вычисления трудны для освоения предметниками Работа с данными большого объема: Перемещать данные для обработки сложно Системы хранения отличаются высокой стоимостью
Используемые подходы Автоматизация распараллеливания обработки больших объемов изображений Перемещение вычислений к данным
Выбор технологии MPIOpenMPMapReduce Автоматическое распараллеливание НетЕсть (Директивы компилятора) Есть Распределенная файловая система Нет Есть Архитектура оборудованияSMP, кластер, MPP SMPSMP, кластер Механизмы восстановления в случае отказов оборудования Нет Есть АлгоритмЛюбой MapReduce
Основы MapReduce Функции: Map: список список Reduce: список значение Обработка данных ведется независимо Одна фаза коммуникации Популярная реализация: Hadoop
Примеры использования Определение положения снимка местности J. Hays, A. A. Efros. IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), Обработка пространственных данных A. Cary. et al. Conference on Scientific and Statistical Database Management Обработка астрономических наблюдений K. Wiley, et al. Astronomical Data Analysis Software and Systems, Обработка данных дистанционного зондирования Mohamed H. Almeer. Journal of Emerging Trends in Computing and Information Sciences 2012.
Проблемы Hadoop не имеет встроенной поддержки изображений. Необходимо писать код для: Загрузки изображений Преобразования во внутренний формат Hadoop Запись обработанных изображений Требуется разбираться во внутреннем устройстве Hadoop и MapReduce
Предлагаемое решение Изоляция от прикладного программиста деталей внутреннего устройства Hadoop: Прикладной программист пишет последовательную программу, обрабатывающую одной изображение Применение программы к большому числу изображений в параллельном режиме выполняется автоматически Ограничение: изображения (группы изображений) обрабатываются независимо
Логическая архитектура
Архитектура для пользователя Image Java API – интерфейс для запуска программ на Java Image C API – интерфейс для запуска программ на С Image Processing Library – набор готовых обработчиков изображений
Как использовать? Реализовать ПОСЛЕДОВАТЕЛЬНУЮ функцию обработки ОДНОГО изображения Пример из Java API: public abstract class JavaImageProcessor { public abstract HIIntImage processImage(HIIntImage img); } HIIntImage – внутреннее представление изображения, массив пикселей
Как запускать? Пример из командной строки: $hadoop jar hadoopimage.jar MyImageProcessor input output Параметры: jar hadoopimage.jar – запустить систему обработки изображений MyImageProcessor – класс, в котором реализован обработчик изображения input – каталог входных изображений output – каталог для обработанных изображений
Процесс обработки JobTracker Узел 1Узел 2 HDFS Задача Image Record Reader Map Обработчик пользователя Image Record Writer HDFS Image Record Reader Map Обработчик пользователя Image Record Writer
Текущая реализация Средства работы с изображениями в Hadoop Java Image API Представление изображения: Формат RGB Массив int или float Java BufferedImage
Тестирование Кластер из 4-х серверов: Fujitsu-Siemens RX330 2 процессора AMD Opteron 285, 2 ядра, 2.8 ГГц 8 ГБ памяти Жесткий диск 250 ГБ Hadoop 1.03 Scientific Linux 6.2
Particle Image Velocimetry Источник данных: проект PIV Challenge
Результаты тестирования Объем изображений 500 ГБ, формат BMP Количество экспериментов для каждого числа серверов – 10 шт.
Направления дальнейшего развития Реализация C API и готовых обработчиков изображений Сравнение производительности с MPI Текущую реализацию на Java сравнивать с MPI не имеет смысла Обеспечение поддержки GPU для обработки изображений
Заключение Представлена архитектура системы обработки изображений: Автоматическое распараллеливание Перемещение вычислений к данным Текущая реализация и тестирование подтвердили работоспособность и масштабируемость Работа поддержана грантом УрО РАН 12- П
Спасибо за внимание!