2016-07-25 37 views
1

Ich habe einen Spark-Prozess auf YARN (mit 10 Arbeiter und 10 Hosts), und ich würde gerne JMX auf den Executoren verwenden können. Sagen wir, um zu vereinfachen, ich bin mir sicher, dass es auf jedem Host höchstens einen Executor geben wird (um Portkonflikte zu vermeiden).Legen Sie benutzerdefinierten java.rmi.server.hostname für jeden Spark-Executor

Die Verwendung von spark.executor.extraJavaOptions auf dem Spark Conf ist nicht möglich, da jeder Host einen anderen java.rmi.server.hostname haben muss.

Ich finde keine Möglichkeit, benutzerdefinierte Java-Optionen pro YARN Container/Spark Executor zu setzen, wie würden Sie fortfahren?

Ich denke, es sollte dynamisch mit System.setProperty("java.rmi.server.hostname", ...) eingestellt werden, aber ich habe keinen Haken "wenn Executor startet". Tu ich?

+0

Aber alle diese Vollstrecker haben nicht wirklich einen anderen Host-Namen, nicht wahr? –

+0

Ja haben sie. Spark läuft im Garnmodus. Daher werden Executoren auf allen Hosts ausgeführt. –

Antwort

0

Sie können in spark.executor.extraJavaOptions ähnlich wie diese verwenden:

-Dcom.sun.management.jmxremote.port=9999 
-Dcom.sun.management.jmxremote.rmi.port=9999 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.local.only=false