Spark实时进度查询

Spark实时进度查询

大家好,我是一拳就能打爆帕特农神庙柱子的猛男

相信大家都有需求要查询Spark程序执行的进度,所以今天给大家带来Spark实时进度查询的方式整理。我在Spark官网找到了关于Spark监控的相关介绍,Spark指标监控有几种方法:web UI,REST API

1、 web UI

当SparkContext执行的时候,在浏览器中访问服务器IP:4040就可以进入UI界面:

在这里插入图片描述

其中可以访问到的内容有:

  • 一系列的task和scheduler stage
  • RDD的size和memory usage的总结
  • 环境信息
  • 在运行的excutor的信息

在默认情况下,这种方式只允许在Spark运行期间访问,若要事后查看需要在执行程序之前将 spark.eventLog.enabled 设置为true。在官网关于这部分的内容还介绍了许多参数对应的作用。

2、Rest API

除了通过Web的方式去访问指标,还可以通过Rest Api的方式去访问,返回的Json格式字符串更适合自定义可视化监控。要访问历史数据的话需要访问 http://< server-url >:18080/api/v1 ,若访问正在运行的程序则访问 http://localhost:4040/api/v1。

在Rest Api模式下访问,应用程序被它的ID(app-id)引用。在Yarn中部署集群时应用被标记为attempt-id。

例如,运行一个kmeans聚类的案例后,spark会自动生成app-id,通过sc.applicationId可以获取app-id,从而构造URL访问需要的资源:

println(sc.applicationId)

也可以通过访问 http://localhost:4040/api/v1/applications 获取id:

[ {
  "id" : "local-1614322919314",
  "name" : "Kmeans2PMML",
  "attempts" : [ {
    "startTime" : "2021-02-26T07:01:56.076GMT",
    "endTime" : "1969-12-31T23:59:59.999GMT",
    "lastUpdated" : "2021-02-26T07:01:56.076GMT",
    "duration" : 0,
    "sparkUser" : "dell",
    "completed" : false,
    "appSparkVersion" : "3.0.1",
    "lastUpdatedEpoch" : 1614322916076,
    "startTimeEpoch" : 1614322916076,
    "endTimeEpoch" : -1
  } ]
} ]

访问 http://localhost:4040/api/v1/applications/local-1614322919314/jobs ,返回包含指定信息的字符串:

[ {
  "jobId" : 7,
  "name" : "collectAsMap at KMeans.scala:297",
  "submissionTime" : "2021-02-26T07:02:02.939GMT",
  "completionTime" : "2021-02-26T07:02:03.021GMT",
  "stageIds" : [ 9, 8 ],
  "status" : "SUCCEEDED",
  "numTasks" : 4,
  "numActiveTasks" : 0,
  "numCompletedTasks" : 4,
  "numSkippedTasks" : 0,
  "numFailedTasks" : 0,
  "numKilledTasks" : 0,
  "numCompletedIndices" : 4,
  "numActiveStages" : 0,
  "numCompletedStages" : 2,
  "numSkippedStages" : 0,
  "numFailedStages" : 0,
  "killedTasksSummary" : { }
}, ..... ]

根据官网关于Rest Api的参数表可以了解不同参数可以得到的信息,下面是访问stages得到的信息:
在这里插入图片描述

Rest Api的参数表中有全部的查询方式,总结下来可以得到的信息与Web UI差不多,包括: applications、 jobs、stages、executors、storage、logs 、streaming 、 environment 、 version 这几方面的信息。

Executor Task Metrics还有关于Task参数的介绍,这些参数可以用于故障排除和查看工作负载。在Executor Metrics中还有Executor粒度的一些参数。

通过这些参数应该是可以查询实时进度的,如果以stage为进度分割的话只需要查看每个stage是否完成即可,就像Web UI中显示的一样:

在这里插入图片描述

总结

其实Spark实时进度查询的支持还是很友好的,对于做测试的同学可以使用Web UI界面来查看各项指标,相信这个方式大家都了解过。对于希望做炫酷可视化的同学或者公司有DIY可视化需求的同学可以调用现成的URL来访问。

时进度查询的支持还是很友好的,对于做测试的同学可以使用Web UI界面来查看各项指标,相信这个方式大家都了解过。对于希望做炫酷可视化的同学或者公司有DIY可视化需求的同学可以调用现成的URL来访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值