суббота, 6 ноября 2010 г.

Методы параллельных сетевых вычислений

Методы параллельных сетевых вычислений
Как показала практика, пока невозможно создать мета-компьютер на базе одной материнской платы, параллельные сетевые интерфейсы продолжают оставаться самым эффективным решением в вычислительных процессах. Опишем суть работ таких программных комплексов, как Google MapReduce (C++, JAVA, Python, Ruby, Nvidia CUDA), Grid, параллельные вычисления на Fortran.
Сеть состоит из:
клиент - обращается к серверу с конкретным заданием;
сервер (master node) - получает код и распределяет его между оставшимися компьютерами кластера, забирая результат вычислений через определенное время;
юнит (worker node) - компьютер кластера, занятый вычислением конкретной части кода.
Теперь главный фокус всей технологии: клиент должен помочь серверу разбить задачу на параллельные вычисления, т.е. алгоритм должен изначально предусматривать такое разбиение.
Пример 1.
Путь требуется обработать базу данных телефонной сети размером 2 петабайта.
Решение по шагам:
Сливаем резервную базу, с ней и работаем. Самый простой путь разбить базу по алгоритму ее хранения. Далее пишется клиент/правила/команды которые мы распространим на рабочие ноды для выполнения операций. Ноды выполнят операции и на сервер заполнится результат БД с “довольными” клиентами компании.
Пример 2.
Сеть супермаркетов решает провести сегментирование покупок своих клиентов, чтобы хоть как то с ними познакомиться и выбрать какие-то предложения по совершенствованию.
Решение:
Для начала рассмотрим классический алгоритм: провести кластерный анализ, затем исследовать кластеры.
Реализация в сетевого алгоритма...
Сервер отдает метрику и порядковые номера нодам. Нод 1 берет первое значение из своей базы и отсылает его серверу, тот распределяет его всем нодам, те вычисляют и возвращают значение. Сервер запоминает значение для 1-го элемента в новую базу данных и продолжает до конца. Далее получаются кластера сортировкой и группировкой, новый пересчет. Для экономии места можно запоминать только предпоследние log(2;n) шага и промежуточные резервные n/log(2;n) шагов. Далее сегменты исследуются согласно примеру 1.
Пример 3.
Для тех кто не совсем еще понял смысл таких вычислений.
Решение:
Запустить WOW и зайти на перегруженный сервер. Не вышло надо полагать, но статистика от туда успешно собирается на сервер статов, и не только оттуда, но и всех игр blizzard, объединенных в единую сеть. Здесь у нас: стат-сервер - клиент-сервер, наши сервера - ноды 1-го ур-ня, компьютеры пользователей - ноды 2-го ур-ня. Результат: гигабайты новой статистики ежедневно.

1 комментарий:

  1. Собственно говоря уже 100гб файл MySQL от 1С Предприятие на 1 сервере, при запросе 9-10 пользователей, тормозит так, что мама не горюй...

    ОтветитьУдалить