[Moscow.pm] Идеальный Map-ер и Reduce-ер

Михаил Монашёв postmaster на softsearch.ru
Ср Янв 21 10:53:54 PST 2009


Здравствуйте, Руслан.

RZ> Я так понимаю, что нужно иметь несколько компонентов:
RZ> Dispatcher, Mappper, Combiner, Reducer, Reporter

Угу.  Всё  верное. И похоже писать надо все 5 компонентов, а не только
Mappper и Reducer.

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

RZ> Например: у нас есть результат мапинга и комбинирования (key1 =>
RZ> [val1, val1, val1]) вот мы его и запихиваем это в хранилище под ключом
RZ> taks-123-mapped-<key1>. Если мы знаем алгоритм распределения в
RZ> хранилище, то мы знаем, что все результаты необходимые для reducer'ов
RZ> собрались на одной ноде и можем ее определить и отдать задачу на
RZ> reduce конкретно данной ноде.

Cache::Memcaced::Fast может класть сразу в нужное хранилище в виде
MemcacheBD.

RZ> Мне кажется, что dispatcher тоже должен складывать задачи в хранилище.
RZ> И когда к нему приходят ноды и говорят, что им нужна задача, то
RZ> диспетчер по возможности выдает ключ от задачки с этой ноды. Простоя
RZ> быть не должно и если на этой ноде нет ничего, то можно выдать любой
RZ> другой ключик и тогда будет перенос данных по сети.

Диспатчеры,  ИМХО, должны не перекладывать из хранилища в хранилище, а
обращаться  к  локальным  хранилищам, читать из них данные, и если они
имеются, запускать маперов и давать им на вход поток этих данных.

А для очереди задач есть MemcacheQ. От автора MemcacheBD. Правда я
пока не вникал как у MemcacheQ с устойчивостью к падениям...


--

С уважением,
Михаил Монашёв, SoftSearch.ru
mailto:postmaster на softsearch.ru
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.



Подробная информация о списке рассылки Moscow-pm