Прошу помощи в понимании алгоритма. Сначала я вставил объяснение алгоритма, а затем свои сомнения.
Алгоритм: (для вычисления перекрытия между парами записей)
При заданном пользователем параметре K файл DR( *Format: record_id, data*) разбивается на K фрагментов почти одинакового размера, так что данные документа Di попадают в i/K-й фрагмент.
Мы переопределили функцию секционирования Hadoop, которая сопоставляет ключ, созданный преобразователем, с экземпляром редюсера. Каждый ключ (i,j) сопоставляется с редуктором в j/K-й группе.
Специальный ключ i,* и связанное с ним значение, т. е. данные документа, реплицируются не более K раз, так что полное содержимое документа может быть доставлено на каждый редуктор. Таким образом, каждому редюсеру в группе необходимо восстановить и загрузить в память только один фрагмент файла DR, размер которого можно установить сколь угодно малым, варьируя K. Таким образом, можно рассчитать перекрытие. Это достигается за счет репликации документов, доставленных через инфраструктуру MapReduce.
Сомнения:
Я сделал некоторые предположения:
Утверждение: каждый ключ (i,j) сопоставляется с редуктором в j/K-й группе. Предположение: присутствуют K редукционных узлов, и ключ сопоставлен с j/K-м редуцирующим узлом.
Сомнение: некоторые узлы сокращения сгруппированы вместе? скажем, узлы 0,1,2 сгруппированы как Group-0?
Утверждение: данные документа реплицируются не более K раз, так что полное содержимое документа может быть доставлено на каждый редюсер.
Итак, это означает, что K равно нет. узлов редуктора? Если нет, то мы тратим вычислительные узлы впустую, не используя их, верно?
Основное сомнение: равно ли K количеству узлов редуктора??
Надеюсь на отклики!
Спасибо!