MapReduce - алгоритм
Алгоритм MapReduce содержит две важные задачи, а именно Map и Reduce.
- Задача карты выполняется с помощью класса Mapper.
- Задача сокращения выполняется с помощью класса Reducer.
Класс Mapper принимает ввод, токенизирует его, сопоставляет и сортирует. Выходные данные класса Mapper используются в качестве входных данных для класса Reducer, который, в свою очередь, ищет подходящие пары и сокращает их.
MapReduce реализует различные математические алгоритмы для разделения задачи на небольшие части и назначения их нескольким системам. С технической точки зрения алгоритм MapReduce помогает отправлять задачи Map & Reduce на соответствующие серверы в кластере.
Эти математические алгоритмы могут включать в себя следующее:
- Sorting
- Searching
- Indexing
- TF-IDF
Сортировка
Сортировка - один из основных алгоритмов MapReduce для обработки и анализа данных. MapReduce реализует алгоритм сортировки для автоматической сортировки выходных пар ключ-значение из сопоставителя по их ключам.
Методы сортировки реализованы в самом классе mapper.
На этапе перемешивания и сортировки после токенизации значений в классе сопоставления Context class (определяемый пользователем класс) собирает соответствующие ключи в виде коллекции.
Чтобы собрать похожие пары ключ-значение (промежуточные ключи), класс Mapper использует RawComparator класс для сортировки пар ключ-значение.
Набор промежуточных пар "ключ-значение" для данного редуктора автоматически сортируется Hadoop для формирования ключей и значений (K2, {V2, V2,…}), прежде чем они будут представлены редуктору.
Поиск
Поиск играет важную роль в алгоритме MapReduce. Это помогает на этапе объединения (опция) и на этапе восстановления. Попробуем разобраться, как работает Searching, на примере.
пример
В следующем примере показано, как MapReduce использует алгоритм поиска, чтобы узнать подробности о сотруднике, получающем самую высокую зарплату в данном наборе данных о сотрудниках.
Допустим, у нас есть данные о сотрудниках в четырех разных файлах - A, B, C и D. Предположим также, что во всех четырех файлах есть повторяющиеся записи о сотрудниках из-за многократного импорта данных о сотрудниках из всех таблиц базы данных. См. Следующую иллюстрацию.
The Map phaseобрабатывает каждый входной файл и предоставляет данные о сотрудниках в виде пар ключ-значение (<k, v>: <emp name, salary>). См. Следующую иллюстрацию.
The combiner phase(метод поиска) примет входные данные с этапа сопоставления в виде пары ключ-значение с именем сотрудника и зарплатой. Используя технику поиска, объединитель проверит всю заработную плату сотрудников, чтобы найти самого высокооплачиваемого сотрудника в каждом файле. См. Следующий фрагмент.
<k: employee name, v: salary>
Max= the salary of an first employee. Treated as max salary
if(v(second employee).salary > Max){
Max = v(salary);
}
else{
Continue checking;
}
Ожидаемый результат выглядит следующим образом -
|
Reducer phase- Сформируйте каждый файл, вы найдете самого высокооплачиваемого сотрудника. Чтобы избежать избыточности, проверьте все пары <k, v> и удалите повторяющиеся записи, если таковые имеются. Тот же алгоритм используется между четырьмя парами <k, v>, которые поступают из четырех входных файлов. Окончательный результат должен быть следующим -
<gopal, 50000>
Индексирование
Обычно индексация используется для указания на определенные данные и их адрес. Он выполняет пакетную индексацию входных файлов для конкретного Mapper.
Техника индексации, которая обычно используется в MapReduce, известна как inverted index.Поисковые системы, такие как Google и Bing, используют метод перевернутой индексации. Попробуем разобраться, как работает индексация, на простом примере.
пример
Следующий текст является вводом для инвертированной индексации. Здесь T [0], T [1] и t [2] - имена файлов, а их содержимое заключено в двойные кавычки.
T[0] = "it is what it is"
T[1] = "what is it"
T[2] = "it is a banana"
После применения алгоритма индексирования мы получаем следующий результат -
"a": {2}
"banana": {2}
"is": {0, 1, 2}
"it": {0, 1, 2}
"what": {0, 1}
Здесь "a": {2} означает, что термин "a" появляется в файле T [2]. Аналогично, «is»: {0, 1, 2} подразумевает, что термин «is» встречается в файлах T [0], T [1] и T [2].
TF-IDF
TF-IDF - это алгоритм обработки текста, который является сокращением от Term Frequency - Inverse Document Frequency. Это один из распространенных алгоритмов веб-анализа. Здесь термин «частота» относится к тому, сколько раз термин встречается в документе.
Частота сроков (TF)
Он измеряет, как часто в документе встречается конкретный термин. Он рассчитывается как количество раз, когда слово появляется в документе, деленное на общее количество слов в этом документе.
TF(the) = (Number of times term the ‘the’ appears in a document) / (Total number of terms in the document)
Обратная частота документов (IDF)
Он измеряет важность термина. Он рассчитывается путем деления количества документов в текстовой базе данных на количество документов, в которых встречается конкретный термин.
При вычислении TF все термины считаются одинаково важными. Это означает, что TF считает частоту термина для обычных слов, таких как «есть», «а», «что» и т. Д. Таким образом, нам нужно знать часто встречающиеся термины, увеличивая масштаб редких, вычисляя следующее:
IDF(the) = log_e(Total number of documents / Number of documents with term ‘the’ in it).
Алгоритм поясняется ниже на небольшом примере.
пример
Рассмотрим документ, содержащий 1000 слов, в которых слово hiveпоявляется 50 раз. TF дляhive тогда (50/1000) = 0,05.
Теперь предположим, что у нас есть 10 миллионов документов и слово hiveпоявляется в 1000 из них. Тогда IDF рассчитывается как log (10,000,000 / 1,000) = 4.
Вес TF-IDF является произведением этих величин - 0,05 × 4 = 0,20.