Накопление знаний
Гуманитарно-политические заметки

MapReduce (МэпРедюс)

Ты как управленец должен полюбить этот алгоритм, хотя это даже не алгоритм, а способ проектирования поведения сложных расчётов.

Аналогия тут следующая: видишь слово Мэп (Map) оно означает разметку (размапить), а видишь слово Reduce (в вольном переводе - "приземлить, собрать") - вот собственно и всё. И весь алгоритм..

Он подразумевает что ты размечаешь одну большую задачу на несколько мелких, запускаешь их на выполнение в отдельных исполнителях, ну и финально по окончании работы каждого исполнителя приземляешь результат. Это похоже на то как плиточники кладут плитку:

  • вначале делается разметка для каждой плитки как её порезать,
  • после чего каждую размеченную плитку можно отдать плиткорезу - сколько плиткорезов, столько собственно у тебя и исполнителей,
  • но плиточник (тот кто её кладет) обычно один - работа то ответственная.

Обычно данный алгоритм используется когда нужно сделать какой-то большой расчет, например рассчитать счет за мобильную связь для одного клиента - в этом случае ты запускаешь расчет по дням в несколько потоков исполнителей, чтобы они произвели расчет на основе билинга и результат приземлили в спец хранилище - счет за день, а уже ты как "редусер" финальный расчет запускаешь не по сырым данным звонков, а по 30/31 дням в месяц, что явно будет быстрей, чем по сырым данным.

Тебе как управленцу надо знать, если у тебя есть большая система с количеством пользователей больше 100 и нет ни одного подобного алгоритма - жди беды: система нагнётся.

Почему это собственно классно - я прикол тут в том что, тебе нужно открыть диспетчер задач на своем ноутбуке (надеюсь у тебя он есть) и обратить внимание на следующий денежный момент.

10 ядер процессора с таковой частой по 900 Mhz и 1 ядро с тактовой частотой 9000 Mhz по деньгам отличается не в 10, а в 100 раз. Поэтому микро-задачки и микроалгоритмы намного дешевле. А деньги это важно - ты же не хочешь выйти за бюджет проекта ?