Основы MapReduce
У меня есть текстовый файл 300 МБ с размером блока 128 МБ. Таким образом, всего будет создано 3 блока 128+128+44 мб. Поправьте меня - для уменьшения карты разделение ввода по умолчанию совпадает с размером блока 128 МБ, который можно настроить. Теперь программа чтения записей будет считывать каждое разделение и создавать пару ключ-значение, в которой смещение ключа и значение - одна строка. (TextInputFormat) Вопрос в том, заканчивается ли блок в последней строке моего блока, но строка заканчивается в другом блоке, будет ли оставшаяся строка взята из другого узла, или оставшаяся строка будет работать в другом узле. Также, как второй узел поймет, что его 1-я строка уже взята для обработки и ему не нужно обрабатывать снова.
Например, это stackru. Это (конец блока 1/ входное разбиение) является примером сокращения карты. (конец линии)
1 ответ
3 картографа будут созданы для этого сценария. Hadoop использует указатель в конце каждого блока, который указывает местоположение следующего блока, поэтому mapper 1 будет обрабатывать всю строку, которая может быть частью блока 2, а mapper 2 начнет обработку, покидая эту строку.