2016-04-27 71 views
0

我有一個對象:在羣集模式使用DistributedCached

class Cache { 
    Map<K,V> map; 
} 

我用DistributedCache指定URI包含此對象,然後在每個映射任務的設置()函數,我加載處理此高速緩存對象特別是使用Cache對象在每個地圖任務中存儲一些值。

我的問題是,當我們在集羣模式下運行hadoop時,每個datanode中的地圖內容將與其他地方的內容不同。這樣對嗎?因爲當我以本地模式開發時,地圖的內容包含整個數據集的結果。

回答

0

保存在DN上的數據將具有相同的格式,並且映射器將處理相同格式的文件。在驅動程序代碼中,您必須定義輸入和格式類型。在這種情況下,上下文將相同。如果地圖任務將在任意數量的DN上運行,那麼地圖上下文將相同。

現在在分佈式緩存中,您將使用DistributedCache API添加文件。在設置方法中,您將檢查您想要在Path對象數組中處理的文件。

+0

感謝您的回答,但我的意思是,map'p的內容會不一樣或不一樣?例如:節點1包含A,B,C,節點2包含D,E,F ...,則節點1中的緩存文件包含節點2中的(A,B,C)和緩存文件(D,E,F) ? – nd07

+0

如果您正在編寫Map Reduce應用程序,您希望在Hadoop集羣中的所有節點上共享某些文件。它可以是簡單的屬性文件或可以是可執行的jar文件。 Hadoop Map Reduce Project爲我們提供了一種名爲DistributedCache的功能。 此分佈式緩存配置了作業配置,它的作用是向羣集上的所有機器提供只讀數據。 –