Apache Linkis是如何成为数据应用开发基座的

06/30 10:07
阅读数 198


01

引 言


大家在以前可能主要了解的是Apache Linkis在上层应用和底层引擎之间构建了一层计算中间件,通过计算中间件将上层应用和底层引擎层解耦,简化复杂的网络调用关系,降低整体复杂度。但是Linkis作为中间件,除了解决连通的计算治理问题,还提供了哪些公众中间层的能力呢以及怎么做到功能共享和资源共享的呢?

本文将从数据应用开发基座能力的方向去详细说明Linkis是如何提供公共的基础能力,如何去基于Linkis快速高效构建数据应用工具的,以及去说明集成了 Linkis 的上层应用工具如何做到互联互通,打破应用孤岛的。


02

为什么需要数据应用开发基座


当今数据处理和利用的技术(Data-Tech)的发展突飞猛进,从原来的中心化的数据仓库,ETL技术,衍生到了一个繁杂的数据技术体系,细分成多种数据处理领域,比如:数据分析、数据治理、数据集成、数据可视化、机器学习等。每个领域又会有相应的上层应用工具,这些工具都需要和底层的数据计算和存储引擎进行对接,并且每个领域的工具很多时候都依赖了一些公共能力,比如数据源、上下文、UDF等。这些公共的功能,包括和底层引擎的连接能力,正是可以通过中间层去解决的能力。


如下图所示,当我们开发数据分析工具和数据质量工具时,会发现很多功能是重合的。在没有统一基座的情况下,数据分析工具需要支持不同数据源的查询和分析,并具有数据源管理能力。同样,数据质量工具也需要完成不同数据源的质量校验和管理。在许多情况下,用户需要对数据分析工具的结果进行数据质量校验。如果这两个工具之间无法连通,可能需要先将数据分析结果存储到表中,然后再进行数据质量校验。当然,还有许多其他的重合的功能,如UDF、变量、参数管理等。这些功能不仅增加了多个工具的开发成本,而且为用户提供的能力可能并不相同,且无法互联互通,造成割裂。

为了节省这些成本加快上层应用工具的能力构建,对于有个中间层去提供数据应用开发工具的基座能力显得很有必要,对于平台来说可以提供统一的公共能力,可以做统一的安全与权限,方便管理与维护,提升功能的可复用性,从而加快数据应用的构建过程。同时,对于上层应用来说可以节省开发成本并且减少工具间的割裂感。


数据应用开发基座通过将之前分散在各个工具的能力进行集中沉淀,并形成可复用、标准化的统一能力,同时提供个性化的扩展能力。这将使得基于此基座的上层应用能够更好地满足各种应用场景的需求。


当然我也去咨询了ChatGPT,现在有哪些数据应用开发基座工具,针对他的回复,下面我们将介绍为什么“林凯思”可以作为数据应用开发基座工具。


03

Apache Linkis提供了哪些

数据应用开发基座的能力


为什么在我们将Linkis作为统一网关或JobServer后,还要为其增加数据应用开发基座的能力呢?这个是在我们实际去开发了多个上层应用工具后,发现如在IDE工具里面定义了一个UDF、变量调试通过后,在发布到调度工具的时候,这些UDF和变量又需要重现定义一遍。当依赖的一些jar包、配置文件等发生变化时,也需要修改两个地方。


针对这些类似跨上层应用工具的公共上下文的问题,在我们实现任务统一入口为Linkis后,我们就在想是不是可以由Linkis去提供这个数据应用开发工具的基座能力,提供一些公共可以被多个应用工具去复用的能力。所以在Linkis层设计了一层公共增强服务PES,现在已经提供了以下能力:


提供统一的数据源能力:数据源在Linkis层进行统一定义和管理,应用工具只需要通过数据源名字来进行使用,不再需要去维护对应数据源的连接信息。而且在不同的工具间数据源的含义都是一样的。并提供了相应的数据源的元数据的查询能力。


提供公共的UDF能力:统一UDF、小函数的定义规范和语义,做到一处定义多个工具都可使用。


提供统一上下文的能力:支持任务间传递信息,包括变量、结果集、资源文件的多任务间传递,提供任务间传递上下文的能力。


提供统一物料的能力:提供统一的物料,在多个工具间支持共享访问这些物料,并且物料支持存储多种的文件类型,并支持版本控制。


提供统一配置和变量的能力:提供了统一的配置能力支持模板化的配置不同的引擎参数模版,支持自定义变量、内置常用的系统变量和时间格式变量等。


提供公共错误码的能力:提供统一的错误码能力,对常用计算存储引擎的作物进行分类编码以及知识库的能力,并提供了方便的SDK进行调用。

通过Linkis的公共增强服务,可以打破上层应用工具间的孤岛,做到变量、函数、文件、结果集等上下文的共享,就像下图所展示的一样,并且大大减少应用工具间的重复开发工作。



04

Linkis数据应用开发基座能力

简易使用介绍


那么,Linkis提供的这些公共能力是否易于使用呢?接下来,让我们一起了解如何运用这些功能。


4.1 数据源的使用

首先管理员需要在Linkis管理台或者通过接口完成数据源的创建。

接着上层应用工具就可以通过数据源的名字直接进行使用了,包括可以获取数据源的连接信息、DDL、和元数据信息查看等。比如Qualitis想对某个数据源的某个表做质量校验,只需要通过数据源的名字就可以完成数据的查询和连接。如下面通过SDK的使用方式一样

详细可以参考:https://linkis.apache.org/zh-CN/docs/latest/user-guide/datasource-manual


4.2 UDF的使用

首先UDF创建者通过在Linkis管理台或者通过接口定义UDF,发布共享后就可以给到用户进行使用,多个工具都可以直接进行使用,不需要重新定义和担心UDF语义不同问题,并且支持版本控制方便调试和版本的回退。现在已经支持了Hive、Spark、Python等UDF,并支持Jar、Java、Scala、Python等方式定义UDF。

使用起来就更加简单,只需要在提交的任务中直接使用UDF就行,会自动加载和进行使用,不需要用户操心UDF物料等问题。

#通过Python定义UDF函数def helloUDF(col):    print "hello:" + str(col)#在sql中可以直接进行使用select helloUDF(name) from student

详细可以参考:https://linkis.apache.org/zh-CN/docs/latest/user-guide/control-panel/udf-function


4.3 上下文的使用

上下文ContextService(CS)用于解决一个数据应用开发流程,跨多个系统间的数据和信息共享问题。例如,B系统需要使用A系统产生的一份数据,通常的做法如下:

  A系统调用B系统开发的数据访问接口;

  B系统读取A系统写入某个共享存储的数据。


有了CS之后,A和B系统只需要与CS交互,将需要共享的数据和信息写入到CS,需要读取的数据和信息从CS中读出即可,无需外部系统两两开发适配,极大降低了系统间信息共享的调用复杂度和耦合度,使各系统的边界更加清晰。现在CS已经支持了传递结果集、变量、资源文件、对象等。

详细可以参考:https://linkis.apache.org/zh-CN/docs/latest/architecture/feature/public-enhancement-services/context-service/overview


4.4 物料库的使用

BML(物料库服务)是linkis的物料管理系统,主要用来存储用户的各种文件数据,包括用户脚本、资源文件、第三方Jar包等,支持版本控制和权限控制。提供了简单易用的SDK,方便上层应用进行使用。

详细可以参考:

https://linkis.apache.org/zh-CN/docs/latest/architecture/feature/public-enhancement-services/bml/overview


4.5 配置和变量的使用

配置就是提交给Linkis任务指定的配置模版功能,当任务中没有带运行时参数和启动参数时,就会用默认模版的参数。参数通过在Linkis管理台进行配置,就可以在各个应用中进行使用。

而变量是Linkis提供的支持在任务中定义和使用变量,进行变量的自动替换,目前支持了多种方式的变量,包括用户自定义,系统内部变量、date pattern变量等。

详细可以参考:https://linkis.apache.org/zh-CN/docs/latest/user-guide/dynamic-variables


4.6 错误码的使用

错误码的功能,通过解析各个不同引擎的任务错误异常信息,优化为用户可以理解的错误码,并关联知识库。用户只需要点击错误码就可以跳转知识库。支持通过Client进行调用,传入一段日志返回对应的错误码和知识库。

详细可以参考:

https://linkis.apache.org/zh-CN/docs/latest/tuning-and-troubleshooting/error-guide/error-code


05

使用Linkis作为数据应用开发基座的

应用案例


前面讨论了Linkis作为数据应用开发基座的优点与易用性,现在我们来看实际案例。下图展示的是数据开发集成工具IDE(Scriptis)和数据治理工具(Qualitis)接入Linkis的示意图。Scriptis基于Linkis进行开发,因此基本上只包含前端代码,只需关注前端交互便可实现出色的用户体验。类似地,Qualitis只需关注数据质量校验规则,无需操心任务的高并发和多租户控制,可以复用Linkis提供的数据源、UDF、配置参数、变量等基座能力。


同时因为这两款工具都基于Linkis的基础之上进行开发的,所以这些公共的基座能力是互联互通的,在Scriptis上面定义的一个UDF,可以直接在Qualitis进行使用,IDE分析的一个结果可以在Qualitis上面直接进行校验,不需要将结果落入对应的库表中。这不仅大大节省了两个工具的开发成本,而且还可以打破工具间的应用孤岛,提高用户体验。

下图中展示的是已经和Linkis 做了对接的一些开源项目,这些上层应用工具项目,都是通过Linkis来提交和管理各种类型引擎的任务,把Linkis 当成了一个开发基座,极大的降低了上层应用工具在连通、扩展、管控等计算治理方面的开发工作量,让上层应用工具只需专注于其自身的功能性需求。



06

总结与未来规划


本文我们介绍了什么是数据应用开发基座,以及大数据平台为什么需要数据应用开发基座,以及Linkis作为数据应用开发基座提供的能力和能力简单使用。


未来,Linkis作为数据应用开发基座的能力将不断扩展,以提供更多的公共基础功能,并持续完善现有公共能力。我们期待Linkis推动更多上层应用工具的集成,共同构建一个完整的数据应用开发应用市场。


— END —

如何成为社区贡献者

 官方文档贡献。发现文档的不足、优化文档,持续更新文档等方式参与社区贡献。通过文档贡献,让开发者熟悉如何提交PR和真正参与到社区的建设。参考攻略:保姆级教程:如何成为Apache Linkis文档贡献者


 代码贡献。我们梳理了社区中简单并且容易入门的的任务,非常适合新人做代码贡献。请查阅新手任务列表:https://github.com/apache/incubator-linkis/issues/1161


 内容贡献:发布WeDataSphere开源组件相关的内容,包括但不限于安装部署教程、使用经验、案例实践等,形式不限,请投稿给小助手。例如:


 社区答疑:积极在社区中进行答疑、分享技术、帮助开发者解决问题等;


 其他:积极参与社区活动、成为社区志愿者、帮助社区宣传、为社区发展提供有效建议等;

本文分享自微信公众号 - WeDataSphere(gh_273e85fce73b)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部