Spark集群管理工具

一个通过LLM驱动的Spark集群管理工具,支持自然语言提交作业和集群健康检查,适用于欺诈检测和风险模拟等场景。

  • by Jcardenas34
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Jcardenas34/cluster_management_MCP

使用说明

集群管理MCP

一个MCP(模型上下文协议)服务器,它公开了一个自建和托管的Spark集群,作为一组可由LLM调用的工具。通过Ollama运行的Qwen2.5:1.5b的本地实例解释自然语言提示,并提交Spark作业提交的工具调用,并通过Wifi网络进行集群健康检查。

该项目是作为更广泛的基础设施建设的一部分而开发的 欺诈检测,以及 风险模拟工作.

动机

云基础设施抽象了硬件约束、网络拓扑和资源分配。该工具旨在在本地编排一个真实的端到端机器学习工作负载,揭示构建一个功能集群所需的深思熟虑的选择,例如哪个节点作为Spark主节点运行,哪个节点可以作为Kafka节点,以及如何在保持执行环境稳定的同时提交作业。该工具演示了如何使用LLM来监控这些指标,并通过自然语言执行作业。

火花组规格

硬件

角色 硬件 操作系统
头节点/Spark主站 联想PC Ubuntu 24.04
Spark workers(×3) Raspberry Pi 3B+ Ubuntu
Kafka代理 树莓派3 Ubuntu
边缘推理主机 NVIDIA Jetson Nano Ubuntu

该集群是自组装和自我管理的。节点配置为 通过以下方式处理 spark-env.sh 在头节点上。

架构规范

User (natural language prompt)
        │
        ▼
Qwen2.5:1.5b via Ollama  ◄──►  MCP Server (tool definitions)
                                      │
                      ┌───────────────┼───────────────┐
                      ▼               ▼               ▼
               Spark REST API   Prometheus API   SSH / shell
               (job submission) (health metrics) (start/stop)

目前,本地实例Qwen2.5:1.5b用于托管Ollama,同时运行MCP服务器,该服务器通过本地Wifi网络向Spark头节点提交作业。还配置了远程作业提交的端口转发。MCP服务器目前支持对集群进行健康检查,如每个节点的CPU负载、内存使用情况以及通过对本地运行的Prometheus服务器的API调用检索的节点数量。

支持集群启动和拆除,在头节点上的spark-env.sh文件中指定了可用节点的正确配置。

示例:LLM驱动的作业提交

例如:“请在1000次试验中模拟一场有5名攻击者和3名防御者的风险战。”

Qwen2.5将此请求解释为提交 “风险滚动模拟” 将作业与适当的输入参数一起发送到集群,并存储在主节点上进行分析。这项工作模拟了游戏“风险”中不同数量的攻击者和防御者的战斗场景的获胜概率。

未来工作

作业结果当前未返回给LLM。而是写在磁盘上,供以后分析和绘图。在作业执行完毕后,创建实时解释结果的功能是这项工作的下一步。

堆栈

  • 编排: Apache Spark(独立集群模式)
  • 消息: Apache Kafka
  • LLM运行时: 奥利玛(问题2.5:1.5b)
  • 工具协议: MCP(模型上下文协议)
  • 监控: 普罗米修斯,格拉法纳
  • 边缘推断: NVIDIA Jetson Nano上的FastAPI
  • 网络: 本地Wi-Fi,用于远程访问的端口转发