![]() |
Тема свободна. |
Курс: без ограничений. Необходимо знание Java.
Тема из раздела big data. Практически важна. Код будет использован в реальной системе.
Постановка задачи. На компьютерном кластере [1] на каждом узле (компьютере) размещены файлы. Копии одного файла могут встречаться на разных машинах несколько раз. Разработать программу, которая позволяет размещать файлы на узлах кластера, исходя из заданных параметров эффективности доступа к ним (балансировка нагрузки, уменьшение кол-ва передаваемых данных между узлами и т.п.). Перемещать файлы между узлами необходимо путем копирования файлом с одной машины на другую. Язык Java.
Основные сложности:
- размер файлов 0..16 Гбайт (копировать не быстро)
- использование технологии ZeroCopy
- узлы могут выходить из строя во время копирования, сетевое соединение может прерываться –> файл может быть поврежден либо недокопирован
- следовательно, нужны CRC, распределенный протокол подтверждения гарантии целостности и завершенности операции (commit), сборка “мусора” (недокопировавшихся частей)
- нужно обеспечить прерывание/паузу копирования в любой момент
- обеспечить ограничение пропускной способности (не более Х Мбайт/сек)
Очерки алгоритмов реализации разработаны, будут объяснены выбравшему тему студенту.