客户环境没办法查看Spark UI页面,怎么办?让我们来使用Spark REST API查看作业信息吧!

文章目录

      • 场景
      • 环境
      • IP关系
      • 使用步骤
        • 1. 获取链接IP及端口
          • 1. 获取spark主机域名或ip(适用于查找历史应用)
          • 2. 根据日志查找该应用运行的链接(适用于查找运行中应用)
        • 2. 查看方法
      • 总结
      • 求赞、求转发、求粉
      • URL 参数清单

场景

  1. 通过跳转机才能访问到spark集群的Linux机器,自己的机器访问不到集群;
  2. 想定制属于自己公司的spark监控界面

环境

软件 版本
CDH 5.13
Spark 1.6以上

IP关系

IP类型 作用
配置的yarn.resourcemanager.webapp.address,即运行过程中,
日志输出提示tracking URL,如:
http://namenode01:8088/proxy/applicationID/
监控运行过程中的应用
配置的spark.yarn.historyServer.address 监控应用情况

使用步骤

1. 获取链接IP及端口

1. 获取spark主机域名或ip(适用于查找历史应用)

一般在实际场景中,客户只是提供集群的单台机器作为spark任务的节点。所以当前主机的IP不是spark集群History ServerIP。所以需要找到spark集群的History ServerIP。那么如何获取History ServerIP呢,一般都会在配置文件的spark-defaults.conf里面的spark.yarn.historyServer.address。一般CDH都会在/etc/spark/conf/目录下面。但是如果没有在这个目录下面,可以用以下命令:

find / -name spark-defaults.conf

然后找到文件,在里面查找spark.yarn.historyServer.address,可以使用以下命令:

cat spark-defaults.conf |grep spark.yarn.historyServer.address

像我这里的地址如下:

spark.yarn.historyServer.address=http://namenode01:18088
2. 根据日志查找该应用运行的链接(适用于查找运行中应用)

一般在运行过程中,会提示监控链接。比如:http://namenode01:4040,这个端口一般不固定,如果4040被占用了,就会顺延到下一位。不过这个是运行过程中的链接,如果应用结束了,就没办法根据这个链接访问了。所以,一般都会启动sparkhistoryServer服务,专门来查看历史应用的日志。不过,在运行过程中,也不一定只需要类似4040端口才能看,也可以根据上一步得到的historyServer的地址,将端口改为8080,然后替换以下链接的{$applicationID},使用curl命令也可以查看:

curl http://namenode01:8088/proxy/{$applicationID}/api/v1/applications/{$applicationID}/jobs

如下图:
客户环境没办法查看Spark UI页面,怎么办?让我们来使用Spark REST API查看作业信息吧!_第1张图片
从上图,我们可以了解到该应用的job的信息,包括id执行时间状态、运行过程中的stageIDtask数量task完成数量等。其实根据这个,可以很直观地查看到该job的很多信息了。

2. 查看方法

根据上面的获取到的链接,我们就可以查看具体的应用信息、应用阶段信息或者相关的指标统计信息。接下来会罗列比较常用的方法,具体的方法可以到文末的URL 参数清单,根据自己的需求进行更改。以下主要是使用historyServer的链接进行说明,不过即使是正在运行的应用,也可以直接根据这个进行查询,不局限于历史已结束的应用。

  1. 查看应用列表

    curl http://namenode01:18088/api/v1/applications
    

    截图如下:
    客户环境没办法查看Spark UI页面,怎么办?让我们来使用Spark REST API查看作业信息吧!_第2张图片

  2. 获取具体的应用信息

    curl http://namenode01:18088/api/v1/applications/application_1577616740024_1115934
    

    截图如下: 客户环境没办法查看Spark UI页面,怎么办?让我们来使用Spark REST API查看作业信息吧!_第3张图片

  3. 展示指定应用的所有jobs

    curl http://namenode01:18088/api/v1/applications/application_1577616740024_1115934/jobs
    

    截图如下: 在这里插入图片描述

  4. 展示指定应用的指定job的相关细节

    curl http://namenode01:18088/api/v1/applications/application_1577616740024_1115934/jobs/0
    

    截图如下: 客户环境没办法查看Spark UI页面,怎么办?让我们来使用Spark REST API查看作业信息吧!_第4张图片

  5. 指定应用的所有stage

    curl http://namenode01:18088/api/v1/applications/application_1577616740024_1115934/stages
    

    截图如下: 客户环境没办法查看Spark UI页面,怎么办?让我们来使用Spark REST API查看作业信息吧!_第5张图片

  6. 指定应用的特定stage的相关信息

    curl http://namenode01:18088/api/v1/applications/application_1577616740024_1115934/stages/30
    

    截图如下: 客户环境没办法查看Spark UI页面,怎么办?让我们来使用Spark REST API查看作业信息吧!_第6张图片

  7. 输出指定应用的某个阶段的task统计指标

    curl http://namenode01:18088/api/v1/applications/application_1577616740024_1115934/stages/30/0/taskSummary
    

    截图如下: 客户环境没办法查看Spark UI页面,怎么办?让我们来使用Spark REST API查看作业信息吧!_第7张图片

  8. 下载指定应用的相关日志

    curl http://namenode01:18088/api/v1/applications/application_1577616740024_1115934/logs > application_1577616740024_1115934_log.zip
    

    截图如下: 在这里插入图片描述

  9. 展示指定应用的executors信息

    curl http://namenode01:18088/api/v1/applications/application_1577616740024_1115934/executors 
    

    截图如下: 客户环境没办法查看Spark UI页面,怎么办?让我们来使用Spark REST API查看作业信息吧!_第8张图片

总结

根据调用链接,即使我们看不了spark WEB UI界面,也可以获取到应用的相关信息。我们也可以根据这些信息,在运行过程中根据运行过程信息,动态更新我们代码,比如进行重新划分分区等。不过,这个属于spark的高阶调优过程,本文暂时不涉及。

求赞、求转发、求粉

大家看到这里,如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;如果有好的讨论,也可以留言;如果想继续查看我以后的文章,可以左上角点击关注。谢谢大家的观看!

URL 参数清单

Endpoint Meaning
/applications 罗列所有的应用
/applications/[app-id]/jobs 展示指定应用的所有jobs
/applications/[app-id]/jobs/[job-id] 展示指定应用的指定job的相关细节
/applications/[app-id]/stages 指定应用的所有stage
/applications/[app-id]/stages/[stage-id] 指定应用的特定stage的相关信息
/applications/[app-id]/stages/[stage-id]/[stage-attempt-id] 输出指定应用的某个阶段的指定attempt信息,在yarn下可能会存在多个attempt-id
/applications/[app-id]/stages/[stage-id]/[stage-attempt-id]/taskSummary 输出指定应用的某个阶段的task统计指标
/applications/[app-id]/stages/[stage-id]/[stage-attempt-id]/taskList 输出指定应用的某个阶段的task列表信息
/applications/[app-id]/executors 展示指定应用的executors信息
/applications/[app-id]/storage/rdd 罗列指定应用执行过程中的rdd的相关信息
/applications/[app-id]/storage/rdd/[rdd-id] 展示指定应用的指定RDD的相关信息
/applications/[app-id]/logs 下载指定应用的相关日志,调用该命令要将输出保存为zip格式文件
/applications/[app-id]/[attempt-id]/logs 下载指定应用的指定attempt的日志,调用该命令要将输出保存为zip格式文件

你可能感兴趣的:(spark,大数据,CDH)