Apache Linkis

2025-01-31

java

微微怪时间不能保存情绪,保存那一切情绪所曾流连的境界。——《你是人间的四月天》

Apache Linkis 是一款由 Apache 基金会孵化的开源项目,它致力于在上层应用和底层数据计算引擎之间构建一层计算中间件。通过 Linkis,开发者可以轻松连接 Spark、Hive、Flink、Presto 等底层引擎,实现资源的统一管理、计算任务治理、脚本与数据的跨平台互通。它在数据计算平台中的应用广泛,被许多企业用作大数据处理的统一入口。


Linkis 的目标与优势

Linkis 的核心目标是解决复杂的计算资源管理问题。传统的大数据系统中,不同引擎之间通常存在高度耦合、复杂的调用关系,而 Linkis 通过提供 REST、WebSocket、JDBC 等标准接口将这些引擎解耦。这样一来,开发者只需面向 Linkis 进行统一操作,而无需直接对接各类底层计算引擎,大幅降低了系统的复杂性和运维成本。

Linkis 的优势包括:

  • 多引擎支持:支持 Spark、Hive、Flink、Trino、Python 等多种计算引擎,适用于离线批处理、实时流处理、交互式查询等多种场景。
  • 统一管理与编排:提供统一的任务路由、资源调度、流量控制、错误码管理等功能,实现对计算请求的精细化管控。
  • 扩展性强:支持自定义 EngineConn(引擎连接器)来快速集成新的计算存储组件。
  • 跨用户、跨系统资源管理:统一管理用户变量、函数、结果集、物料等资源,支持跨平台共享和引用。

Linkis 的核心特性

  1. 丰富的底层引擎支持
    Linkis 支持多种计算存储引擎,包括 Spark、Hive、Presto、Trino、ElasticSearch、Flink 等,涵盖大多数主流的数据处理场景。

  2. 多语言兼容
    支持 SparkSQL、HiveSQL、Python、Shell、Scala、FlinkSQL 等多种编程语言,满足不同团队的技术需求。

  3. 计算治理能力
    Linkis 提供基于多级标签的任务路由、负载均衡、多租户管理、流量控制等功能,确保高效的任务执行与资源调度。

  4. 统一上下文和数据源管理
    用户和系统的变量、UDF、数据源等在不同应用和引擎间自动同步,减少了手动配置和数据管理的复杂度。

  5. 错误码与问题定位
    通过错误码系统,Linkis 提供常见错误的自动诊断和解决方案,方便用户快速排查问题。


Linkis 的架构

Linkis 基于微服务架构,分为计算治理服务、公共增强服务和微服务治理服务三大部分。

  • 计算治理服务:负责管理计算任务的提交、准备和执行。
  • 公共增强服务:提供上下文管理、数据源服务、物料管理等功能。
  • 微服务治理服务:基于 Spring Cloud 生态,支持服务发现、网关路由、远程调用等功能。

架构图如下所示:

Linkis 架构图


快速安装与部署

Linkis 提供多种部署方式,包括源码构建、Docker 镜像等。以下为常规的部署步骤:

1. 从源码编译

1
2
3
# Mac/Linux 系统
./mvnw -N install
./mvnw clean install -Dmaven.javadoc.skip=true -Dmaven.test.skip=true

2. 使用 Docker 部署

可以通过官方脚本构建带有 MySQL JDBC 驱动的自定义 Docker 镜像:

1
2
$> LINKIS_IMAGE=linkis:1.3.1 
$> ./linkis-dist/docker/scripts/make-linkis-image-with-mysql-jdbc.sh

更多详细步骤请参考快速安装部署文档


引擎支持

Linkis 支持多种底层计算引擎及数据库,以下为部分支持的引擎类型:

引擎名 默认版本 是否包含在发布包中 说明
Spark Apache Spark 3.2.1 支持 SQL、Scala、Pyspark
Hive Apache Hive 3.1.3 支持 HiveQL
Flink Apache Flink 1.12.2 支持 FlinkSQL
Presto Presto 0.234 支持 Presto SQL
Trino Trino 371 支持 Trino SQL
ElasticSearch ElasticSearch 7.6.2 支持 SQL、DSL

使用案例

Linkis 自 2019 年开源以来,已经在金融、电信、制造、互联网等多个行业落地应用。目前已有 700+ 企业和 1000+ 用户将其用于大数据平台的计算资源管理与调度。

典型应用场景包括:

  • 统一计算入口:不同团队和应用可以通过 Linkis 统一访问各种底层引擎,减少重复开发。
  • 任务编排与治理:通过 Linkis 实现对多租户任务的精细化管理和流量控制。
  • 跨平台资源共享:用户和系统的资源变量、函数、UDF 在不同环境间自动同步,提升开发效率。

贡献与社区

Linkis 欢迎开发者贡献代码、文档和测试反馈。
你可以通过 GitHub 提交 Issue 或 Pull Request,或者加入社区微信群与其他用户交流。

详细的贡献指南请参见:贡献指引


总结

Apache Linkis 是一款强大的计算中间件,适用于大数据平台的统一计算管理和资源调度。它通过简化底层引擎的调用方式,大幅降低了系统复杂性,帮助企业提升数据处理效率。如果你正在寻找一款高性能、易扩展的大数据平台组件,Linkis 是一个值得一试的选择。

更多信息请访问 Linkis 官网GitHub 项目