在Spark 1.4中引入了REST API,这样我们可以像Hadoop中REST API一样,很方便地获取一些信息。这个ISSUE在https://issues.apache.org/jira/browse/SPARK-3644
里面首先被提出,已经在Spark 1.4加入。
Spark的REST API返回的信息是JSON格式的,开发者们可以很方便地通过这个API来创建可视化的Spark监控工具。目前这个API支持正在运行的应用程序,也支持历史服务器。在请求URL都有/api/v1
。比如,对于历史服务器来说,我们可以通过http://
来获取一些信息;对于正在运行的Spark应用程序,我们可以通过:4040/api/v1
来获取一些信息。
下面是目前Spark支持的所有REST API:
/applications:这个将显示所有的应用程序; /applications/[app-id]/jobs:获取给定应用程序的所有Jobs; /applications/[app-id]/jobs/[job-id]:获取给定Job的信息 /applications/[app-id]/stages:获取给定应用程序的所有stages; /applications/[app-id]/stages/[stage-id]:获取给定stages的所有attempts ; /applications/[app-id]/stages/[stage-id]/[stage-attempt-id]:获取给定stages attempts 的信息 /applications/[app-id]/stages/[stage-id]/[stage-attempt-id]/taskSummary:获取给定stage attempt中所有tasks的metrics信息 /applications/[app-id]/stages/[stage-id]/[stage-attempt-id]/taskList:获取给定stage attempt的所有tasks; /applications/[app-id]/executors:获取给定应用程序的所有executors; /applications/[app-id]/storage/rdd:获取给定应用程序的所有缓存的RDDs ; /applications/[app-id]/storage/rdd/[rdd-id]:获取给定RDD的存储状态详情。
当应用程序运行在YARN模式,每个应用程序将有多个attempts,所以我们需要将上面所有[app-id]
改成[app-id]/[attempt-id]
。上面所有的URL都是有版本的,这样将使得开发者们很容易在上面开发应用程序。此外,Spark还提供以下保证:
1、任何一个版本的Endpoints都不会被移除;
2、单个字段将永远不会从任何的Endpoints中移除;
3、新的Endpoints可能被加入;
4、新的字段可能会被加入到某个Endpoints中;
5、新的版本可能会在未来加入到单独的Endpoint中(比如api/v2
),而且新版本不要求向后兼容;
6、API的版本可能会被删除,但至少存在一个新的API版本。
需要注意的是,即使是想检查正在运行的应用程序UI是,我们也需要加入applications/[app-id]
部分,即使是存在一个应用程序。比如如果你想获取所有正在运行的应用程序的作业列表,你可以通过http://:4040/api/v1/applications/[app-id]/jobs
获取,这样做是为了在两种模式中保存一致的路径。
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【Spark 1.4中REST API介绍】(https://www.iteblog.com/archives/1386.html)