能否通过Spark REST API获取各Worker节点的Spark版本?
没问题,这个需求完全可以实现!
针对Spark v2.2.1版本,我们可以利用Worker节点自身的REST API来查询每个节点的Spark版本,具体操作步骤和注意事项如下:
核心思路
Spark的Worker节点默认提供了REST接口用于暴露自身的运行状态信息,其中就包含了Spark版本数据,我们只需要拿到Worker的地址和端口,再调用对应的API端点即可。
具体操作步骤
- 确认Worker节点的地址与端口:你已经能获取到Worker列表,通常这个列表里会包含每个Worker的主机名/IP,以及它的UI端口(默认是8081,如果集群修改过
spark.worker.ui.port配置,要使用自定义的端口)。 - 调用Worker的REST API获取版本:对每个Worker节点,访问它的基础信息JSON端点:
这个请求会返回一个JSON格式的响应,其中的curl http://<worker-host>:<worker-port>/jsonsparkVersion字段就是该Worker节点运行的Spark版本号。
示例响应片段
返回的JSON数据里会包含类似这样的内容:
{ "id": "worker-20240520100000-192.168.1.10-8081", "sparkVersion": "2.2.1", "totalCores": 8, "usedCores": 4, // 其他节点状态字段... }
注意事项
- 网络与权限:确保发起请求的客户端能访问到所有Worker节点的对应端口,集群的防火墙、安全组规则需要允许该端口的入站请求。
- 配置一致性:虽然标准Spark集群通常会保证所有节点版本统一,但如果是异构部署的集群(不推荐),这个方法能准确验证每个Worker的实际运行版本。
- 端口自定义:如果集群修改过Worker的UI端口配置,一定要使用配置后的端口,否则会请求失败。
内容的提问来源于stack exchange,提问作者liltitus27
相关产品推荐
相关产品推荐

