2012-01-28 73 views
1

我正在編寫代碼將文件傳輸到hadoop hdfs parallel。所以我有很多線程調用filesystem.copyFromLocalFile。關於hadoop文件系統transferFromLocalFile

我認爲打開一個文件系統的成本不小,所以我只在我的項目中打開了一個文件系統。所以我認爲,如果有太多的線程同時調用它,可能會有問題。但到目前爲止,它沒有問題地正常工作。

任何人都可以給我一些關於這種複製方法的信息嗎? 非常感謝你&有一個愉快的週末。

回答

0

你能告訴我更多關於copyFromLocalFile()的信息嗎?

我不確定,但我想你的情況,線程共享相同的資源之間。因爲,你只有一個FileSystem實例,所以每個可能共享這個對象的時間共享。

+0

代碼中沒有同步。所以沒有時間分享。無論有多少個線程將運行。此外,對於複製,不需要存儲內部狀態,這就是它的工作原理。 – 2012-01-28 10:59:37

+0

我其實只是想知道這個copyFromLocalFile()是否線程安全?或者文件系統將啓動許多文件傳輸線程。 – 2012-01-30 19:26:44

1

我看到了下面的設計需要考慮的要點:
一)將成爲這一過程的瓶頸?我認爲在2-3個並行複製操作中,本地磁盤或1GB以太網將成爲瓶頸。您可以以多線程應用程序的形式執行此操作,也可以運行一些進程。無論如何,我不認爲你需要高水平的並行性。 b)錯誤處理。一個線程的失敗不應該阻止整個過程,並且同時文件不應該丟失。我通常在這種情況下做的是同意在最壞的情況下文件可以被複制兩次。如果確定 - 系統可以在簡單的「複製然後刪除」方案中工作。 c)如果您從其中一個羣集節點複製 - HDFS將變得不平衡,因爲一個副本將存儲在您複製的主機上。你需要不斷地做平衡。