2013-10-10 6 views
1

Мне нужно загрузить много файлов на моем кластере (+/- 500 000), и это занимает очень много времени. Каждый файл находится в формате gzip и занимает 80 Мб места.Оптимизация для hadoop с большим количеством мелких файлов

На данный момент я использую время цикл для загрузки моего файла с путы, но у вас есть, может быть, лучшее решение ...

Спасибо за вашу порцию.

ответ

1

Может быть, вы можете посмотреть в DataLoader из PivotalHD, который загружает данные с использованием карты рабочих мест параллельно, которая быстрее. Проверьте эту ссылку PivotalHD Dataloader.

+0

Да, ваша ссылка довольно интересная. Спасибо вам! – KelevraZero

3

Трудно понять проблему так, как вы ее объясните.

HDFS поддерживает сжатие gzip без разделения. Поскольку ваши файлы ~ 80 МБ каждый, тогда разделение не является большой проблемой для вас, просто убедитесь, что размер блока составляет 128 МБ.

Что касается загрузки файлов, почему бы вам не загрузить весь каталог с помощью команды -put?

hadoop fs -put local/path/to/dir path/in/hdfs 

будет делать трюк.

+0

Спасибо, но у меня нет проблем с обработкой файла gzip. О команде put, я не могу, потому что мне нужно загрузить juste образец моего каталога, и я превышу пределы ввода, когда я пытаюсь использовать hasoop fs -put /path/*XXX.gz/path. – KelevraZero

+0

find/path -name "* XXX.gz" -print0 | xargs -0 -i hadoop fs -put {}/path –

Смежные вопросы