dfs.block.size для локальных заданий hadoop? - PullRequest
1 голос
/ 19 марта 2012

Я хочу запустить модульный тест hadoop, используя режим локальной файловой системы ... В идеале я хотел бы видеть несколько файлов part-m- *, записанных на диск (а не только 1).Однако, поскольку это всего лишь тест, я не хочу обрабатывать 64M данных (размер по умолчанию составляет ~ 64 мегабайта на блок, я считаю).

В распределенном режиме мы можем установить это с помощью

dfs.block.size

Мне интересно, есть ли способ заставить мою локальную файловую систему записывать небольшие файлы part-m, т.е.Мой модульный тест будет имитировать содержимое крупномасштабных данных с несколькими (хотя и очень маленькими) файлами.

Ответы [ 2 ]

3 голосов
/ 20 марта 2012

Предполагая, что ваш входной формат может обрабатывать разделяемые файлы (см. Метод org.apache.hadoop.mapreduce.lib.input.FileInputFormat.isSplitable(JobContext, Path)), вы можете изменить размер входного разбиения, чтобы обрабатывать меньший файл с помощью нескольких картографических карт (я предполагаю, что вы используете новый API mapreduce упаковка):

Например, если вы используете TextInputFormat (или большинство форматов ввода, расширяющих FileInputFormat), вы можете вызывать статические методы util:

  • FileInputFormat.setMaxInputSplitSize(Job, long)
  • FileInputFormat.setMinInputSplitSize(Job, long)

Длинным аргументом является размер разбиения в байтах, поэтому просто установите желаемый размер

Под этими методами устанавливаются следующие свойства конфигурации задания:

  • mapred.min.split.size
  • mapred.max.split.size

Последнее замечание: некоторые входные форматы могут переопределять метод FileInputFormat.getFormatMinSplitSize() (по умолчанию 1 байт для FileInputFormat), так что будьте осторожны, если вы устанавливаете значение, а hadoop появляется для его игнорирования.

И последнее замечание: рассматривали ли вы MRUnit http://incubator.apache.org/mrunit/ для фактического «модульного» тестирования вашего кода MR?

0 голосов
/ 21 марта 2017

попробуйте сделать это, это будет работать

hadoop fs -D dfs.block.size=16777216 -put 25090206.P .
...