我在執行大量模式匹配的情況下對1,5 TB數據運行Hadoop作業。我有幾臺機器,每臺都有16GB內存,而且我總是通過這些數據獲得OutOfMemoryException
這個數據(我正在使用Hive)。如何在運行Hadoop時避免OutOfMemoryException?
我想知道如何在文件hadoop-env.sh
中優化設置選項HADOOP_HEAPSIZE
,所以我的工作不會失敗。是否有可能設置此選項,以便我的作業不會失敗?
當我將HADOOP_HEAPSIZE
設置爲1,5 GB並從查詢中刪除了一半模式匹配時,作業成功運行。那麼,如果這無助於避免工作失敗,那麼這種選擇是什麼?
我希望做更多的試驗以獲得最佳的設置,但由於這些工作需要超過10小時才能運行,所以我在徵求您的建議。
什麼讓你覺得'HADOOP_HEAPSIZE'不*有助於避免失敗?聽起來像你的經驗,它的確如此。由於只能通過檢查數據/作業才能知道的原因,您的情況要求堆大小至少是這麼大。你可以重構你的工作,以便它不需要這麼大的堆? – 2010-08-01 23:29:58
我修改了我的工作,所以它沒有使用這麼大的堆,但是在這個時候我已經改變了'HADOOP_HEAPSIZE'。我沒有看到這個金字塔的真實結果,我的意思是:爲什麼設置堆比:amount_of_my_RAM/number_of_mappers_or_reducers? – wlk 2010-08-02 07:14:39