如何将 JMXConsole 远程连接到 Spark 流应用程序

How to connect JMXConsole remotely to Spark streaming application

我有一个 Spark 流应用程序 运行,它处于从 Kafka 主题读取的 yarn-cluster 模式。

我想将 JMXConsole 或 Java visualvm 连接到 Cloudera 发行版中的这些远程进程以收集一些性能基准。

我该怎么做?

我这样做的方法是set/add以下属性(同时启动飞行记录器):

spark.executor.extraJavaOptions=-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=0

如果你每个盒子上只有一个工人运行,你可以将端口设置为固定的。如果有多个,则需要使用端口 0 并使用 lsof 查找分配了哪个端口。