2013-04-09 68 views
2

我處理這類離奇的使用情況下,我需要確保文件是本地計算機A的,文件B是本地計算機B,等等。當將文件複製到HDFS,是有辦法控制該文件將駐留在哪臺機器上?我知道任何給定的文件將被複制到三臺機器上,但我需要能夠說「文件A將明確存在於機器A上」。我並不關心其他兩臺機器 - 它們可能是我集羣上的任何機器。將文件複製到HDFS時,如何控制文件所在的節點?

謝謝。

+0

鑑於這種需求,有可能是您的HDFS整體架構是不正確的。請記住,*文件不會轉到節點*,塊會這樣做。然而,你可以使用**機架識別**和**複製因子**(非常小)的羣集。即確保每個塊都去每臺機器。無論如何,我沒有看到很多優勢,並且可能會更深入地展示您的用例,可能會讓我們獲得更好的見解來幫助您。 – xmar 2017-11-13 07:51:05

回答

0

我不這麼認爲,因爲一般來說,當該文件是大於64MB(塊大小)的文件塊的初級副本將駐留在多個服務器上更大。

+0

塊大小可以在配置設置中輕鬆修改,但這不是障礙。 [變更塊大小(http://stackoverflow.com/questions/2669800/changing-the-block-size-of-a-dfs-file-in-hadoop) – Engineiro 2013-04-09 22:35:58

+0

此外,這些文件是小的,小於1MB – sangfroid 2013-04-09 23:15:42

+0

我的意思是在概念上,如果數據可以駐留在多個服務器上,那麼不太可能不關心添加這樣的選項。 – Sharvanath 2013-04-11 01:11:12

0

HDFS是一種分佈式文件系統和HDFS集羣是(一臺機器或大量機器的)具體,一旦文件是在HDFS你下面鬆機或機器的概念。而這種抽象是最好的用例。如果文件大小較大,則複製塊大小將文件剪切爲塊大小,並根據複製因子將這些塊複製到羣集中的其他計算機上。這些塊基於

對於您的情況,如果您有3個節點羣集(+1主名稱節點),您的源文件大小爲1 MB,複製大小爲64 MB,複製因子爲3,那麼您將擁有3個節點的3個副本包含您的1MB文件,但從HDFS角度來看,您仍然只有1個文件。一旦文件複製到HDFS,你真的不考慮機器因素,因爲在機器級別沒有文件,它是文件塊。

如果你真的想確保無論出於何種原因,你能做的就是設置複製因子1和1個有節點羣集,這將保證您的離奇要求。

最後,你可以隨時使用的FsImage觀衆工具Hadoop集羣,看看那裏的文件塊的位置。更多細節位於here

相關問題