提交&在群集模式下通过java监视spark作业

时间:2017-01-03 09:41:47

标签: apache-spark

我有一个java类来管理作业并通过spark执行它们(使用1.6)。 我正在使用API​​ - sparkLauncher。 startApplication(SparkAppHandle.Listener ...侦听器)以监视作业的状态。 问题是我转移到真正的集群环境中工作,当master和worker不在同一台机器上时这种方式无法工作,因为内部实现只使用localhost(loopback)来打开一个端口工人要绑定。 API sparkLauncher.launch()有效,但不允许我监控状态。 使用Java代码的集群环境的最佳实践是什么? 我还看到了隐藏Rest API的选项,它足够成熟吗?我应该以某种方式在火花中启用它(即使端口从外面打开,我也会被拒绝访问)?

2 个答案:

答案 0 :(得分:0)

每个SparkContext默认在端口4040上启动Web UI,显示有关应用程序的有用信息。这包括:

  • 调度程序阶段和任务列表
  • RDD大小和内存使用情况摘要
  • 环境信息。
  • 有关正在运行的执行程序的信息

您只需在网络浏览器中打开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.