![]() |
Тема свободна. |
Курс: без ограничений. Необходимо знание языка Java.
Тема из раздела big data. Практически важна. Код будет использован в реальной системе.
Постановка задачи. На компьютерном кластере [1] на каждом узле (компьютере) размещены данные. Разработать программу, которая позволяет параллельно (одновременно на каждом узле) выполнять обработку данных. Например, вычисление среднего, построение многоуровневой пирамиды, преобразование форматов данных.
Основные сложности:
- узлы могут выходить из строя во время работы, место на диске может закончиться, сетевое соединение может прерываться –> задача может быть не выполнена либо выполнена частично
- следовательно, нужны распределенный протокол подтверждения гарантии целостности и завершенности операции (commit), сборка “мусора” и т.п.
- для выполнения операции могут потребоваться данные с другой машины, которые надо также надежно передать
Основные инновационные идеи — (*) выразить подходы обработки данных с помощью функционального программирования для более удобного распараллеливания; (**) использование специального подхода планирования задач, описания и контроля их выполнения; (***) представление растровых данных в удобном для распараллеливания виде.
Усложнением является разработка новых алгоритмов параллельных вычислений результатов на основе заранее подготовленных данных. Пример статьи на эту тему: Computing aggregate queries in raster image databases using pre-aggregated data [2].
Очерки алгоритмов реализации этих ограничений разработаны, будут объяснены выбравшему тему студенту.