2015-04-27 49 views
-2

我正在为以下问题语句寻找解决方案(在HADOOP 2.2+版本中)。在Hadoop 2.0中处理3百万个+小文本文件

问题陈述:

我们需要处理每天300万个+文件。我们 有兴趣捕捉文件名称以及文件中的数据。 如何以最有效的方式处理这些数据?

我知道关于“CombineFileInputFormat”,“MultiFileInputSplit”和“HAR文件布局”,但我不知道哪一个会在性能方面会更好。

如果您还有其他更好的选项,请您分享。

回答

0

取决于多种因素,例如文件来自哪里,什么事件应该触发上传,文件的内容是什么,以及您想对其应用什么处理。

直到你看到它的工作,我都不会太在意性能。你知道,不成熟的优化。

假如你将文件存储到每一天的文件夹中,只是简单的上传使用copyFromLocalFile的Java API(如描述here)文件到HDFS:

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

感谢您的回应。我们计划每天将所有文件(大小小于1MB)存储在文件夹中。现在,我们必须在这些文件上处理Map Reduce作业,以读取每行以产生输出。由于房屋维护的努力,此代码将永久完成。因此,我想知道如何解决小文件问题,以及哪个进程效率最高。如果您之前已经处理过这样的情况/有解决方案,请分享。 –

相关问题