2013-04-05 29 views
1

有沒有關於是否使用分佈式緩存分發文件的指導原則?對於DistributedCache文件hadoop來說有多大?

我有一個文件大小86746785(我使用hadoop dfs -dus - 不知道這是否在bytes或什麼)。分發這個文件是個好主意嗎?

+1

Hadoop的DFS -dus是以字節爲單位 – 2013-04-05 10:36:19

回答

3

唯一可行的答案是「它取決於」。

你必須考慮使用分佈式緩存的文件被複制到節點,這是涉及到你的任務,這顯然需要帶寬。另外,通常如果你想在分佈式緩存中使用這個文件,你會把文件保存在內存中,所以你必須考慮這個問題。

至於你的情況 - 是的,那些是字節。大小約爲86 MB,這對分佈式緩存來說非常合適。幾百MB內的任何內容應該仍然可以。

+0

我想補充一點,它只是被複制到將用於實際執行任務的節點工作 - 即你的工作是一個單一的地圖任務,它只會被複制到執行該任務的節點,而不是你注意到的每個**節點。 – 2013-04-05 11:49:51

+0

@ChrisWhite你說得對,我以某種方式沒有想到要做出這樣的區分。編輯並添加到答案中。 – TC1 2013-04-05 12:00:06

0

分佈式緩存的大小默認爲10GB。但最好在分佈式緩存中保留幾MB的數據。否則它會影響應用程序的性能。

1

除了TC1的回答,也可以考慮:

  • 何時/何地,你打算使用的文件(S)和多大的集羣?
    • 在許多映射器中,您只需要reducer中的文件的單個reducer(或少量場景)我會建議您不要這樣做,因爲您可能只需在reducer中自行下拉文件(setup方法) ,而不是不必要地爲您的映射器運行的每個任務節點 - 特別是文件很大時(這取決於羣集中有多少個節點)
  • 您將多少個文件放入緩存?
    • 如果由於某種原因,你有100個文件需要分發,你最好把tar文件放在tar文件中,然後把tar文件放在分佈式緩存的歸檔集中(dist緩存將爲你分配文件)。你在這裏試圖避免的是如果你沒有把它們放在dist緩存中,而是直接從HDFS中加載它們,你可能會遇到一個場景,你有1000個映射器和/或reducer試圖打開同一個文件能引起太多打開的文件的名稱節點問題和數據節點
相關問題