# SparkNode2 **Repository Path**: wunuli/spark-node2 ## Basic Information - **Project Name**: SparkNode2 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-11 - **Last Updated**: 2026-03-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 项目文档 项目定位 这是一个基于 Spring Boot 的 Spark Node 服务,用于接收外部任务请求、在 Spark 集群中执行计算任务,并通过回调上报结果。服务还提供 HDFS 文件管理和 SQL 控制台类接口,支持在线提交 SQL、加载/导出数据、任务查询与控制。 技术栈 Java 8 Spring Boot 2.1.3 Apache Spark 3.1.2(YARN) Hadoop 3.1.3 Redis(Jedis) Hutool / Jackson / Gson Log4j2 运行入口 主类:D:\Vip\CodeX\project\spraknodeserver\src\main\java\com\zhixi\sparknode\SparkNodeApplication.java 核心流程 DpsTaskController 接收 REST 请求(提交/查询/取消任务)。 DpsTaskService 通过 TaskRegistry 查找被 @TaskFunction 标注的方法,并在单线程执行器中异步执行。 任务执行前,如果目标 Bean 继承 AnalysisBase,则注入 TaskInfo 并注册 UDF。 执行完成后更新任务状态,必要时通过回调地址上报结果。 HeartbeatService 定时上报节点状态与任务列表。 任务体系 任务方法通过 @TaskFunction 标注,参数通过 @TaskParam 描述。 任务实现主要集中在 DataTasks 与 MultiVersionUpdateTasks,包含: 临时表管理、SQL 执行、数据加载/导出、字段处理、增量更新、广播变量、Spark 参数调整等。 UDF 通过 @UDFObject 标注,AnalysisBase 使用包扫描注册任务 UDF(com.zhixi.spark.service.tasks.udf)。 Spark 会话与配置 MySparkSession 负责 SparkSession 管理、SparkConf 初始化、Hadoop 配置加载、FileSystem 获取。 内置默认 Spark 配置(driver/executor 内存、shuffle 分区等),可通过任务动态调整。 HDFS 文件管理接口 控制器:WebHdfsController 主要接口: POST /webhdfs/paths 目录/文件信息 POST /webhdfs/paths/last 最近路径 POST /webhdfs/paths/root 根路径 POST /webhdfs/rename 重命名 POST /webhdfs/createDir 创建目录 POST /webhdfs/upload 上传 POST /webhdfs/download 下载 SQL 控制台接口 控制器:WebSqlController 主要接口: GET /api/sql-console/listTables GET /api/sql-console/listTask POST /api/sql-console/exeSql POST /api/sql-console/loadData POST /api/sql-console/unLoadTable POST /api/sql-console/exportTable POST /api/sql-console/getRootPath POST /api/sql-console/closeSession 任务调度接口 控制器:DpsTaskController 主要接口: POST /api/task/dispatch POST /api/tasks/submit GET /api/tasks/{taskId} GET /api/tasks/list POST /api/tasks/{taskId}/cancel GET /api/functions 配置说明 D:\Vip\CodeX\project\spraknodeserver\src\main\resources\application.yml spring.profiles.active 选择环境 D:\Vip\CodeX\project\spraknodeserver\src\main\resources\application-prod.yml server.port spark-node.*(node-id、heartbeat-url、callback-url、yarn-archive 等) run-conf.root-path 任务输出根目录 core-site.xml / hdfs-site.xml / yarn-site.xml / mapred-site.xml 作为 Hadoop/Spark 运行环境配置。 包结构(简化后) com.zhixi.spark com.zhixi.spark.common.annotation(任务与 UDF 注解) com.zhixi.spark.common.config com.zhixi.spark.controller com.zhixi.spark.common.exception com.zhixi.spark.model(通用模型与任务模型) com.zhixi.spark.model.call com.zhixi.spark.model.dto com.zhixi.spark.model.entity com.zhixi.spark.model.vo com.zhixi.spark.service com.zhixi.spark.spark com.zhixi.spark.common.heartbeat com.zhixi.spark.spark.udf com.zhixi.spark.service.tasks com.zhixi.spark.service.tasks.entity com.zhixi.spark.service.tasks.model com.zhixi.spark.service.tasks.udf com.zhixi.spark.tool com.zhixi.spark.utils com.zhixi.spark.utils.entity com.zhixi.spark.utils.language 本次包结构简化说明 将 service.annotation 上移为 annotation(更通用、更符合 Java 习惯)。 合并 service.model 与 web.model* 到统一 model 层。 将工具类 WeipuPaperSubmitTest 移入 tool 包,避免业务包混杂工具类。 保留 task 与 spark 分层,职责清晰、便于维护。 关键文件参考 D:\Vip\CodeX\project\spraknodeserver\src\main\java\com\zhixi\sparknode\service\DpsTaskService.java D:\Vip\CodeX\project\spraknodeserver\src\main\java\com\zhixi\sparknode\controller\DpsTaskController.java D:\Vip\CodeX\project\spraknodeserver\src\main\java\com\zhixi\sparknode\controller\WebHdfsController.java D:\Vip\CodeX\project\spraknodeserver\src\main\java\com\zhixi\sparknode\controller\WebSqlController.java D:\Vip\CodeX\project\spraknodeserver\src\main\java\com\zhixi\sparknode\spark\MySparkSession.java D:\Vip\CodeX\project\spraknodeserver\src\main\java\com\zhixi\sparknode\task\DataTasks.java