2012-08-09 86 views
0

f.e.創建文件20字節。
第一進程會寫從0到4
2日的5至9
hadoop/HDFS:是否可以從多個進程寫入同一個文件?

我需要這個並行使用我的MapReduce創建一個大的文件。

謝謝。

P.S.也許它還沒有實現,但它可能在一般情況下 - 請指出我應該在哪裏挖掘。

+0

爲什麼你要寫入並行的** **文件?那和mapreduce有什麼關係? – 2012-08-09 12:38:44

+0

我想加快這個過程。我可以做並行數據計算。現在我應該找到一種方法將準備好的數據寫入文件。平行而不是排隊更好。 – denys 2012-08-09 13:22:38

+0

你不能加快速度,至少不能寫入單個文件。 – 2012-08-09 13:30:23

回答

3

您是否能夠解釋在創建該文件後您打算如何處理該文件。

如果你需要將它從HDFS中取出然後使用它,那麼你可以讓Hadoop M/R創建單獨的文件,然後使用像hadoop fs -cat /path/to/output/part* > localfile這樣的命令將這些部分組合到一個文件中並保存到本地文件系統。

否則,您無法讓多個寫入器對同一個文件開放 - 讀取和寫入HDFS是基於流的,雖然您可以打開多個讀取器(可能讀取不同的數據塊),但多次寫入是不可能的。

Web下載程序在多個線程中使用Range HTTP header來請求文件的某些部分,然後在稍後合併這些部分之前使用tmp文件(如Thomas Jungblut所建議的那樣),或者他們可能能夠使用隨機IO,緩衝將下載的部件寫入內存,然後將其寫入輸出文件的正確位置。很遺憾,您無法使用Hadoop HDFS執行隨機輸出。

0

我認爲簡短的答案是否定的。你完成這個任務的方式是將你的多個'初步'文件寫入hadoop,然後將它們M/R複製到一個統一文件中。基本上,使用hadoop,不要重新發明輪子。

相關問題