Разделение SequenceFile контролируемым образом - Hadoop - PullRequest
6 голосов
/ 06 декабря 2011
Запись

hadoop в формате SequenceFile in в паре ключ-значение (запись). Предположим, у нас есть большой неограниченный файл журнала. Hadoop разделит файл в зависимости от размера блока и сохранит их на нескольких узлах данных. Гарантируется ли, что каждая пара ключ-значение будет находиться в одном блоке? или у нас может быть случай, когда ключ находится в одном блоке на узле 1, а значение (или его части) во втором блоке на узле 2? Если у нас могут быть сплошные спины, то каково решение? маркеры синхронизации?

Еще один вопрос: пишет ли hadoop автоматически маркеры синхронизации или мы должны писать это вручную?

1 Ответ

9 голосов
/ 07 декабря 2011

Я задал этот вопрос в списке рассылки hadoop. Они ответили:

Маркеры синхронизации уже записаны в файлы последовательности, они являются частью Формат. Это не о чем беспокоиться - и достаточно просто, чтобы проверить и быть уверенным в себе. Механизм такой же, как чтение текста файл с символами новой строки - читатель обеспечит прочтение границ данные для завершения записи, если это необходимо.

тогда я спросил:

Так что, если у нас есть задание на карту, анализирующее только второй блок журнала файл, он не должен передавать какие-либо другие части этого из других узлов потому что эта часть одинока и означает полный раскол? Я прав?

Они ответили:

Да. Проще говоря, ваши записи никогда не сломаются. Мы не читаем просто на границах разделения мы можем выйти за границы до синхронизации маркер встречается для того, чтобы завершить запись или серию записей. Последующие мапперы всегда будут пропускать до первого синхронизируйте маркер, а затем начинайте чтение - чтобы избежать дублирования. Это как работает чтение текстовых файлов - только здесь *. переводы строк 1016 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...