2013-02-24 94 views
1

我正在運行一些實驗來測試使用不同參數讀取和處理存儲在HDFS上的數據所花費的時間(通過map-reduce)。我使用豬腳本來啓動map-reduce作業。由於我經常使用同一組文件,因此我的結果可能因文件/塊緩存而受到影響。Hadoop - 數據塊緩存技術

我想了解map-reduce環境中使用的各種緩存技術。

可以說存儲在HDFS上的文件foo(包含一些要處理的數據)佔用了HDFS塊的1,並且它被存儲在機器STORE中。在map-reduce任務期間,機器COMPUTE通過網絡讀取該塊並對其進行處理。在機器COMPUTE內存/硬盤

  1. 緩存在機STORE(在內存中的文件緩存)
  2. 緩存的內存:緩存可以在兩個層次發生。

我很肯定#1緩存發生。我想確保是否發生類似#2的事情?從here之後,看起來沒有客戶級緩存正在進行,因爲在清除緩存之前,在同一臺計算機上再次需要緩存COMPUTE的塊不太可能。

此外,hadoop分佈式緩存僅用於將任何應用程序特定文件(而不是任務特定的輸入數據文件)分發到所有任務跟蹤器節點?或者是分佈式緩存中緩存的任務特定輸入文件數據(如foo文件塊)?我假設local.cache.size和相關參數只控制分佈式緩存。

請說明。

回答

3

在HDFS中應用的唯一緩存是操作系統緩存,以儘量減少磁盤訪問。 所以如果你從數據節點訪問一個塊,如果沒有其他事情發生,它可能會被緩存。

在你的客戶端,這取決於你對塊做什麼。如果直接將其寫入磁盤,客戶端操作系統很可能會將其緩存。

分佈式緩存僅用於需要在作業啓動任務的集羣中分佈的JAR和文件。這個名字因此有點誤導,因爲它「沒有緩存」。

+0

感謝您的澄清。 – sachin2182 2013-02-24 18:19:32