Я хотел бы изменить способ разделения входного файла на блоки и его хранения в распределенной файловой системе Hadoop (например, файл разбивается на основе размера блока, но мое приложение требует разделения файла на основе содержимого файла). Поэтому я хотел бы точно знать класс, который разбивает файл на блоки на основе свойства размера блока HADOOP.
Файловая система дистрибутива Hadoop
Ответы (1)
Блоки — это абстракции для HDFS, а InputSplits — это абстракции для MapReduce. По умолчанию один блок HDFS соответствует одному InputSplit, который можно изменить.
HDFS по умолчанию делит блоки на точные блоки по 64 МБ, а также может разделяться по границам записи. InputFormat должен создавать InputSplits из блоков данных в случае формата ввода файла. Каждый InputSplit будет обрабатываться отдельным преобразователем.
например, он разбивает файл на основе размера блока, но мое приложение требует разбить файл на основе содержимого файла
Подумайте о InputSplits и создайте новый InputFormat в соответствии с требованиями приложения. Вот несколько руководств (1, 2 и 3) при создании нового InputFormat.
person
Praveen Sripati
schedule
03.01.2013
Спасибо, Правин. Я намерен изменить исходный код Hadoop. Итак, я хочу знать, как управление переходит от одного класса к другому в hdfs. ‹br›Я хотел бы знать следующее: ‹br› 1. Класс, который вызывается, когда мы используем команду CopyFromLocal в командной строке для скопировать файл в hdfs. 2. Класс, который создает объекты для класса, реализующего интерфейс Mapper. 3. Класс, который назначает блоки в список узлов данных (массив DatanodeDescriptor), возвращаемый функцией ChooseTarget(). функция в классе ReplicationTargetChooser.
- person user1938899; 07.01.2013