Я использую Hadoop в проекте, и мне нужно предложение.
Обычно по умолчанию Hadoop имеет «размер блока» около 64 МБ.
Также предлагается не использовать много / маленьких файлов ..
В настоящее время у меня очень-очень маленькие файлы помещаются в HDFS из-за дизайна приложения flume ..
Проблема в том, что Hadoop <= 0.20 не может добавлять файлы, в результате чего у меня слишком много файлов, чтобы моя карта-сокращение работала эффективно.
Должен быть правильный способ просто свернуть / объединить примерно 100 файлов в один ..
Следовательно, Hadoop фактически читает 1 большой файл вместо 10
Какие-либо предложения??
Вы рассматривали возможность использования архивов Hadoop? Думайте о них как о файлах tar для HDFS. http://hadoop.apache.org/common/docs/r0.20.2/hadoop_archives.html
Компания Media6degrees предложила отличное решение для объединения небольших файлов в Hadoop. Вы можете использовать их банку прямо сейчас. http://www.jointhegrid.com/hadoop_filecrush/index.jsp
Что вам нужно сделать, так это написать тривиальную программу-конкатенатор с преобразователем идентичности и одним или несколькими редукторами идентичности. Эта программа позволит вам объединить ваши маленькие файлы в несколько больших файлов, чтобы облегчить нагрузку на Hadoop.
Это может быть довольно сложной задачей по расписанию и пустой тратой места, но это необходимо из-за конструкции HDFS. Если бы HDFS была первоклассной файловой системой, с этим было бы гораздо легче справиться.