我希望我的映射器使用哈希映射來檢查某些東西。哈希映射值對於所有映射器和每個映射器負載都是相同的,因此個別和所有內存都由其消耗。我希望哈希映射加載一個,所有映射器都使用它。你認爲有什麼辦法呢?我知道每個映射器使用不同的JVM機器。 謝謝全部是以任何方式使用共享數據映射器?
回答
有一些東西叫分佈式緩存。即使使用分佈式緩存,你也不能在兩個mapper jvm進程之間共享內存(你的hashmap)。 但是,這種分佈式緩存的目的是在集羣中的所有節點上分發像查找文件這樣的小文件。再次,您必須爲節點中的每個映射器進程單獨構建散列映射。
定義散列映射爲靜態成員變量** Map類
限定static boolean init_once = false
超越控制設置功能,用來初始化哈希映射在設置(設置在每一個任務被調用一次,但所有maptask份額可以共享哈希表)
定義布爾init_once =假,在設置功能
if(!init_once)
{
init_once = true;
//* you init code here
}
說明:它不是線程安全的,如果Hadoop的maptask在多線程運行莫de,mutex應該用來確保操作是itom
我這樣做,但每個地圖加載哈希映射。 – vahid
我看到,每個任務都會調用setup。 – michaeltang
我聽說哈希映射定義爲靜態是每個任務跟蹤器運行但不測試。 – vahid
@vahid Map/Reduce顯式不是這樣設置的。如果其中一個映射器出現故障並需要重新啓動,會發生什麼情況?也許你應該看看像MPI。少量的信令信息可以通過計數器共享 - 與每個心跳一起傳輸。
如果其中一個Mappers失敗不會在我的情況下有任何問題。 MPI非常疲憊,我不喜歡那樣。我強制減少Mapper的數量,每個映射器使用1.5 GB的內存,而在一天內完成的是兩天內完成。 – vahid
- 1. 兩個Sinatra應用程序,共享數據映射器DB
- 2. Ç共享存儲器指針映射
- 3. 共享Windows映射驅動器
- 4. 是否以任何方式多次打開共享內存?
- 5. 重新映射共享庫
- 6. JPA共享實體映射
- 7. 數據映射器模式
- 8. 在MapReduce映射器之間共享計數器值
- 9. 如何在Google Map上以圖形方式映射JSON數據?
- 10. 在Java中的另一個數據映射器內使用數據映射器?
- 11. 使用Typescript映射數據庫模式
- 12. 方式在共享數據庫在Heroku
- 13. 數據映射器查找映射
- 14. 使用sendfile()/ fcopyfile()從共享內存映射對象複製數據
- 15. 最好的方式來映射數據?
- 16. 是實現數據映射器模式的核心數據嗎?
- 17. Zend_Auth_Adapter使用數據映射器
- 18. 使用數據映射器遷移
- 19. 映射文件共享,以便可以訪問IIS
- 20. 如何在Hadoop中的映射器之間共享HashMap?
- 21. 如何以靜默方式取消映射映射網絡驅動器
- 22. 錯誤而映射共享庫
- 23. 學說Yaml映射共享列
- 24. 休眠 - 共享映射xml文件
- 25. 帶有boost :: interprocess的共享映射
- 26. 保存哈希映射共享偏好
- 27. 共享內存中的C++ STL映射
- 28. 無法映射共享內存
- 29. TFS 2010映射到共享文件夾
- 30. 共享模型的休眠映射
我想在映射器之間共享內存JVM進程和分佈式緩存不適合我。 – vahid