每天认识一个新组件:计算中间件Apache Linkis

一、Linkis 出现的背景

大数据平台早期通常以单个引擎或单类任务为中心建设:离线 SQL 依赖 Hive,交互分析依赖 Spark SQL 或 Presto,实时计算依赖 Flink,脚本任务依赖 Python 或 Shell。随着平台能力扩展,应用层需要分别适配不同引擎的认证、提交协议、参数格式、日志获取、状态查询、资源控制和结果集管理,调用链路会变得复杂。

这种方式在小规模平台中可行,但在多租户、高并发、多引擎共存的场景下会出现几个典型问题:接口重复开发、任务治理分散、资源隔离困难、上下文难以复用、排障路径不统一。Linkis 的设计目标就是在应用层和引擎层之间建立统一计算中间件,解耦上层应用与底层引擎,降低复杂网络调用关系带来的开发和维护成本 。

二、架构总览

Linkis 将微服务分为三类:计算治理服务、公共增强服务和微服务治理服务。这三个层次对应了任务从提交到执行、从公共能力复用到服务注册网关的完整链路。

计算治理服务是 Linkis 的核心,计算治理服务覆盖任务处理的三个主要阶段:提交、准备、执行;公共增强服务包括物料库、上下文服务和数据源服务;微服务治理服务包括 Spring Cloud Gateway、Eureka 和 OpenFeign。

三、核心组件

Linkis 的组件命名初看有些复杂,但可以从任务链路倒推它们的职责。用户的任务先进入 Gateway,再到 Entrance,随后由 Orchestrator 编排,向 LinkisMaster 申请 EngineConn,最终由 EngineConnManager 拉起或管理 EngineConn,EngineConn 再对接 Spark、Hive、Flink 等底层引擎。

组件 作用 理解方式
Gateway HTTP、WebSocket 请求入口与路由 平台统一入口
Entrance 任务入口、任务调度、状态控制、日志与结果推送 任务接待员
Orchestrator 任务编排与计算策略 任务计划器
LinkisMaster AppManager、ResourceManager、LabelManager 等管理能力 资源与引擎调度中心
EngineConnManager 管理 EngineConn 生命周期 引擎进程管家
EngineConn 连接具体底层引擎并执行任务 真正干活的执行连接
PublicService 历史任务、公共能力、配置等 公共服务层
Context Service 管理上下文、变量、资源等 跨系统上下文容器
DataSource Service 数据源与元数据管理 数据源目录

其中 EngineConn 是理解 Linkis 的关键,EngineConn 负责接收任务,并提交给 Spark、Hive、Flink、Presto、Trino 等底层引擎执行;EngineConnManager 则负责 EngineConn 的启动和停止等生命周期控制 。

四、任务执行链路

Linkis 的任务执行可以拆成四个阶段:提交、准备、执行、结果返回。任务执行过程分为 submission、preparation、execution、result return 四个阶段,并描述了 Entrance、Orchestrator、LinkisMaster、EngineConnManager、EngineConn 等组件在各阶段中的职责。

yaml 复制代码
阶段 1:提交
用户 / 应用
   |
   | REST / WS / JDBC
   v
Gateway
   |
   v
Entrance
   |
   | 持久化任务、参数解析、变量替换、拦截器处理
   v
Scheduler


阶段 2:准备
Scheduler
   |
   v
Orchestrator
   |
   | 根据 Label 选择引擎类型、版本、租户、资源策略
   v
LinkisMaster
   |
   | 判断是否复用 EngineConn,或创建新的 EngineConn
   v
EngineConnManager


阶段 3:执行
EngineConnManager
   |
   v
EngineConn
   |
   | 调用 Spark / Hive / Flink / Presto / Trino 等底层引擎
   v
Underlying Engine


阶段 4:返回
Underlying Engine
   |
   v
EngineConn
   |
   | 推送状态、日志、进度、资源使用、结果集
   v
Entrance
   |
   v
调用方

这个链路的价值在于:应用层不再需要直接管理每一种计算引擎的执行细节。它只需要按照 Linkis 的协议提交任务,并通过统一接口查询状态、获取日志和结果。

五、功能特性与适用场景

Linkis 的功能不只是"提交任务"。它更像是一个面向多引擎的大数据计算治理层,核心能力可以概括为五类。

能力 说明 价值
多引擎接入 支持 Spark、Hive、Python、Shell、Flink、JDBC、Presto、Trino、SeaTunnel 等 减少上层应用重复适配
多语言支持 支持 SparkSQL、HiveSQL、Python、Shell、PySpark、Scala、JSON、Java 等 覆盖开发、查询、脚本和计算场景
计算治理 提供基于多级标签的任务路由、负载均衡、多租户、流控、资源控制 支撑多团队共享平台
上下文统一 跨用户、系统和计算引擎管理变量、UDF、资源文件、结果集等 提高跨工具协作与复用能力
数据源管理 管理 Hive、Elasticsearch、MySQL、Kafka、MongoDB 等数据源信息、版本、连接测试和元数据 让平台具备统一数据源目录

Linkis 的优势可以从"平台工程"的角度理解,它并不是替代 Spark、Hive、Flink,而是让这些引擎在一个统一的平台治理体系中被使用。

第一,Linkis 降低上层应用接入成本。Linkis 通过 REST、WebSocket、JDBC 等标准接口让上层应用访问 MySQL、Spark、Hive、Presto、Flink 等底层引擎 。这意味着数据开发 IDE、调度系统、Notebook 或自研平台可以围绕 Linkis 接口集成,而不是逐个适配引擎。

第二,Linkis 强化多租户资源治理。高并发、多租户隔离、上下文统一、高可用、日志进度实时推送、多类型任务提交等这些问题都是 Linkis 任务执行架构演进的动因 。

第三,Linkis 让计算资源可以复用。LinkisMaster 在收到申请 EngineConn 的请求后,会判断是否存在可复用的 EngineConn;如果有则直接返回,如果没有再创建新的 EngineConn 。这对交互式 SQL、Notebook、数据开发 IDE 等场景尤其重要,因为频繁拉起引擎会增加延迟和资源消耗。

第四,Linkis 提供统一排障入口。Linkis 提供错误码能力,便于用户定位常见任务错误 。FAQ 中也整理了 publicservice 未启动、Eureka 首次启动自动停止、资源不足、依赖包冲突、MySQL ONLY_FULL_GROUP_BY 等问题及处理建议 。

Linkis 适合放在"多应用、多引擎、多租户"的大数据平台中,而不是作为单一计算引擎使用。它的强项是连接、治理、复用和平台化。

场景 是否适合 原因
数据开发平台统一提交 Spark、Hive、Shell、Python 任务 适合 Linkis 提供统一任务提交和多引擎接入
Notebook 或交互式分析平台复用 SparkSession 类能力 适合 EngineConn 可被复用,适合交互式计算
企业内部多租户共享大数据集群 适合 支持标签、资源控制、并发控制和多租户治理
自研调度系统统一接入多类引擎 适合 可通过 REST/JDBC 等接口提交和管理任务
只需要运行单机 Python 脚本 不一定适合 Linkis 的微服务和治理能力可能过重
只使用单一 Hive 查询且没有平台化需求 不一定适合 直接使用 HiveServer2 或现有查询服务可能更简单
替代 Spark、Flink 作为计算引擎 不适合 Linkis 是计算中间件,不是底层计算引擎

六、部署使用

标准单机部署的基本流程如下:

yaml 复制代码
准备环境
  |
  | JDK / MySQL / Python / Nginx / Hadoop / Spark / Hive
  v
创建部署用户
  |
  | 通常示例使用 hadoop 用户,并配置免密 sudo
  v
下载并解压 Linkis 安装包
  |
  v
修改 deploy-config/db.sh
  |
  | 配置 Linkis 业务库、Hive Meta 等信息
  v
修改 deploy-config/linkis-env.sh
  |
  | 配置部署用户、工作目录、HDFS 路径、YARN 地址、组件环境变量
  v
执行 sh bin/install.sh
  |
  | 首次安装需要初始化数据库
  v
补充 MySQL Driver
  |
  | Apache 发布包默认不包含 mysql-connector-java
  v
启动服务
  |
  | sh linkis-start-all.sh
  v
提交测试任务并查看日志、结果、状态

在单机(All-in-One)模式下,默认会启动 6 个核心微服务,每个微服务默认 JVM-Xmx为 512M。

顺序 微服务名称 核心功能
1 mg-eureka 微服务注册中心,所有服务启动后都会向它注册。
2 mg-gateway API 网关,所有外部请求的统一入口,负责路由和认证。
3 ps-publicservice 公共服务,提供文件系统等基础公共服务。
4 cg-linkismanager 计算治理管理服务,负责应用、资源和标签的管理。
5 cg-entrance 计算治理入口服务,接收并调度用户提交的任务。
6 cg-engineconnmanager 引擎管理服务,负责启动和管理各类计算引擎。

还有一个linkis-cg-engineconn服务(引擎连接器),它是在具体任务提交时才启动的,因此不会在服务启动时出现。

初学 Linkis 时,可以先不要陷入所有微服务细节,而是记住三个问题。

rust 复制代码
问题 1:任务从哪里进来?
答案:Gateway -> Entrance

问题 2:任务由谁决定怎么跑?
答案:Entrance Scheduler -> Orchestrator -> LinkisMaster

问题 3:任务最终在哪里执行?
答案:EngineConn -> Spark / Hive / Flink / Trino / Shell 等

再把任务对象理解为"四件套":

sql 复制代码
+---------------------+
| executionContent    | 代码和运行类型,例如 SQL、Shell、Python
+---------------------+
| params              | 变量、运行参数、启动参数
+---------------------+
| source              | 来源信息,例如脚本路径
+---------------------+
| labels              | 引擎类型、用户、创建者、路由等标签
+---------------------+

Linkis 的很多治理能力都围绕labels展开,Gateway 可根据routeLabel转发请求,Entrance 会按标签分组调度任务,LinkisMaster 也会通过任务 Label 做资源管理和引擎版本选择。

七、选型建议

如果你的团队正在建设统一数据开发平台、Notebook 平台、自研调度平台或多引擎查询平台,Linkis 值得重点评估。它的优势不在单点性能,而在平台化接入和治理能力:统一接口、多引擎适配、任务状态与日志管理、资源控制、上下文复用、数据源管理。

但如果你的场景只需要"跑一个 Spark 作业"或"提交一条 Hive SQL",Linkis 可能不是最轻的选择。它引入了 Gateway、Entrance、LinkisMaster、EngineConnManager、PublicService、Eureka 等多个服务,部署和维护成本高于直接访问单个引擎。因此,Linkis 更适合已有大数据平台基础、需要治理多引擎任务的团队。

相关推荐
Am-Chestnuts1 小时前
AI 对话里的表格怎么导出成 Excel 还能筛选排序?用DS随心转把数据整理成可分析表格
大数据·人工智能·excel
数据狐(Datafox)1 小时前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
雪兽软件1 小时前
大数据导论:类型、属性和示例
大数据
智塑未来2 小时前
2026企业级HR软件选型观察:不同架构阵营格局与复杂用工场景解析
大数据
2601_967338713 小时前
完结 马士兵大数据架构师
大数据
智购科技自动售货机工厂3 小时前
2026自动售货机语音支付模块集成:从声纹识别到支付闭环的工程实践~YH
大数据·服务器·网络·数据库·人工智能
阿童木写作4 小时前
跨马翻译:AI批量图片翻译工具,视频字幕翻译与智能抠图一站式解决
大数据·人工智能·python·音视频
小小谈电商4 小时前
2026 年 8 月|国内企业级商城源码服务商全方位测评报告
大数据·运维·小程序
腾视科技-AIoT4 小时前
腾视科技重磅推出TensorAI智能体平台,开启智能助手新体验
大数据·人工智能·科技·ai·ai大模型·ainas·腾视科技