一、背景
随着大数据技术的广泛应用,有各种的上层应用和计算引擎,而对于上层应用来说,连接每种引擎的方式都不一样,这样极不方便,急需一个中间件来解耦,Linis便出世了。Linkis主要是提供统一的数据中间件,对接上层应用工具,屏蔽掉底层的各种调用和使用细节,使用户使用的时候不会再因底层的变化而做处理,用户只对接Linkis即可。接下来看个图,就更加理解了
二、简介
Linkis,一个打通了多个计算存储引擎如Spark、TiSpark、Hive、Python和HBase等,对外提供统一REST/WebSocket/JDBC接口,提交执行SQL、Pyspark、HiveQL、Scala等脚本的数据中间件。
Github 地址:https://github.com/WeBankFinTech/Linkis Gitee 地址:https://gitee.com/WeBank/Linkis/
三、主要功能
Linkis基于微服务架构,提供了金融级多租户隔离、资源管控、权限隔离等企业级特性,支持统一变量、UDF、函数、用户资源文件管理,具备高并发、高性能、高可用的大数据作业/请求全生命周期管理能力。
(1)丰富的底层计算存储引擎支持
目前支持的计算存储引擎:Spark、Hive、Python、Presto、ElasticSearch、MLSQL、TiSpark、JDBC和Shell等。 支持的脚本语言:SparkSQL, HiveQL, Python, Shell, Pyspark, R, Scala 和JDBC 等。
(2)强大的计算治理能力
基于Orchestrator、Label Manager和定制的Spring Cloud Gateway等服务,Linkis能够提供基于多级标签的跨集群/跨IDC 细粒度路由、负载均衡、多租户、流量控制、资源控制和编排策略(如双活、主备等)支持能力。
(3)全栈计算存储引擎架构支持
能够接收、执行和管理针对各种计算存储引擎的任务和请求,包括离线批量任务、交互式查询任务、实时流式任务和存储型任务;
(4)资源管理能力
ResourceManager 不仅具备 Linkis0.X 对 Yarn 和 Linkis EngineManager 的资源管理能力,还将提供基于标签的多级资源分配和回收能力,让 ResourceManager 具备跨集群、跨计算资源类型的强大资源管理能力。
(5)统一上下文服务
为每个计算任务生成context id,跨用户、系统、计算引擎的关联管理用户和系统资源文件(JAR、ZIP、Properties等),结果集,参数变量,函数等,一处设置,处处自动引用;
(6)统一物料
系统和用户级物料管理,可分享和流转,跨用户、系统共享物料
支持的引擎细节如下
引擎 | 引擎版本 | Linkis 0.X 版本要求 | Linkis 1.X 版本要求 | 说明 |
---|
Flink | 1.12.2 | >=dev-0.12.0, PR #703 尚未合并 | >=1.0.2 | Flink EngineConn。支持FlinkSQL 代码,也支持以Flink Jar 形式启动一个新的Yarn 应用程序。 | Impala | >=3.2.0, CDH >=6.3.0" | >=dev-0.12.0, PR #703 尚未合并 | ongoing | Impala EngineConn. 支持Impala SQL 代码. | Presto | >= 0.180 | >=0.11.0 | ongoing | Presto EngineConn. 支持Presto SQL 代码. | ElasticSearch | >=6.0 | >=0.11.0 | ongoing | ElasticSearch EngineConn. 支持SQL 和DSL 代码. | Shell Bash | >=2.0 | >=0.9.3 | >=1.0.0_rc1 | Shell EngineConn. 支持Bash shell 代码. | MLSQL | >=1.1.0 | >=0.9.1 | ongoing | MLSQL EngineConn. 支持MLSQL 代码. | JDBC MySQL | >=5.0, Hive>=1.2.1 | >=0.9.0 | >=1.0.0_rc1 | JDBC EngineConn. 已支持MySQL 和HiveQL,可快速扩展支持其他有JDBC Driver 包的引擎, 如Oracle. | Spark Apache | 2.0.0~2.4.7, CDH >=5.4.0 | >=0.5.0 | >=1.0.0_rc1 | Spark EngineConn. 支持SQL, Scala, Pyspark 和R 代码. | Hive Apache | >=1.0.0, CDH >=5.4.0 | >=0.5.0 | >=1.0.0_rc1 | Hive EngineConn. 支持HiveQL 代码. | Hadoop Apache | >=2.6.0, CDH >=5.4.0 | >=0.5.0 | ongoing | Hadoop EngineConn. 支持Hadoop MR/YARN application. | Python | >=2.6 | >=0.5.0 | >=1.0.0_rc1 | Python EngineConn. 支持python 代码. | TiSpark | 1.1 | >=0.5.0 | ongoing | TiSpark EngineConn. 支持用SparkSQL 查询TiDB. |
四、架构
Linkis基于微服务架构,其服务分别是:
(1)计算治理服务
支持计算任务/请求处理流程的3个主要阶段:提交->准备->执行
(2)公共增强服务
包括上下文服务、物料管理服务及数据源服务等
(3)微服务治理服务
包括定制化的Spring Cloud Gateway、Eureka、Open Feign
其架构图:
|