如何以JSON格式获取Spark History Server日志数据?
解决Spark History Server API返回HTML而非JSON的问题
你请求的地址端口配置错误:默认Spark Master UI的端口是8080,Spark History Server的默认端口是18080,你当前请求的8080端口实际是Spark Master的UI页面,所以返回HTML内容。
正确操作步骤
- 第一步:确认Spark History Server的运行端口,默认是18080,可在配置项
spark.history.ui.port中查看自定义值 - 第二步:请求API时建议显式指定JSON响应头,避免服务端默认返回HTML
- 第三步:使用对应路径的API获取所需指标,以下是可直接运行的示例命令:
常用API示例
- 获取所有应用列表
curl -H "Accept: application/json" http://localhost:18080/api/v1/applications
- 获取指定应用下的运行/完成作业列表(将
<app-id>替换为实际应用ID)
curl -H "Accept: application/json" http://localhost:18080/api/v1/applications/<app-id>/jobs
- 获取指定应用的Executor列表
curl -H "Accept: application/json" http://localhost:18080/api/v1/applications/<app-id>/executors
异常排查
如果修改端口后仍然返回HTML,检查以下配置:
- 确认Spark History Server已正常启动,可直接访问
http://<history-server-ip>:<port>查看页面是否正常加载 - 确认配置项
spark.history.ui.enable未设置为false,该配置默认开启REST接口能力 - 如果你要获取的是当前正在运行的Spark应用的实时指标,也可以直接访问该应用的UI端口(默认4040,多应用同时运行时依次递增为4041、4042等),API路径规则和History Server完全一致。
内容的提问来源于stack exchange,提问作者Prajeeth Emanuel
相关产品推荐
相关产品推荐

