2014-02-28 84 views
8

在我正在使用但沒有管理員權限的hadoop羣集上,我看到使用-Xmx選項啓動JobTracker,TaskTracker和DataNode的hadoop守護進程指定兩次。類似於使用多個-Xmx選項(hadoop)啓動的Java守護進程

/usr/java/default/bin/java -Dproc_datanode -Xmx1000m ... -Xmx128m ... 

現在,在這種情況下哪個選項優先?這是兩個或最先或最後一個的最大值?

這可能不是特定於hadoop,只是在這種情況下遇到它,所以提及它。

+0

好問題......你應該就此提出報告給管理員。如果你想自己測試,也許使用'Runtime.getRuntime()。maxMemory()'? – fge

+0

我有,但他們還沒有解決它。 – acharuva

+0

感謝@fge的建議,我試了一下,似乎正在撿起最後一個選項。一旦SO允許,我會發佈一個詳細的答案。 – acharuva

回答

7

至於建議由我與一個獨立的Java程序測試此@fge,具有以下主要方法

public static void main(String[] args){ 
    long mem = Runtime.getRuntime().maxMemory(); 
    System.out.println("Max mem="+mem/(1024*1024) + "m");  
} 

,並與多個-Xmx選項啓動它,它似乎是拿起最後一個 。例如。

java -Xmx100m -Xmx20m -Xmx400m 程序輸出是 Max mem=395m

+0

該特定的調用不能證明它沒有選擇最大... – nafg