我有一个java类来管理作业并通过spark执行它们(使用1.6)。 我正在使用API - sparkLauncher。 startApplication(SparkAppHandle.Listener ...侦听器)以监视作业的状态。 问题是我转移到真正的集群环境中工作,当master和worker不在同一台机器上时这种方式无法工作,因为内部实现只使用localhost(loopback)来打开一个端口工人要绑定。 API sparkLauncher.launch()有效,但不允许我监控状态。 使用Java代码的集群环境的最佳实践是什么? 我还看到了隐藏Rest API的选项,它足够成熟吗?我应该以某种方式在火花中启用它(即使端口从外面打开,我也会被拒绝访问)?
答案 0 :(得分:0)
每个SparkContext默认在端口4040上启动Web UI,显示有关应用程序的有用信息。这包括:
您只需在网络浏览器中打开http://driver-node:4040即可访问此界面。如果多个SparkContexts在同一主机上运行,它们将绑定到以4040(4041,4042等)开头的连续端口。
您可以找到更多详细信息here.
答案 1 :(得分:0)
REST API
除了在UI中查看指标外,它们还可以作为JSON使用。这为开发人员提供了一种为Spark创建新的可视化和监视工具的简便方法。 JSON既可用于正在运行的应用程序,也可用于历史记录服务器。端点安装在/ api / v1。例如,对于历史服务器,它们通常可以在http://:18080 / api / v1上访问,对于正在运行的应用程序,可以在http://localhost:4040/api/v1访问。
您可以找到更多详细信息here.