2015-04-27 2 views
-2

Я ищу решение (в версии HADOOP 2.2+) для следующей задачи.Handle 3 Million + небольшие текстовые файлы в Hadoop 2.0

Постановка задачи:

Мы должны обработать 3 млн + файлы на ежедневной основе. Мы имеем , заинтересованные в захвате имени файла, а также данных в файле. Как обработать эти данные наиболее эффективным способом?

Я знаю о «CombineFileInputFormat», «MultiFileInputSplit» и «Layout HAR Файл», но я не уверен, какой из них будет лучше с точки зрения производительности.

Если есть другие варианты, о которых вы знаете, пожалуйста, поделитесь ими.

ответ

0

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

Я бы не стал слишком беспокоиться о производительности, пока вы не увидите его работу. Вы знаете, преждевременная оптимизация.

Предположив хранить файлы в папке на каждый день, просто загрузить файлы на HDFS с помощью copyFromLocalFile Java API (как описано here):

Configuration conf = ... // do configuration 
FileSystem fs = FileSystem.get(conf); 
fs.copyFromLocalFile(
    new Path("/home/user/filesToProcess/20150429"), 
    new Path("/user/hadoop/filesToProcess/20150429")); 

Вы можете сделать то же самое с command line (как описано here):

/bin/hadoop dfs -copyFromLocal "/home/user/filesToProcess/20150429" "/user/hadoop/filesToProcess/20150429" 
+0

Спасибо за ответ, –

+0

Спасибо за ответ. Мы планируем хранить все файлы (размером <1 МБ) в папке на ежедневной основе. Теперь нам нужно обработать задачу «Уменьшить карту» в этих файлах, чтобы читать каждую строку для вывода вывода. Этот код навсегда завершается из-за усилий по поддержанию дома. Таким образом, я хотел знать, как решить проблему с небольшим файлом, и какой процесс будет наиболее эффективным. Если вы столкнулись с подобным сценарием раньше/у вас есть решение для этого, пожалуйста, разделите. –

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