Sunday, 11 November 2012

Пост 3. MapReduce на пальцах.

Для того что бы начать описывать принцип работы Hive, я бы хотел сначала рассказать  о некоторых базовых понятиях hadoop. Итак, сегодня я хотел бы попытаться объяснить что же такое MapReduce. Классическое объяснение - можно посмотреть здесь. Но мне кажется, что это объяснение "на пальцах" не очень "пальцатое", то есть - нет какого-то четкого клеше, которое сформируется в голове у начинающего програмиста. Допустим у нас есть 5 корзинок(серверов), в каждой из которой лежат яблоки, груши, апельсины.


Задача - посчитать сколько у меня яблок, груш и апельсинов. В контексте MapReduce данная задача будет разбита на 2 фазы. Фаза Map - просто выделяем в каждой корзинке яблоки, груши и апльсины. Берем фрукт и говорим, что это.



После этого "выделения" начинается пересылка фруктов по сети. Все яблоки перемещаются в одну кучку (сервер), та же судьба ждет и груши с аппельсинами.


Да, это именно пересылка по сети. Сеть при определенной нагрузке - потенциальнео "слабое звено" кластера. Но впрочем в ряде случаев столь большой overhead можно обойти, но об это позже. После того как пересылка завершена - начинается стадия reduce - просто подсчитываем элемнты в каждой из кучек (один, два, три...)


Вот собственно и все. Это был самый вехний уровень абстракции. В следующем посте я хочу подробно рассказать о том как происходит процесс MapReduce. Да, маленькое замечание - весь этот процесс происходит на одних и тех же 5 серверах!
Если у Вас есть вопросы - не стесняйтесь их задавать!

No comments:

Post a Comment