Размер блока по умолчанию в HDFS составляет 64 МБ.Если пара ключ / значение составляет 10 МБ, то она может / не может быть разделена на блоки.
Если 1-я пара КВ составляет 60 МБ, а вторая - 10 МБ.Затем во 2-й паре КВ остается только 4 МБ свободного места в 1-м блоке (при размере блока 64 МБ).Таким образом, 4 МБ 2-го КВ сохраняются в 1-м блоке, а оставшиеся 6 МБ сохраняются во втором блоке.
Если 1-я пара КВ равна 40 МБ, а вторая -10 МБ.Затем во 2-й паре КВ в первом блоке осталось 24 МБ (при размере блока 64 МБ).Таким образом, 2-й кв хранится полностью в 1-м блоке и не разделяется.
При использовании SequenceFile маппер не знает, где находится начало записи в блоке, поэтомуСинхронизация добавляется в SequenceFiles автоматически с помощью инфраструктуры Hadoop.В соответствии с Hadoop: полное руководство
Точка синхронизации - это точка в потоке, которая может использоваться для повторной синхронизации с границей записи, если читатель «потерян» -например, после поиска произвольной позиции в потоке.Точки синхронизации записываются в SequenceFile.Writer, который вставляет специальную запись, чтобы пометить точку синхронизации каждые несколько записей в процессе записи файла последовательности.Такие записи достаточно малы, чтобы нести незначительные накладные расходы на хранение - менее 1%.Точки синхронизации всегда совпадают с границами записи.
Когда задача карты начинает обрабатывать блок, она ищет первую точку синхронизации и начинает обработку записей оттуда.И когда он достигнет конца блока, он будет искать первую точку синхронизации следующего блока, и данные передаются до этой точки по сети в маппер для обработки.
Подводя итог, HadoopFrameworks поддерживает запись, даже если запись разбита на блоки.