Файловая система дистрибутива Hadoop

Я хотел бы изменить способ разделения входного файла на блоки и его хранения в распределенной файловой системе Hadoop (например, файл разбивается на основе размера блока, но мое приложение требует разделения файла на основе содержимого файла). Поэтому я хотел бы точно знать класс, который разбивает файл на блоки на основе свойства размера блока HADOOP.


person user1938899    schedule 31.12.2012    source источник


Ответы (1)


Блоки — это абстракции для HDFS, а InputSplits — это абстракции для MapReduce. По умолчанию один блок HDFS соответствует одному InputSplit, который можно изменить.

HDFS по умолчанию делит блоки на точные блоки по 64 МБ, а также может разделяться по границам записи. InputFormat должен создавать InputSplits из блоков данных в случае формата ввода файла. Каждый InputSplit будет обрабатываться отдельным преобразователем.

например, он разбивает файл на основе размера блока, но мое приложение требует разбить файл на основе содержимого файла

Подумайте о InputSplits и создайте новый InputFormat в соответствии с требованиями приложения. Вот несколько руководств (1, 2 и 3) при создании нового InputFormat.

person Praveen Sripati    schedule 03.01.2013
comment
Спасибо, Правин. Я намерен изменить исходный код Hadoop. Итак, я хочу знать, как управление переходит от одного класса к другому в hdfs. ‹br›Я хотел бы знать следующее: ‹br› 1. Класс, который вызывается, когда мы используем команду CopyFromLocal в командной строке для скопировать файл в hdfs. 2. Класс, который создает объекты для класса, реализующего интерфейс Mapper. 3. Класс, который назначает блоки в список узлов данных (массив DatanodeDescriptor), возвращаемый функцией ChooseTarget(). функция в классе ReplicationTargetChooser. - person user1938899; 07.01.2013