Previous Page  9 / 17 Next Page
Information
Show Menu
Previous Page 9 / 17 Next Page
Page Background

лученных на этапе map, по reduce-заданиям: (

k

0

, reducers_count)

reducer

_

id

, где reducers_count — число узлов, на которых запус-

кается операция свeртки; reducer_id — идентификатор целевого узла

[(

k

0

, v

0

)]

(

k

0

,

[

v

0

])

.

Действие

: в простейшем случае, reducer_id = hash(

k

0

) mod reducers_co-

unt, где hash(

k

’) — хеш-фукнция от ключа

k

0

,

А

mod

B

— вычисление

остатка от деления

А

на

B.

Основная цель этапа partition — это балансировка нагрузки. Не-

корректно реализованная функция может привести к неравномерному

распределению данных между reduce-узлами.

Данная формула — это частный пример, в котором для распре-

деления данных по узлам свертки используется хеш-функция. Она

позволяет равномерно распределять нагрузку между узлами, которые

будут выполнять свертку. Если, например, вместо использования хеш-

функции поставить статическое значение, то все данные попадут на

один узел свертки. Таким образом, распределение данных будет не-

равномерным. Работать будет только один узел, остальные будут “про-

стаивать”. В некоторых случаях имеет смысл разработать свою функ-

цию распределения нагрузки. Например, для распределения данных

по месяцам. Если в качестве ключа

k

0

будет использоваться порядко-

вый номер месяца в году (1. . . 12), а число узлов для операции будет

выставлено на 12 (чтобы каждый узел обрабатывал свой месяц), то

чтобы выполнить свертку по каждому месяцу на одном узле, функ-

ция вычисления номера узла может быть следующей: reducer_id =

k

0

mod educers_count. Некорректно реализованная функция может приве-

сти к неравномерному распределению данных между reduce-узлами.

Функция

combine

запускается после map-фазы. В ней происходит про-

межуточная свертка локальных по отношению к функции map значе-

ний. Основное значение функции combine – комбинирование проме-

жуточных данных, что, в свою очередь, ведет к уменьшению объема

передаваемой между узлами информации.

Выполнение операций Copy

/

Сompare

/

Merge.

Реализуемая функция

: compare

(

k

0

n, k

0

n

+ 1)

→ {−

1

,

0

,

+1

}

.

Действие: сopy

— копирование данных, полученных в результате рабо-

ты функций map и combine (если такая была определена), с map-узлов

на reduce-узлы;

compare (или sort)

— сортировка, группировка по ключу

k

получен-

ных в результате операции copy промежуточных значений на reduce-

узле.

merge

— “слияние” данных, полученных от разных узлов, для опе-

рации свeртки.

Выполнение функции Reduce.

Реализуемая функция

: framework вызывает функцию reduce для каждо-

го уникального ключа

k

0

в отсортированном списке значений.

54 ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2015. № 6