1。IDS简介IntsigDataStudio(IDS)是上海合合信息技术有限公司大数据平台,基于微众WDS社区开源的Linkis&DSS组件构建的一站式敏捷数据应用开发与管理门户,针对主要用户群体包括数据开发、数据分析、数据产品经理和数据质量检查员。对外提供的核心能力包括一站式的数据开发和交互平台,支持数据从进来(数据集成),到处理(数据探索,作业调度),到出去(数据服务,BI报表),到运营和维护(任务运维、数据质量)等全链路可视化操作。下图是IDS在我们大数据平台中的定位。它的上层连接用户或各种应用系统,底层连接各种计算或存储引擎。IDS的定位2.IDS的诞生背景在引入Linkis和DSS之前,公司缺乏统一的开发入口,数据平台的用户需要登录不同的组件进行数据探索和业务上线。操作,如:访问数据库表的元数据需要使用自研索引系统或数据地图;做数据分析时,必须借助zeppelin或ipython等工具进行交互式数据查询;作业流调度发布时,也非常依赖平台组同事在Airflow底层编写复杂的任务依赖描述代码。在数据开发的整个环节中,涉及的系统无法有效连接,应用孤岛问题越来越严重,用户厌倦了在各个组件之间切换。这种情况一直影响着大数据平台的用户开发效率和用户体验。同时,多个开发入口的存在也增加了我们大数据平台的运维成本,其潜在的数据流出风险也被叠加放大。在这样的背景下,我们需要一个统一的一站式数据开发、分析和可视化平台。为此,我们先后调研或尝试了商业化的大数据中台产品,如网易数凡、阿里Dataworks等。一线厂商开发的产品,确实有一套行业领先的标准和规范,以及非常强大和全面的数据治理能力。但是考虑到我们现有的需求场景和成本投入等因素,我们最终没有接受商业化的数据中心解决方案。不得已,我们将目光投向了开源世界的产品,WDS顺理成章地闯入了我们的视野。虽然我们已经记不清认识WDS的具体时间,但是WDS社区及其生态组件展现出来的能力着实让我们心潮澎湃。WDS是一站式、金融级、全连接、开源、开放的大数据平台套件。目前支持的开源组件包括DataSphereStudio、Linkis、Qualitis等,WDS社区运营强大,成员活跃。19年以来发布的九大开源组件,填补了业界“开源系统大数据平台套件”的空白,得到了各行业的广泛好评和采用。基于打包好的轮子,众多中小企业依托开源社区的力量打造内部一站式大数据平台的梦想不再遥不可及。3.IDS——DataWorkshop实践之路IDS(DataWorkshop)是我们对Linkis和DSS的统称。Linkis用作计算中间件。底层连接各种计算或存储引擎,上层连接各种服务或应用,DSS提供一站式数据开发管理门户的基础组件。现阶段我们使用的DataSphereStudio和Linkis组件的版本分别是:1.0.1和1.0.3。其中,最重要的工作是完成Linkis的适配和应用。我们目前的大数据平台是基于cdh5.13.1的。为此,我们修改了Linkis依赖的大数据组件的版本来适配我们的版本,在这个过程中基本上没有遇到什么大坑,因为从Linkis1.x版本开始,对CDH5、6和其他社区组件版本都很好,基本不会出现依赖冲突过多等问题,即使出现问题,依靠强大活跃的Linkis社区,我们也能得到及时有效的反馈。除了兼容内部hadoop等组件外,我们还将Linkis1.1.x版本中的一些主要功能修复打补丁到内部1.0.3版本,如:https://github.com/apache/incubator-linkis/issues/1765https://github.com/apache/incubator-linkis/pull/1780这个阶段是我们IDS建设的初级阶段,DSS&Linkis的内部应用或者一些小的改造点,我会在下面从以下几方面进行:用户权限引擎增强作业调度数据治理小优化3.1用户权限IDS集成了公司内部SSO登录方式。用户扫码登录系统后,无法创建新的工作空间,只能使用统一的公共工作空间。在这个工作空间下,不同角色和身份的用户对IDS集成的组件入口有不同的访问权限。同时,基于DSS独有的AppConn设计理念,DSS可以方便快捷地集成各种上层Web系统。目前IDS中集成的组件列表包括:数据传输、数据探索、数据地图、运维平台、数据质量、SLA治理、数据服务等。组件列表DSSAppConn相关文档可参考:https://github.com/WeBankFinTech/DataSphereStudio/blob/master/README-ZH.md各系统组件的入口访问基于IDS中的角色和权限控制,SSO组件之间互通,共享同一个登录认证系统。同时,为了更方便的初始化用户相关的数据,我们增加了用户数据初始化服务,负责初始化每个Linkis安装节点上的用户数据,例如:创建Linux用户和用户组,创建用户工作空间目录,并创建用户数据。分配统一的工作空间,在WindowsAD域创建用户,SSSD将用户信息同步到所有集群节点,并为用户导出keytab等。不仅用户访问IDS组件入口受权限控制,进入组件后,具体组件中受保护的资源也需要经过权限系统的认可。组件访问权限下图为负责人对组件系统中相应功能模块的访问申请和审批。组件权限申请3.2引擎增强3.2.1引擎类型扩展在Linkis官方提供的JDBC引擎的基础上,我们新增了Presto、Clickhouse、Kyuubi等引擎,并支持在Scripts中提交相应引擎类型的脚本,以满足用户要求。不同计算引擎的需求满足了用户区分不同类型脚本的需求。EnginetypeexpansionMulti-enginesupport:多引擎支持3.2.2Presto慢查询列表PrestoSQL在我们内部占比最大,针对Presto引擎,我们为用户提供进度提示,慢查询列表等功能。Presto慢查询列表现阶段,Presto慢查询列表的主要作用是直观地反映每个用户提交的SQL的执行情况。我们的Presto集群在接入k8s之前,用户隔离机制还不够完善。部分用户提交的SQL会占用大量资源,耗时较长,也会对其他用户的SQL任务造成一定的影响。在旧平台模式下,这部分指标数据对开发用户是不可见的,需要集群维护人员上门PrestoUI排查慢查询的SQL任务不能及时有效响应,严重影响了使用Presto查询数据的用户体验。之后我们在K8s环境中部署了Presto集群,在Presto集群的扩缩容和资源管理上做了很大的优化。未来如果有需要,对于PrestoQuery输出的指标,我们会继续从多维度入手分析,以更好的形式呈现给用户。3.2.3JDBC引擎多数据源支持目前官方DSS&Linkis1.0.3对JDBC类型引擎多数据源连接的支持还不完善,我们在此基础上进行了改进。JDBC多数据源支持如图所示,用户可以通过切换不同的数据源连接标识来达到连接不同JDBC服务的效果。后续官方会在1.2.0版本支持该功能,参见:https://github.com/apache/incubator-linkis/issues/20923.3作业调度DSS提供了一套作业流设计和在线功能,其底层scheduling组件Schedulis的调度能力依赖于Azkaban,但是我们内部的调度系统一直使用Airflow。在搭建IDS之前,我们有一个自研的作业流设计和在线平台——CuckooCloud,它的web功能类似于DolphinScheduler,支持用户拖拽式设计工作流,一键发布作业DAG到Airflow调度平台,弥补Airflow在任务启动和依赖设计方面可视化工具的不足。因此,现阶段我们不使用DSS原生的工作流设计和发布能力,而是以appconn插件的形式整合我们内部的工作流设计平台。两个组件之间开通SSO登录,共享一套用户认证系统。内部作业流设计组件主要分为三层,DAG配置管理,调度单元管理,以及每个调度单元包含的任务节点及其依赖关系。3.3.1DAG配置管理这里的DAG配置对应Airflow上的各个DAG信息。DAG配置3.3.2调度单元管理IDS平台用户将具有特定业务意义的任务节点及其上下游依赖划分到同一个调度单元中。调度单元的作用不仅仅是强调一个具体的业务属性,同时,也是对一个完整DAG的概念拆分。调度单元3.3.3调度单元中的任务及其上下游依赖关系用户在使用调度设计功能时,有丰富的任务类型可供选择和组合,几乎涵盖了内部数据开发环节的大部分场景公司同时对额外任务节点的支持扩展也非常快捷方便。任务调度工作流设计调度设计笔记、特殊任务节点,如Tableau、报表刷新、报表发送类任务。在原有的开发模式下,Tableau数据源刷新任务的定时执行需要用户在tableauserver平台上为对应的数据源创建定时刷新计划。这样会带来如下问题:任务积压,每个预定的时间点,都会有一批数据源刷新任务提交执行,容易出现Presto节点负载过大,SparkThriftServer的driver进程挂掉等问题.问题的产生会导致数据源刷新任务失败。TableauServer上的数据源刷新任务失败后,没有自动重试机制,无法给出有效警告,比如高权重报表刷新失败后打电话,低权重报表刷新后发企业微信消息-重量报告无法刷新。报表数据源的刷新依赖于数据仓库批量运行任务的完成,但两者分散在不同的调度系统中,只能预估上游任务的完成时间来设置下游的开始执行时间任务。一旦上游任务Delay,下游任务无法及时感知,就会导致上报数据缺失。针对以上问题,我们选择将报表数据源刷新任务打包为Airflow任务节点。此举带来的结果是:数据源刷新任务与上下游依赖关系强,消除了上游依赖任务缺失导致的下游数据源空刷新,报表没有数据问题,同时打散了任务调度时间,解决了任务运行积压的隐患。数据源刷新任务支持自定义权重,失败后自动重试。它可以感知远程计算引擎的健康状态和自身刷新队列的冗余度来选择是否延迟提交刷新任务。在任务无法重试的情况下,可以匹配不同权重下的告警方式,告知用户任务失败的原因。对接SLA管理平台,实现核心任务生命周期的SLA标准化管理流程,自动为核心报表任务的上游依赖划分高权重资源队列,动态调整上游链路任务所需资源到跑步。实时监控核心报表上下游任务环节运行状态,实时进行延时告警,采集SLA任务环节不准时指标,将核心任务准时率统计指标发送给各业务方.用户完成工作流的设计后,点击发布按钮,工作流将被Airflow感知、渲染,然后进行后续的定时执行。Airflow上对应的工作流如下:IDS工作流未来工作流设计平台的一些方面需要改进地方:目前在工作流中开发一些脚本任务时,不支持直接执行脚本,IDS执行成功后,用户需要将脚本粘贴回工作流平台发布上线。其次,工作流不支持多环境发布、暂停调度、版本管理等高级功能。未来,我们会考虑将工作流设计功能迁移到DSS或将调度迁移到DolphinScheduler。3.4数据治理3.4.1数据地图数据地图使用不同的安全级别、主题领域或业务标签划分其他存储系统中的数据仓库表和数据库表的元数据,并提供外部数据检索能力。通过这个平台,用户可以使用Minorcost来查找所需的数据、报告、中间件和相关实体的沿袭。用户在IDS平台查询数据仓库、CK或其他存储系统中的在线表时,需要操作的表会被SQL拦截器解析,用户只能在数据中提交对这些表的访问申请映射并获得批准。之后就可以继续执行SQL了。相应的,Scripts中的库表元数据列表只能显示授权资源,以及数据图中用户创建的一些主题库资源,如下图:主题库数据图和主题库构建数据图3.4。2数据流出管理现阶段IDS平台数据流出包括以下两种形式:少量数据下载,主要为csv和excel两种文件格式。全量数据导出,主要有csv、excel、json三种文件格式。另外,只有用户在数据映射中申请了表的导出权限后,才能允许他将服务器上的数据全量导出到内网隔离环境中。用户提交的SQL正确接收到结果集后,会激活结果集的导出功能。用户点击导出按钮,填写数据导出申请表。提交后,数据导出服务检测到数据导出任务,开始处理用户的请求。数据导出要求。数据导出用户可以在数据导出列表页面查看自己数据导出任务的最新执行情况。下载数据列表3.4.3。数据同步主要用于多个异构数据源之间的数据交换,可以在应用层面实现各部门业务数据的互联互通和信息共享。特点:支持多种数据源,包括但不限于mysql、mongo、odps、es、oss、hive互传数据传输限流,除了基本的限流算法外,还支持全局传输和并发的控制数据传输类型丰富、全量、增量、增量融合,拉链表自动参数调整,实现最佳提取效率Web端可视化配置,发布数据同步与工作流设计和调度3.4.4数据质量数据质量中心由监控预定义规则,事中监控数据生成过程,事后评估和问题追溯,围绕完整性、一致性、准确性、有效性和及时性五个方面衡量数据质量,并依托线下开发的数据质量配置提升企业数据价值的中心。可在现有数据质量平台功能中添加自定义质量模板规则。模板规则支持udf和带质量评价分数的正则规则。您可以查看表和字段的质量分数。可以保存脏数据,方便查看脏数据问题。支持强规则熔断机制,防止脏数据影响下游数据。有试运行机制,可以查看试运行结果。指示牌可以查看历史脏数据趋势规则列表。数据质量指标数据质量指标3.4.5SLA治理SLA平台为用户提供核心数据申报、SLA在线签约、签约后的SLA运维管理功能,通过全链路能力的协同,共同保障数据质量声明节点。DataSLASLAIndicatorsSLAIndicators3.5IDS中的一些小的功能改进或应用项目下面列出的是一些小的优化项目,主要是优化一些用户体验。Scripts中脚本目录的复制和剪切功能在脚本执行过程中,将任务进度拉动的固定频率改为渐增频率的脚本文件共享机制,用户可以与其他用户共享单个(或多个脚本文件),并设置用户读取并为此脚本编写权限。改进共享文件组件使用的文档指南和视频教程,为用户提供更好的体验。配置项spark-engine-confIDS增加Spark引擎的一些高级参数增加用户反馈的一键发布功能Feedback4.总结当前阶段,我们完成了基于DSS和Linkis的内部IDS平台的初步搭建,并得到了我们分享了部分用户从zeppelin平台过渡到IDS平台的阶段性成果,并与我们的社区小伙伴分享了一些我们在内部实践过程中认为值得一提的点,以及一些小的功能或体验的改进,希望正在研究或初步使用WDS套件的公司或团队能够从我们的“答卷”中获得一些有益的经验。回答问题。
