Является частью шаффла в mapreduce
Процесс, с помощью которого система сортирует выходные данные карты на стороне карты, называется сортировкой. это часть шаффла? Другими словами, когда начинается перемешивание? После записи вывода карты на диск или после записи вывода карты в буфер в памяти
1 ответ
Весь процесс сокращения карты объясняется на подробном уровне здесь: http://ercoppa.github.io/HadoopInternals/AnatomyMapReduceJob.html
Чтобы ответить на ваш вопрос, шаги в одной задаче карты включают в себя:
- Фаза INIT: мы настраиваем задачу Map
- Этап ИСПОЛНЕНИЯ: для каждого кортежа (ключ, значение) внутри разбиения карты мы запускаем функцию map()
- Фаза SPILLING: выходные данные карты хранятся в буфере в памяти; когда этот буфер почти заполнен, мы запускаем (параллельно) фазу пролива, чтобы удалить из нее данные
- Фаза SHUFFLE: в конце фазы пролива мы объединяем все выходные данные карты и упаковываем их для фазы сокращения
Фаза выполнения и пролива происходит параллельно. Итак, данные записываются в кольцевую буферную память -> сортируются в памяти -> когда буфер заполнен на 80% -> записывается на локальный диск.
В конце фазы EXECUTION поток SPILLING запускается в последний раз. Более подробно мы:
- отсортировать и пролить оставшиеся неразлитые кортежи
- начать фазу перетасовки
Обратите внимание, что за каждый раз, когда буфер был почти заполнен, мы получаем один файл разлива (SpillReciord + выходной файл). Каждый файл Spill содержит несколько разделов (сегментов).