MapReduce - понимание на примере из реальной жизни

Опубликовано: 18 Февраля, 2022

MapReduce - это модель программирования, используемая для параллельного выполнения распределенной обработки в кластере Hadoop, благодаря чему Hadoop работает так быстро. Когда вы имеете дело с большими данными, последовательная обработка больше не нужна. MapReduce имеет в основном две задачи, которые разделены по этапам:

  • Задача карты
  • Уменьшить задачу

Давайте разберемся с этим на примере в реальном времени, и этот пример поможет вам понять модель программирования Mapreduce в исторической манере:

  • Предположим, правительство Индии поручило вам подсчитать население Индии. Вы можете потребовать все ресурсы, которые хотите, но вы должны выполнить эту задачу за 4 месяца. Подсчитать население такой большой страны - непростая задача для одного человека (вас). Итак, каков будет ваш подход ?.
  • Один из способов решить эту проблему - разделить страну по штатам и назначить ответственное лицо за каждый штат для подсчета населения этого штата.
  • Задача каждого человека: каждый человек должен посетить каждый дом в штате и вести учет каждого члена дома как:
    State_Name Member_House1 
    State_Name Member_House2
    State_Name Member_House3
    
    .
    .
    State_Name Member_House n      
    .
    .
    

    Для простоты мы взяли только три состояния.

    Это простой подход «Разделяй и властвуй», и каждый человек будет следовать ему для подсчета людей в его / ее состоянии.

  • После того, как они посчитали каждого члена дома в соответствующем штате. Теперь им нужно подвести итоги и отправить их в штаб-квартиру в Нью-Дели.
  • У нас есть обученный офицер в головном офисе, который получает все результаты от каждого штата и объединяет их по каждому штату, чтобы получить данные о населении всего штата. и Теперь, используя этот подход, вы легко можете подсчитать население Индии, суммируя результаты, полученные в штаб-квартире.
  • Правительство Индии. доволен вашей работой, и в следующем году они попросили вас сделать ту же работу за 2 месяца вместо 4 месяцев. И снова вам будут предоставлены все необходимые ресурсы.
  • Поскольку правительство. предоставил вам все ресурсы, вы просто удвоите количество назначенных ответственных лиц для каждого штата с одного до двух. Для этого разделите каждое государство на 2 подразделения и назначьте разные ответственные за эти два подразделения, а именно:
    State_Name_Incharge_division1
    State_Name_Incharge_division2
    
  • Точно так же каждый человек, отвечающий за его подразделение, будет собирать информацию о членах из каждого дома и вести записи.
  • Мы также можем сделать то же самое в штаб-квартире, поэтому давайте также разделим штаб-квартиру на два подразделения следующим образом:
    Head-qurter_Division1
    Head-qurter_Division2
    
  • Теперь при таком подходе вы можете найти население Индии за два месяца. Но здесь есть небольшая проблема: мы никогда не хотим, чтобы подразделения одного и того же штата отправляли свой результат в разные штаб-квартиры, тогда в этом случае у нас есть частичное население этого штата в Head-Quarter_Division1 и Head-Quarter_Division2, которое непоследовательно, потому что мы хотим консолидированного населения государством, а не частичного подсчета.
  • Одним из простых способов решения является то, что мы можем проинструктировать всех людей в штате отправить результат либо в Head-Quarter_Division1, либо в Head-Quarter_Division2. Точно так же для всех состояний.
  • Наша проблема решена, и вы успешно ее сделали за два месяца.
  • Теперь, если они попросят вас проделать этот процесс через месяц, вы знаете, как подойти к решению.
  • Отлично, теперь у нас есть хорошая масштабируемая модель, которая так хорошо работает. Модель, которую мы видели в этом примере, похожа на модель программирования MapReduce. Итак, теперь вы должны знать, что MapReduce - это модель программирования, а не язык программирования.

Теперь давайте обсудим этапы и важные вещи, включенные в нашу модель.

1. Фаза карты: Фаза, когда отдельные ответственные лица собирают население каждого дома в своем подразделении, называется фазой карты.

  • Картограф: привлечено лицо, ответственное за подсчет населения
  • Разделение входных данных: состояние или разделение штата.
  • Пара ключ-значение: вывод каждого отдельного сопоставителя, например, ключ Раджастхан и значение 2.

2. Фаза сокращения: фаза, на которой вы собираете свой результат.

  • Редукторы: люди, которые суммируют фактический результат. Вот в нашем примере обученные офицеры. Каждый редуктор производит вывод в виде пары ключ-значение.

3. Фаза перемешивания: Фаза, в которой данные копируются из картографов в редукторы, называется фазой перемешивания. Он находится между фазами карты и уменьшения. Теперь фаза карты, фаза уменьшения и фаза перетасовки - это три основные фазы нашего Mapreduce.