2017-01-05 1 views
0

내가 JMX 구성을 설정하고 여러 JMX 포트를 사용하는 :스파크 다음과 같이 원사 용기는 <code>spark.executor.extraJavaOptions</code>에 동일한 시스템

-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. 

내가 집행 및 드라이버의 JVM을 모니터링하고 싶었다. 하지만 내 문제는 내 클러스터의 단일 노드에서 둘 이상의 컨테이너/executor를 시작할 수 있다는 것입니다. 그래서 나는 항구 갈등이있을 것이라고 믿습니다. 이 시나리오를 처리 할 수있는 솔루션이 있거나 JMX 구성에서 포트 범위를 언급 할 수 있으므로 실행 프로그램이 빈 포트를 선택합니다.

답변

0

sun.management.jmxremote.port=0을 설정하면 JVM에서 임시 포트를 할당합니다.

이제 JVM에서 열었던 포트를 검색해야합니다. jps 명령을 실행하여 프로세스를 나열하십시오. PID가 표시되고, 다음 단계는 프로세스가 수신 대기중인 포트를 찾는 것입니다. lsof 명령을 사용하십시오!

lsof -p <PID> | grep LISTEN 

작동 여부를 알려주세요.

+0

com.sun.management.jmxremote.rmi.port도 0으로 설정해야합니까? – Alok

+1

rmi.port를 0으로 만든 후 작동 중입니다. 감사 – Alok