【数据中台】开源项目(3)-DataSphere Studio:一站式数据应用开发框架解析
1. 一站式数据应用开发框架,到底解决了什么痛点?
如果你在数据团队待过,或者自己尝试过搭建数据平台,肯定对下面这个场景不陌生:数据分析师想做个报表,得先在某个工具里写SQL跑数据,然后把结果导出,再打开另一个可视化工具去画图,最后还得找个调度系统把整个流程定时跑起来。这中间涉及的工具可能多达五六个,账号不互通、界面不统一、数据流转靠手动,一个简单的需求,沟通成本和操作成本高得吓人。更别提当你想引入数据质量监控、机器学习模型开发这些更复杂的环节时,那种“工具孤岛”带来的混乱和低效,简直让人头大。
DataSphere Studio(后面我们就叫它DSS)的出现,就是为了彻底终结这种局面。你可以把它想象成一个数据领域的“集成开发环境”(IDE),就像程序员写代码用的VS Code或者IntelliJ IDEA一样,它把数据开发全流程需要用到的各种工具,都集成到了一个统一的、图形化的界面里。微众银行开源这个项目,核心目标就是简化和标准化数据应用开发。
它解决的痛点非常明确:第一,降低使用门槛。通过拖拽式的工作流编排,业务人员也能直观地理解和参与数据流程的构建。第二,打破系统壁垒。让数据在不同工具间像在流水线上一样自动流转,告别重复登录、手动导出导入。第三,统一管理和调度。无论是实时任务还是离线任务,都能在一个平台下进行资源管控、权限控制和任务监控。我见过不少团队用一堆开源工具“攒”出来的平台,运维复杂,体验割裂。DSS提供的是一种“开箱即用”的一体化方案,它自己定义了一套框架和标准,让各种工具能像乐高积木一样插拔进来,协同工作。
2. 核心架构解析:插拔式设计与AppConn理念
DSS能做到“一站式”,靠的不是把代码都堆在一起,而是两个非常聪明的设计:插拔式集成框架和AppConn(应用连接器)。这是它最核心、也最值得深究的技术亮点。
2.1 像搭积木一样的插拔式框架
很多所谓的集成平台,集成方式是“硬编码”的,把A工具和B工具的代码深度耦合在一起。一旦A工具升级了接口,或者你想把B工具换成C工具,就得大动干戈,甚至重新开发。DSS完全避开了这个坑。
它的框架设计是高度模块化和松耦合的。你可以把DSS看作一个主板,而各个数据应用(比如SQL开发工具、调度系统、BI工具)就是一块块功能不同的“扩展卡”。主板提供了标准的插槽(接口规范)和电源数据总线(统一的服务)。任何符合接口规范的“扩展卡”都能轻松插上去,立即工作;想换掉某块卡,或者增加一块新卡,也完全不影响其他部分。
在实际项目中,这个特性太有用了。比如,你们公司原来用Azkaban做调度,后来社区DolphinScheduler更活跃,想切换过去。如果是在传统架构里,这几乎是个推倒重来的项目。但在DSS里,你只需要为DolphinScheduler开发一个对应的“插件”(也就是实现AppConn),替换掉原来的调度系统插件,业务侧的工作流几乎可以无缝迁移,用户甚至感知不到底层调度器换了。这种灵活性,保证了技术栈可以随着社区发展而平滑演进,不会被某个具体工具绑定死。
2.2 AppConn:连接一切的“万能胶”
那么,DSS定义的这个“标准插槽”具体是什么呢?就是AppConn。AppConn是DSS能够快速集成各种上层Web系统的核心概念,你可以把它理解为连接DSS框架和具体应用工具的“协议适配器”或“驱动程序”。
AppConn定义了一套三级接入规范,任何外部系统只要按照这个规范实现对接,就能成为DSS工作流中的一个合法节点:
- 一级规范(SSO规范):解决统一登录问题。用户登录DSS后,在访问集成的子应用(如Visualis看板)时无需再次登录。这背后通常基于Token或Cookie的传递来实现,实现了单点登录体验。
- 二级规范(组织结构规范):解决统一权限和组织模型问题。DSS中有项目、工作空间的概念,这个规范要求子应用能同步和理解这些组织结构。比如在DSS中创建一个“销售数据分析”项目,那么对应的,在调度工具、BI工具里也会自动创建同名的项目空间,实现权限的映射和隔离。
- 三级规范(开发流程规范):这是最核心的一层,解决了工作流编排问题。它定义了子应用如何向DSS“暴露”自己的能力。比如,一个SQL开发工具要告诉DSS:“我能提供一个‘SQL脚本’节点,这个节点需要用户配置数据源和SQL语句,我能接收上游节点的数据表作为输入,我的输出是一张数据表。”DSS的工作流编辑器拿到这些信息,就能把这个工具作为一个可拖拽的节点呈现出来。
我打个比方:DSS的工作流画布就像一个乐高底板,AppConn就是每个乐高积木块底部的凸点。只有凸点的规格统一了(三级规范),积木才能牢牢地拼在一起。而Linkis计算中间件,就像是底板下的齿轮和传动轴,为所有积木提供统一的动力(计算能力)和连接。正是因为AppConn对接了Linkis,所有接入的应用才自动获得了资源管控、多租户隔离这些金融级能力,数据上下文也能跨系统共享,真正做到了“连接即所得”。
3. 金融级能力基石:与Linkis的深度协同
提到DSS,就不能不提Linkis。很多人会疑惑,这俩到底是什么关系?简单说,Linkis是计算中间件,负责和底层引擎(Spark、Flink、Hive等)打交道;DSS是应用开发框架,负责组织和编排上层应用(各种数据工具)。 它们是一对黄金搭档,DSS的强大体验和金融级能力,很大程度上建立在Linkis的基础之上。
Linkis在中间层起到了“解耦”和“增强”的作用。在没有Linkis的时候,每个数据应用(比如BI工具、调度系统)都需要自己直接去连接Spark、提交任务,自己管理连接池、队列和资源。这会导致资源竞争混乱、用户隔离困难、引擎负载不均。Linkis统一接管了所有对底层计算引擎的访问,提供了REST/WebSocket等标准化接口。
对于DSS来说,这意味着:
- 高并发与高可用:所有通过DSS发起的计算任务,都经由Linkis进行路由和调度。Linkis本身可以集群化部署,具备负载均衡和故障转移能力,从而支撑DSS面向大量用户的高并发访问。某个Linkis实例挂了,任务会自动转移到其他实例,保障服务不间断。
- 多租户资源隔离:这是金融场景的硬性要求。通过Linkis,可以为DSS中的不同用户、不同项目组设置独立的资源队列(CPU、内存)。A团队跑一个巨复杂的Spark作业,不会把B团队的简单Hive查询给“饿死”。资源隔离在Linkis层实现,对DSS上所有接入的应用都是透明的、一致的。
- 统一的上下文服务:这是提升开发效率的关键。你在DSS工作流的第一个“SQL节点”里创建了一张临时表
tmp_table,在后续的“Python节点”和“可视化节点”中,可以直接引用tmp_table,而不需要手动传递文件或重复建表。这个上下文共享的能力就是由Linkis提供的,它让多个工具在同一个工作流里真正成为了一个整体,而不是彼此独立的黑盒。
在实际部署时,我建议一定要把DSS和Linkis作为一个整体来规划和考量。Linkis的配置,特别是资源队列、引擎连接管理这些,直接决定了DSS平台最终的稳定性和性能表现。可以说,Linkis赋予了DSS“内力”,而DSS则将这股内力转化为用户能直观感受到的、流畅的“招式”。
4. 实战体验:从零到一编排一个数据工作流
光讲概念可能有点虚,我们直接上手,看看在DSS里完成一个真实的数据分析需求是多么直观。假设我们现在有个需求:每天凌晨清理原始日志表,计算用户活跃度指标,并生成一个邮件报表和一张可视化看板。
4.1 创建工作流与拖拽节点
登录DSS后,我们进入一个工作空间(Workspace),创建一个新的工作流。这个画布界面非常清爽,左侧是组件库,里面罗列了所有已集成应用提供的节点类型,比如“Scriptis SQL节点”、“Qualitis质量检查节点”、“SendEmail发送邮件节点”、“Visualis可视化节点”等等。
我们的流程可以这样拖拽搭建:
- 首先拖入一个 “Scriptis SQL节点”,命名为“数据清洗”。双击配置,直接在节点内写Hive SQL,完成日志表的过滤和去重。
- 然后拖入一个 “Qualitis质量检查节点”,命名为“校验数据”。将它连接到SQL节点之后。在配置里,我们可以设置规则,比如“清洗后的表记录数不能少于100万条”,如果校验失败,工作流会自动告警并停止,防止脏数据向下游蔓延。
- 接着拖入第二个 “Scriptis SQL节点”,命名为“计算指标”。这里我们连接上一步产出的干净数据,计算每日活跃用户数(DAU)、平均使用时长等核心指标。
- 指标计算好后,我们并行做两件事:拖入一个 “SendEmail邮件节点”,将关键指标数值以表格形式发送给业务负责人;同时拖入一个 “Visualis可视化节点”,配置一个折线图,展示DAU的趋势变化,并发布成一张看板。
- 最后,拖入一个 “Schedulis调度节点”(或者DolphinScheduler节点),将整个工作流包裹起来,设置每天凌晨2点自动触发。
整个过程完全可视化,通过拖拽和连线就定义了数据的流向和任务的依赖关系。哪个环节出了问题,可以直接定位到具体的节点查看日志和输出。
4.2 核心功能节点详解
在搭建过程中,你会发现每个节点背后都是一个功能完整的专业工具。DSS并没有重新造轮子,而是做了最好的“集成者”。
- Scriptis节点:这不是一个简单的SQL输入框,而是一个完整的Web版IDE。它支持语法高亮、智能补全、结果集预览、甚至Spark和Python脚本的编写与执行。你写一段PySpark做机器学习特征工程,体验和本地Notebook很像。
- Qualitis节点:数据质量不再是事后抽查。你可以将质量规则(如字段非空、数值范围、表行数波动率)作为一个硬性检查点嵌入工作流。我见过太多因为数据质量问题导致的报表错误,有了这个节点,就能把问题阻断在开发阶段,实现“质量左移”。
- Visualis节点:配置好的图表,可以直接在工作流中预览。更棒的是,当这个工作流每天定时跑,产出的新数据会自动更新到关联的看板上。业务方每天早上打开看板,看到的就是最新一天的数据,实现了数据开发到数据消费的闭环。
这种工作流模式,把原本需要跨多个系统、多次手动操作的过程,变成了一个可复用、可调度、可监控的自动化管道。对于数据开发人员,效率提升是立竿见影的。
5. 丰富的生态集成:不止于基础开发
DSS的野心不止于传统的ETL和报表开发。通过其强大的插拔式框架,它正在构建一个覆盖数据应用全生命周期的生态。目前社区已经集成了众多优秀的开源项目,让DSS的能力边界不断扩展。
我们来看看几个重要的扩展组件:
- Streamis:这是流式计算的应用管理工具。在DSS工作流中,你可以直接拖拽一个“Flink SQL节点”或“Flink Jar节点”,配置流式任务(比如实时风控规则计算),然后通过Streamis进行发布、启动、停止和监控。这意味着DSS统一了批处理和流处理的开发体验。
- Prophecis:一站式机器学习平台。数据科学家可以在DSS工作流里,接入一个“模型训练”节点。这个节点背后可能调用Prophecis集成的MLflow、Scikit-learn等框架,完成从特征工程、模型训练、评估到模型发布的整个MLOps流程。数据预处理和模型训练可以在一个流水线里完成,避免了数据导出导入的麻烦。
- Exchangis:数据交换平台。专门处理异构数据源之间的数据同步和传输。比如需要将Hive中的数据定期同步到MySQL供业务系统查询,或者从Kafka抽取数据到HDFS。你可以将它作为一个节点加入工作流,统一进行调度和依赖管理。
- DataApiService:这是一个非常实用的工具。它允许你将工作流中某个SQL节点产出的数据,或者一个查询逻辑,快速封装成一个RESTful API。前端应用或业务系统直接调用这个API就能获取实时数据,省去了单独开发数据接口的工作。
这些组件的集成,清晰地展示了DSS的定位:它不想只做一个调度系统或者SQL编辑器,而是要成为数据应用的操作系统。所有与数据相关的活动,无论是开发、治理、分析、服务还是AI,都可以在这个操作系统上找到对应的“应用”,并且这些应用之间可以顺畅通信、协同工作。
6. 企业级部署考量与踩坑指南
看了这么多强大的功能,你可能已经摩拳擦掌想自己部署一套试试了。别急,从社区版到稳定支撑企业生产环境,中间还有一些需要注意的地方。这里我结合自己的经验,分享几个关键点和踩过的坑。
首先是部署模式。DSS支持多种部署方式,对于初学者,用Docker Compose一键部署是最快的,能让你在几分钟内看到整体界面。但对于生产环境,我强烈推荐分模块部署。将DSS的网关、前端、工作流服务,以及后端的Linkis、各AppConn应用(如Schedulis、Visualis)分开部署,这样可以更好地进行资源分配、独立扩缩容和故障隔离。Linkis作为计算中间件,压力最大,通常需要单独一个集群。
其次是用户体系与权限。DSS自带的Workspace(工作空间)是一个很好的多租户隔离概念。但在接入企业现有的LDAP/AD域账号体系时,需要仔细配置。重点要关注二级组织结构规范的对接,确保DSS中的项目、角色能准确同步到各个子应用(比如BI工具里的空间、调度系统里的项目)。这一步配置不好,就会出现单点登录成功了,但进去没权限的问题。
资源管控是生命线。这是利用好Linkis的关键。在部署Linkis时,一定要根据集群的物理资源,合理规划队列。比如,可以划分出bi_queue(给即席查询,低优先级)、etl_queue(给定时ETL任务,中优先级)、urgent_queue(给重要报表,高优先级)。并在DSS中,将不同的用户组或工作空间绑定到不同的队列。我曾经遇到过所有任务都跑在默认队列,导致一个开发人员的误操作(全表扫描)拖垮了整个平台查询,有了队列隔离后,这种问题就被限制在了局部。
最后是监控与运维。DSS和Linkis都提供了丰富的API和日志接口。一定要将它们的运行指标(如API请求量、任务队列长度、执行成功率)接入到公司的统一监控平台(如Prometheus+Grafana)。对于工作流任务,不仅要关注是否成功,还要关注耗时趋势。可以设置告警规则,比如“Qualitis质量检查失败”或“关键任务执行时间超过1小时”。运维的复杂度,会随着接入的应用增多而上升,清晰的监控是保障稳定性的前提。
7. 未来展望与社区生态
DataSphere Studio作为WeDataSphere开源生态的核心框架,其生命力在于社区的活跃度和生态的丰富性。目前看来,它的发展路径非常清晰。
一方面,深度整合。社区正在推动与更多优秀开源项目的集成,比如更深度地拥抱Apache DolphinScheduler作为工作流调度引擎,完善与DataModelCenter(数据模型中心)的整合,实现从数据建模、开发到资产管理的全链路覆盖。目标是让数据工作者在一个平台上,完成所有事情。
另一方面,体验优化和云原生。随着容器化和Kubernetes的普及,DSS也在向更轻量、更弹性的云原生架构演进。例如,利用K8s来动态管理Linkis引擎实例,实现极致的资源弹性。同时,在UI交互、工作流调试、协同开发等细节体验上,社区也在持续迭代。
对于想要采用DSS的企业或团队,我的建议是:从小处着手,渐进式引入。不要一开始就想着替换所有现有系统。可以先用它来整合1-2个核心场景,比如把分散的SQL开发和BI报表制作通过工作流串联起来。让团队先感受到“一站式”带来的效率提升,再逐步将数据质量、数据服务、机器学习等场景纳入。同时,积极参与社区,贡献遇到的问题和解决方案,你会发现,很多你遇到的坑,社区里的同行们可能已经填平了。开源项目的魅力就在于此,你用它的同时,也在和它一起成长。
更多推荐


所有评论(0)