乐趣区

关于workflow:中国联通改造-Apache-DolphinScheduler-资源中心实现计费环境跨集群调用与数据脚本一站式访问

截止 2022 年,中国联通用户规模达到 4.6 亿,占据了全中国人口的 30%,随着 5G 的推广遍及,运营商 IT 零碎广泛面临着海量用户、海量话单、多样化业务、组网模式等一系列改革的冲击。

以后,联通每天解决话单量超过 400 亿条。在这样的体量根底上,进步服务水平,为客户提供更有针对性的服务,也成为了联通品牌谋求的终极目标。而中国联通在海量数据会集、加工、脱敏、加密等技术与利用方面已锋芒毕露,在行业中具备肯定的先发劣势,将来势必成为大数据赋能数字经济倒退的重要推动者。

在 Apache DolphinScheduler 4 月 Meetup 上,咱们邀请到了联通软件研究院的柏雪松,他为咱们分享了《DolphinScheduler 在联通计费环境中的利用》。

本次演讲次要包含三个局部:

  • DolphinScheduler 在联通的总体应用状况
  • 联通计费业务专题分享
  • 下一步的布局

柏雪松 联通软研院 大数据工程师

毕业于中国农业大学,从事于大数据平台构建和 AI 平台构建,为 Apache DolphinScheduler 奉献 Apache SeaTunnel(Incubating) 插件,并为 Apache SeaTunnel(Incubating) 共享 alluxio 插件

01  总体应用状况

首先给大家阐明一下联通在 DolphinScheduler 的总体应用状况:

  • 当初咱们的业务次要运行在 3 地 4 集群
  • 总体工作流数量大略在 300 左右
  • 日均工作运行差不多 5000 左右

咱们应用到的 DolphinScheduler 组件包含 Spark、Flink、SeaTunnel(原 Waterdrop),以及存储过程中的 Presto 和一些 Shell 脚本,涵盖的业务则蕴含稽核,支出摊派,计费业务,还有其余一些须要自动化的业务等。

02 业务专题分享

​01 跨集群双活业务调用

上文说过,咱们的业务运行在 3 地 4 集群上,这样就免不了集群之间的相互的数据交换和业务调用。如何对立治理和调度这些跨集群的数据传输工作是一个重要的问题,咱们数据在生产集群,对于集群网络带宽非常敏感,必须有组织地对数据传输进行治理。

另一方面,咱们有一些业务须要跨集群去调用,例如 A 集群数据到位后 B 集群要启动统计工作等,咱们抉择 Apache DolphinScheduler 作为调度和管制,来解决这两个问题。

首先阐明下咱们跨集群数据传输的流程在 AB 两个集群上进行,咱们均应用 HDFS 进行底层的数据存储,在跨集群的 HDFS 数据交换上,依据数据量大小和用处,咱们将应用的数据分为小批量和大批量数据,向构造表,配置表等。

对于小批量数据,咱们间接将其挂载到同一个 Alluxio 上进行数据共享,这样不会产生数据同步不及时导致的版本问题。

  • 像明细表和其余大文件,咱们应用 Distcp 和 Spark 混合进行解决;
  • 对于构造表数据,应用 SeaTunnel on Spark 的形式;
  • 通过 Yarn 队列的形式进行限速设置;
  • 非构造数据应用 Distcp 传输,通过自带的参数 Bandwidth 进行速度限制;

这些传输工作都是运行在 DolphinScheduler 平台下面,咱们整体的数据流程次要是 A 集群的数据到位检测,A 集群的数据完整性校验,AB 集群之间的数据传输,B 集群的数据稽核和到位告诉。

强调一点:其中咱们重点用到了 DolphinScheduler 自带的补数重跑,对失败的工作或者不残缺的数据进行修复。

在实现了跨集群的数据同步和拜访,咱们还会应用 DolphinScheduler 进行跨地区和集群的工作调用。

咱们在 A 地有两个集群,别离是测试 A1 和生产 A2,在 B 地有生产 B1 集群,咱们会在每个集群上拿出两台具备内网 IP 的机器作为接口机,通过在 6 台接口机上搭建 DolphinScheduler 建设一个虚构集群,从而能够在对立页面上操作三个集群的内容;

Q:如何实现由测试到生产上线?

A:在 A1 测试上进行工作开发,并且通过测试之后,间接将 worker 节点改变到 A2 生产上;

Q:遇到 A2 生产出了问题,数据未到位等状况怎么办?

A:咱们能够间接切换到 B1 生产上,实现手动的双活容灾切换;

最初咱们还有些工作比拟大,为满足工作时效性,须要利用两个集群同时计算,咱们会将数据拆分两份别离放到 A2 和 B1 下面,之后同时运行工作,最初将运行后果传回同一集群进行合并,这些工作流程根本都是通过 DolphinScheduler 来进行调用的。

请大家留神,在这个过程中,咱们应用 DolphinScheduler 解决了几个问题:

  • 我的项目跨集群的工作依赖校验;
  • 管制节点级别的工作环境变量;

02 AI 开发同步工作运行

1、对立数据拜访形式

咱们当初曾经有一个繁难的 AI 开发平台,次要为用户提供一些 Tensorflow 和 Spark ML 的计算环境。在业务需要下,咱们须要将用户训练的本地文件模型和集群文件系统买通,并且可能提供对立的拜访形式和部署办法,为解决这个问题,咱们应用了 Alluxio-fuse 和 DolphinScheduler 这两个工具。

  • Alluxio-fuse 买通本地和集群存储
  • DolphinScheduler 共享本地和集群存储

因为咱们搭建的 AI 平台集群和数据集群是两个数据集群,所以在数据集群上咱们进行一个数据的存储,利用 Spark SQL 或者 Hive 进行一些数据的预加工解决,之后咱们将解决完的数据挂载到 Alluxio 上,最初通过 Alluxio fuse 跨级群映射到本地文件,这样咱们基于 Conda 的开发环境,就能够间接拜访这些数据,这样就能够做到对立数据的拜访形式,以拜访本地数据的办法拜访集群的数据。

2、数据脚本一站式拜访

拆散资源之后,通过预处理大数据内容通过数据集群,通过咱们的 AI 集群去解决训练模型和预测模型,在这里,咱们应用 Alluxio-fuse 对 DolphinScheduler 的资源核心进行了二次改变,咱们将 DolphinScheduler 资源核心连贯到 Alluxio 上,再通过 Alluxio-fuse 同时挂载本地文件和集群文件,这样在 DolphinSchedule 下面就能够同时拜访在本地的训练推理脚本,又能够拜访到存储在 hdfs 上的训练推理数据,实现数据脚本一站式拜访。

03 业务查问逻辑长久化

第三个场景是咱们用 Presto 和 Hue 为用户提供了一个前台的即时查问界面,因为有些用户通过前台写完 SQL,并且测试实现之后,须要定时运行一些加工逻辑和存储过程,所以这就须要买通从前台 SQL 到后盾定时运行工作的流程。

另一个问题是 Presto 原生没有租户间的资源隔离问题。咱们也是比照了几个计划之后,最初结合实际状况抉择了 Presto on Spark 计划。

因为咱们是一个多租户平台,最开始给用户提供的计划是前端用 Hue 界面,后端间接应用原生的 Presto 跑在物理集群上,这导致了用户资源争抢占的问题。当有某些大查问或者大的加工逻辑存在时,会导致其余租户业务长时间处于期待状态。

为此,咱们比照了 Presto on Yarn 和 Presto on Spark,综合比照性能之后发现 Presto on Spark 资源应用效率会更高一些,这里大家也能够依据本人的需要抉择对应的计划。

另一方面,咱们应用了原生 Presto 和 Presto on spark 共存的形式,对于一些数据量较小,加工逻辑较为简单的 SQL,咱们间接将其在原生 Presto 上运行,而对于一些加工逻辑比较复杂,运行工夫比拟长的 SQL,则在 Presto on spark 上运行,这样用户用一套 SQL 就能够切换到不同的底层引擎上。

此外,咱们还买通了 Hue 到 DolphinScheduler 定时任务调度流程。咱们在 Hue 上进行 SQL 开发调制后,通过存储到本地 Serve 文件,连贯到 Git 进行版本控制。

咱们将本地文件挂载到 Alluxio fuse 上,作为 SQL 的同步挂载,最初咱们应用 Hue,通过 DolphinScheduler 的 API 创立工作和定时工作,实现从 SQL 开发到定时运行的流程管制。

04 数据湖数据对立治理

最初一个场景是数据湖数据对立治理,在咱们自研的数据集成平台上,应用分层治理的形式对数据湖数据进行对立的治理和拜访,其中应用了 DolphinScheduler 作为入湖调度和监控引擎。

在数据集成平台上,对于数据集成、数据入湖、数据散发这些批量的和实时的工作的,咱们应用 DolphinScheduler 进行调度。

底层运行在 Spark 和 Flink 上,对于数据查问和数据摸索这些须要即时反馈的业务需要,咱们应用嵌入 Hue 接入 Spark 和 Presto 的办法,对数据进行摸索查问;对于数据资产注销同步和数据稽核等,间接对数据源文件信息进行查问,间接同步底层数据信息。

最初一个场景是数据湖数据对立治理,在咱们自研的数据集成平台上,应用分层治理的形式对数据湖数据进行对立的治理和拜访,其中应用了 DolphinScheduler 作为入湖调度和监控引擎。

在数据集成平台上,对于数据集成、数据入湖、数据散发这些批量的和实时的工作的,咱们应用 DolphinScheduler 进行调度。

底层运行在 Spark 和 Flink 上,对于数据查问和数据摸索这些须要即时反馈的业务需要,咱们应用嵌入 Hue 接入 Spark 和 Presto 的办法,对数据进行摸索查问;对于数据资产注销同步和数据稽核等,间接对数据源文件信息进行查问,间接同步底层数据信息。

目前咱们集成平台基本上治理着 460 张数据表的品质治理,对数据准确性和准时性提供对立的治理。

03 下一步打算与需要

01 资源核心

在资源核心层面,为了不便用户之间的文件共享,咱们打算为全用户提供资源受权,同时依据它的归属租户,调配租户级别的共享文件,使得对于一个多租户的平台更为友善。

02 用户治理

其次与用户传权限相干,咱们只提供租户级别的管理员账账户,后续的用户账户由租户管理员账户创立,同时租户组内的用户治理也是由租户管理员去管制,以不便租户外部的治理。

03 工作节点

最初是咱们的工作节点相干的打算,当初已在进行之中:一方面是实现 SQL 节点的优化,让用户可能抉择一个资源核心的 SQL 文件,而不须要手动复制 SQL;另一方面是 HTTP 节点对返回的 json 自定义解析提取字段判断,对简单返回值进行更为敌对的解决。

04 参加奉献

随着国内开源的迅猛崛起,Apache DolphinScheduler 社区迎来蓬勃发展,为了做更好用、易用的调度,真挚欢送酷爱开源的搭档退出到开源社区中来,为中国开源崛起献上一份本人的力量,让外乡开源走向寰球。

参加 DolphinScheduler 社区有十分多的参加奉献的形式,包含:

奉献第一个 PR(文档、代码) 咱们也心愿是简略的,第一个 PR 用于相熟提交的流程和社区合作以及感触社区的友好度。

社区汇总了以下适宜老手的问题列表:https://github.com/apache/dolphinscheduler/issues/5689

非老手问题列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A”volunteer+wanted”

如何参加奉献链接:https://dolphinscheduler.apache.org/zh-cn/docs/development/contribute.html

来吧,DolphinScheduler 开源社区须要您的参加,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是微小的。

参加开源能够近距离与各路高手切磋,迅速晋升本人的技能,如果您想参加奉献,咱们有个贡献者种子孵化群,能够增加社区小助手微信 (Leonard-ds),手把手教会您 (贡献者不分程度高下,有问必答,要害是有一颗违心奉献的心)。

增加小助手微信时请阐明想参加奉献。

来吧,开源社区十分期待您的参加。

05 流动举荐

当数据资源成为生产倒退乃至于生存过程中必不可少的因素,企业该如何通过数据集成帮忙企业数据服务全生命周期落地呢?5 月 14 日,数据集成框架 Apache SeaTunnel(Incubating) 将邀请一站式数据集成平台 Apache InLong(Incubating) 的技术专家与开源贡献者们,一起来到直播间,与大家畅谈应用 Apache SeaTunnel(Incubating) 与 Apache InLong(Incubating) 后的实际经验与心得体会。

本次流动受疫情影响仍以线上直播的模式发展,流动现已凋谢收费报名,欢送扫描下图二维码,或点击“浏览原文”收费报名!

直播链接:https://www.slidestalk.com/m/777

退出移动版