2013-01-28 5 views
0

Я хочу обрабатывать многострочные CSV-файлы, и для этого я написал custom CSVInputFormat.Как увеличить задачи карты памяти с помощью реализации getSplits

Я хотел бы иметь около 40 потоков обработки CSV строк на каждом узле. Тем не менее, когда я создать кластер на Amazon EMR с 5 машинами (1 мастер и 4 ядра), я могу видеть, я получаю только 2 карты задач работают, даже если есть 6 доступные карты слотов:

dashboard on EMR showing number of map tasks and available slots

Я реализовал getSplits в моем inputFormat, чтобы он вел себя как NLineInputFormat. Я ожидал, что с этим я буду работать параллельно, но не имел никакого эффекта. Кроме того, я попытался установить аргументы -s,mapred.tasktracker.map.tasks.maximum=10 --args -jobconf,mapred.map.tasks=10, но никакого эффекта.

Что делать, если параллельно обрабатываются линии? Как работает hasoop, он не масштабируется, так как не имеет значения, сколько экземпляров я выделяю кластеру, только две задачи карты будут работать не более.

UPDATE: Когда я использую несжатый файл (zip) как источник, он создает больше задач карты, около 17 для 1,3 миллиона строк. Тем не менее, я удивляюсь, почему это не должно быть больше и почему больше карт не создается, когда данные застегнуты.

+0

Сколько данных вы пытаетесь обработать? Достаточно ли кормить больше картографов? – Guy

+0

1,3 миллиона строк, бит более 1 Гб. Наверное, так ... Что я сделал, это начать использовать многопоточные картографы, и это улучшило производительность, но вопрос остается ... Если я правильно понял, hasoop должен создавать больше задач карты, даже когда данные сжимаются. – mvallebr

+0

Это зависит от типа сжатия. Zip не является хорошим форматом, так как вам нужно иметь весь файл перед распаковкой. – Guy

ответ

0

Изменить размер сплита, чтобы иметь больше расколов.

Configuration conf= new Cofiguration(); 
//set the value that increases your number of splits. 
conf.set("mapred.max.split.size", "1020"); 
Job job = new Job(conf, "My job name"); 
+0

Попробуй и дайте знать результаты. Спасибо, что пытались помочь. – mvallebr