spark 任务监控

Spark 提供了restful api的方式用于spark任务的监控api截图如下:api访问方式:

http://history-ip:18088/api/v1/

 

官方文档:http://spark.apache.org/docs/latest/monitoring.html

Spark 分为不同的stage执行所以spark没有提供方式直接查看任务执行成功和失败,可以通过/applications 获取application_id 和attempt_id 然后根据 /applications/app_id/attempt_id/jobs获取每个stage的执行情况,进而获取整个任务的状态,同样也可以监控任务的执行时长等情况。下面主要说明/applications api和/application/[app_id]/jobs api其中[app_id] 为1)若有attempt_id 则为application_id/attempt_id,2)不存在attempt_id 为application_id.

  1. /applications

传递参数见上图,需要注意对于日期为GMT为0的日期,而不是所在地的日期,根据时间访问时,需要将时区设置为0时区,python中可以通过datetime.datetime.utcnow()获取

返回值:

[ {

  "id" : "application_1597231412870_3608",

  "name" : "DwMicbiTrafficLogStatOrigMain: 20200813",

  "attempts" : [ {

    "attemptId" : "1",

    "startTime" : "2020-08-13T03:29:37.826GMT",

    "endTime" : "2020-08-13T03:32:04.860GMT",

    "lastUpdated" : "2020-08-13T03:32:04.948GMT",

    "duration" : 147034,

    "sparkUser" : "root",

    "completed" : true,

    "appSparkVersion" : "2.4.0-cdh6.2.0",

    "endTimeEpoch" : 1597289524860,

    "lastUpdatedEpoch" : 1597289524948,

    "startTimeEpoch" : 1597289377826

  } ]

}]

里面封装了任务的大致的信息,其中主要的是applicationIdattemptId,注意attemptId可能有多个。这两个参数拼接起来可以构建为[app-id]

2. /applications/[app-id]/jobs

数据参数见上图,

返回:

[ {

  "jobId" : 1,

  "name" : "runJob at SparkHadoopWriter.scala:78",

  "submissionTime" : "2020-08-10T22:19:58.391GMT",

  "completionTime" : "2020-08-10T22:24:00.128GMT",

  "stageIds" : [ 1, 2 ],

  "status" : "SUCCEEDED",

  "numTasks" : 10,

  "numActiveTasks" : 0,

  "numCompletedTasks" : 10,

  "numSkippedTasks" : 0,

  "numFailedTasks" : 4,

  "numKilledTasks" : 0,

  "numCompletedIndices" : 10,

  "numActiveStages" : 0,

  "numCompletedStages" : 2,

  "numSkippedStages" : 0,

  "numFailedStages" : 0,

  "killedTasksSummary" : { }

}, {

  "jobId" : 0,

  "name" : "runJob at SparkHadoopWriter.scala:78",

  "submissionTime" : "2020-08-10T22:19:37.736GMT",

  "completionTime" : "2020-08-10T22:19:58.281GMT",

  "stageIds" : [ 0 ],

  "status" : "SUCCEEDED",

  "numTasks" : 5,

  "numActiveTasks" : 0,

  "numCompletedTasks" : 5,

  "numSkippedTasks" : 0,

  "numFailedTasks" : 0,

  "numKilledTasks" : 0,

  "numCompletedIndices" : 5,

  "numActiveStages" : 0,

  "numCompletedStages" : 1,

  "numSkippedStages" : 0,

  "numFailedStages" : 0,

  "killedTasksSummary" : { }

} ]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ClusterManager:在Standalone模式中即为Master(主节点),控制整个集群,监控Worker。在YARN模式中为资源管理器。 Worker:从节点,负责控制计算节点,启动Executor。在YARN模式中为NodeManager,负责计算节点的控制。 Driver:运行Application的main()函数并创建SparkContext。 Executor:执行器,在worker node上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executors。 SparkContext:整个应用的上下文,控制应用的生命周期。 RDD:Spark的基本计算单元,一组RDD可形成执行的有向无环图RDD Graph。 DAG Scheduler:实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,然后生成相应的Task set放到TaskScheduler中。 TaskScheduler:将任务(Task)分发给Executor执行。 Stage:一个Spark作业一般包含一到多个Stage。 Task:一个Stage包含一到多个Task,通过多个Task实现并行运行的功能。 Transformations:转换(Transformations) (如:map, filter, groupBy, join等),Transformations操作是Lazy的,也就是说从一个RDD转换生成另一个RDD的操作不是马上执行,Spark在遇到Transformations操作时只会记录需要这样的操作,并不会去执行,需要等到有Actions操作的时候才会真正启动计算过程进行计算。 Actions:操作(Actions) (如:count, collect, save等),Actions操作会返回结果或把RDD数据写到存储系统中。Actions是触发Spark启动计算的动因。 SparkEnv:线程级别的上下文,存储运行时的重要组件的引用。 SparkEnv内创建并包含如下一些重要组件的引用。 MapOutPutTracker:负责Shuffle元信息的存储。 BroadcastManager:负责广播变量的控制与元信息的存储。 BlockManager:负责存储管理、创建和查找块。 MetricsSystem:监控运行时性能指标信息。 SparkConf:负责存储配置信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值