2
假設我有一個在11節點集羣上運行的EMR作業:m1.small主節點,而10個m1.xlarge從節點。如何確定並行mapers/reducers以及堆內存的數量?
現在一個m1.xlarge節點具有15 GB的RAM。
如何確定可以設置的並行映射器和reducer的數量?
我的工作是內存密集型,我想有越來越多的堆分配給JVM。
另一個相關的問題: 如果我們設置以下參數:
<property><name>mapred.child.java.opts</name><value>-Xmx4096m</value></property>
<property><name>mapred.job.reuse.jvm.num.tasks</name><value>1</value></property>
<property><name>mapred.tasktracker.map.tasks.maximum</name><value>2</value></property>
<property><name>mapred.tasktracker.reduce.tasks.maximum</name><value>2</value></property>
那麼這將會4GB被4個進程(2映射器和2減速)共享或他們都將獲得4GB每個?
好吧,對於m1.xlarge,我們有15 GB的內存,但是我說有2個映射器和2個reducer,那麼它總共將達到16 GB,這樣做並且讓它處於邊緣是不是主意? – Amar
嘗試一下,看看:-)如果你得到OOME,那麼你將不得不降低堆空間。此時它是試錯。對羣集設置進行刻錄測試的一個好方法是使用contrib tera-sort mapreduce作業,這樣您就可以對運行時進行基準測試。考慮到你有多少ram,你可能也想更新io.sort.mb到更高的值。 –