2015-04-27 88 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作業,以讀取每行以產生輸出。由於房屋維護的努力,此代碼將永久完成。因此,我想知道如何解決小文件問題,以及哪個進程效率最高。如果您之前已經處理過這樣的情況/有解決方案,請分享。 –

相關問題