Пост 4. Что такое MapReduce advanced version. Теория.
Полная(почти полная) схема MapReduce приведена ниже. Давайте я прокомментирую каждую фазу.
Итак, когда запускается MR задание, первым "в бой" вступает шаг InputFormat, на этом этапе hadoop понимает что за формат файла и подготавливает входные файлы к разбиению. Далее идет непосредственное разбиене файла на части, которые булут обработаны (как правило на блоки Hadoop), после этого на каждом вычислительном узле запускается столько map заданий, сколько блоков находится на нем. Затем каждый блок начинает считывать строку за строкой (пары key - value ) и передавать классу map (программе) пару за парой. Шаг map принимает пару (K0, V0) на вход, что то с ней делает и выдает (K1, V1) на выходе. Далее идет детерминация - на какой редьюсер (какую ноду) отправить пару (K1, V1). По уполчанию для этого используется hash функция от K1, но можно написать свой класс, который будет определять алгоритм пересылки на редьюсеры. После этого идет пересылка по сети (шаг shuffle). И наконец... нет не reduce, перед ним есть еще один шаг - sort. На этом шаге идет преобразование пары (K1, V1) в структуру (K1, List(V) ), при этом все пары сортируются по ключу. Это очень важное свойство, которое используется во многих алгоритмах MapReduce. И наконец Reduce, Java класс, написанный пользователем, который преобразует структуру (K1, List(V) ) в результирующую (K2, V2)!
Запутались?
Вот вам шпаргалка - описание потоков KeyValue
В следуюшем посте мы разберем практический пример и я очень надеюсь, что все станет ясно.
А пока прочитайте еще раз этот пост. Очень важно иметь четкие представления о том как же все таки работает MapReduce, для эффективного его использования!
No comments:
Post a Comment