2017-01-03 80 views
0

我有一个java类,它可以通过spark(使用1.6)来管理作业并执行它们。 我正在使用API​​ - sparkLauncher。 startApplication(SparkAppHandle.Listener ...监听器)以监视作业的状态。 问题是我搬到了一个真正的集群环境中工作,并且这种方式无法工作,当主人和工作人员不在同一台机器上,因为内部实现仅使用本地主机(环回)来打开一个端口为工作人员绑定。 API sparkLauncher.launch()可用,但不会让我监视状态。 使用java代码的集群环境的最佳实践是什么? 我也看到隐藏Rest API的选项,它足够成熟吗?我是否应该以火花的方式启用它(即使端口从外部打开,我的访问被拒绝)?通过群集模式下的java提交并监控spark作业

回答

0

REST API

除了在UI观看的指标,它们也可作为JSON。这为开发人员提供了一种为Spark创建新的可视化和监视工具的简单方法。 JSON可用于正在运行的应用程序和历史记录服务器中。端点安装在/ api/v1。例如,对于历史记录服务器,它们通常可以通过http://:18080/api/v1进行访问,对于正在运行的应用程序,则可以通过http://localhost:4040/api/v1进行访问。

更多细节你可以找到here.

+0

感谢您的回复。我试图使用隐藏的rest API,但是当从不同的机器执行时,Spark主机,我得到403,端口在机器中打开,你知道与它有关的火花安全配置吗? – user601929

+0

请检查您是否可以访问该端口。 你可以尝试这样的: telnet server.hostname port –

+0

我不能从外面,但在安全组的端口是开放的,它应该从火花配置以某种方式启用? – user601929

0

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

  • 调度阶段和任务
  • RDD大小和内存使用情况
  • 环境信息的汇总列表。
  • 有关运行执行人

信息您可以通过简单地在Web浏览器中打开http://driver-node:4040访问此接口。如果多个SparkContexts在同一主机上运行,​​它们将绑定到以4040(4041,4042等)开头的连续端口。

更多细节,你可以找到here.

相关问题