信也科技基于 Apache SeaTunnel金融场景的应用实践探索

2024-09-06 04:36

本文主要是介绍信也科技基于 Apache SeaTunnel金融场景的应用实践探索,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

作者:朱俊,信也科技,数据开发专家

离线开发一直是数据仓库建设中重要的一个环节。信也科技之前基于Azkaban构建了离线任务调度与开发平台,承载了公司90%以上的离线任务调度需求,以及玄策变量平台的每日变量跑批产出任务。

随着时间的积累,任务量级越来越大,Azkaban难以运维与二次开发等问题日渐凸显,给技术同学带来不小的负担。

从2023年下半年开始,借助内部创新项目的机会,开展了调度系统引擎升级的项目立项与调研,希望在新调度系统的基础上,进一步规范任务开发流程,提高运维效率,简化全链路血缘的获取和维护。

在历时大半年的探索与落地过程中,调研了Apache DolphinScheduler与内部自研调度系统DataCloud之后,考虑到公司实际情况与用户使用习惯,最终决定在自研调度系统DataCloud的基础上,借鉴Apache DolphinScheduler的架构思想与插件式设计理念,打造全新的调度引擎,并推出全新的一体化离线任务开发运维平台——千帆

最终千帆平台成功在生产环境上线,并开始推动历史任务的迁移与迭代工作。

在调研Apache DophinScheduler的过程中,深刻体会了海豚调度结合Apache SeaTunnel打造数据抽取→任务开发→数据推送一体化流程的便捷性与实用性,对DevOps理念在数据工程中的应用也加深了一些理解和认识。

考虑到内部对于数据推送和互导这一场景依然存在着不少的痛点和问题,因此在千帆平台落地的过程中,经过技术选型与调研,决定采用Apache SeaTunnel框架来统一赋能数据集成与推送场景。

现状

在公司发展早期,由于快速迭代等原因,很多内部系统都带有不同程度的数据推送能力。

这种烟囱式的开发虽然带来了灵活适配,快速上线等好处,但随着业务不断成熟,也逐步呈现一些弊端,比如多个平台自成体系,增加了全链路血缘建设的复杂度;权限难以打通与统一管理。

另一方面,作为数据开发的核心调度引擎,Azkaban专注于调度本身,并没有集成数据抽取,数据推送等功能,需要数仓同学自行开发任务脚本实现这类功能,增加了开发成本,且复用性不高。

鉴于这两个原因,希望在千帆里集成统一的,配置化的推数功能,来收口这些分散的推数场景。

以下是我们之前的架构

架构图

从上图可以看到,各种内部平台到各式各样的目标存储系统之间,存在多种操作数据导出的方式或者工具,这些历史遗留问题为后续的开发带来了一些不便之处。

痛点

(一)全链路血缘难打通

过去,由于推送任务分散在各个系统当中,当上游的离线计算任务数据质量出现问题的时候,各个下游依赖该张离线表产出任务的推送任务无法及时感知数据质量问题,进行阻断或者重跑。

这就导致了数仓同学发现某张离线表数据有问题而重刷了当天分区数据时,需要耗费较长的时间来查下游哪些推数任务需要进行重跑,是一个不小的运维负担

理论上我们可以开发一个统一的血缘服务来汇总每个系统的血缘数据,构建跨系统的全链路血缘。

但是这需要去理解和统一不同系统的元数据,带来较高的开发成本,不利于数据治理工作的开展。

(二)推送框架难统一

由于历史原因,基于Azkaban的调度平台虽然能满足离线调度的需求,但是Azkaban是以command为任务运行的最小单元,每个command实际上一个或多个shell脚本的功能集合,这就造成了基于Azkaban的任务类型难以划分,同样的功能可能会复用不同的shell脚本,每个脚本对于开发运维同学来说都相当于一个黑盒,需要熟悉其中的逻辑才能把控。

我们在做千帆早期的设计和开发,想对接Azkaban时,就面临这样的问题。为了适配Azkaban底层的不同运行脚本,需要不断的在产品设计上增加Case来满足各种自定义脚本的参数和逻辑分支,来适配推送不同存储(如Mongo和StarRocks)的作业。

而对于其他拥有推送功能的系统来说,由于设计开发的人员不同,整体架构和使用场景不同,也会选择不同的实现方式来完成数据推送(比如采用impala JDBC、MapReduce等实现方式),这就造成了同质化的功能采用不同的技术实现,不仅维护难,出了问题也较难定位,且无法采用统一的产品设计逻辑来覆盖公司内部的业务场景。

(三)推送任务监控与治理难实现

上述问题造成了数据计算流程和数据推送流程之间的割裂,原本数据抽取-数据计算-数据推送应该在逻辑上是一个整体,现在需要开发人员分散地去处理。

当涉及到权限,验数,链路排查等问题时,这种一来二去带来了时间和沟通上的成本。

同样由于实现方式的不统一,对于推送任务的效率和断点续传、Checkpoint、流控、监控Metric等高级功能,难以给出统一的实现方案,不利于整体的数据治理。

技术选型

在新系统调研开发过程中,我们对数据集成底层框架进行技术选型时,参考了其他公司在落地实践中的经验,我们认为针对我司的场景,需要从以下几个关键点来进行衡量:

  • 性能: 数据集成框架需要具备高吞吐、低延迟、可观测的特点
  • 安全部署: 金融场景需要考虑数据的安全性,因此集成框架部署依赖的其他组件越少越好,部署环境与流程简单,易于维护
  • 易用性与扩展性: 数据集成框架应具有良好的扩展性和架构设计,易于针对个性化场景进行二次开发
  • 社区生态: 数据集成框架应支持多种数据源和目标存储,社区活跃度高,拥有丰富的User Case

我们考察了一些较为流行的开源工具,主要集中在使用较为广泛的DataX、Sqoop、SeaTunnel。

以下是这三款产品的横向对比

对比项Apache SeaTunnelDataXApache Sqoop
运行模式分布式,支持单机单机非分布式框架,依赖Hadoop MR实现分布式
容错机制无中心化高可用架构,容错机制完善易受网络、数据源等因素影响MR模式容错处理不便
部署难度容易容易依赖Hadoop集群部署
支持数据源丰富度超过100种数据源20+种数据源只支持几种数据源
自动建表支持不支持不支持
断点续传支持不支持不支持
单机性能很好较好一般
可扩展性易扩展易扩展扩展性较差
统计信息
与调度系统集成与DophinScheduler集成,也支持集成到其他调度系统不支持不支持
社区非常活跃,成功案例多一般已从Apache退役

结合上面的横向对比(部分参考了社区用户实践经验与官方文档)结论,基于我司的现状和痛点,综合考虑架构设计先进性、灵活性、部署运维成本、社区活跃度等方面,我们最终选择了Apache SeaTunnel作为底层框架来统一任务推送与导出的流程与场景。

实践过程

在调研和落地过程中,我们基于SeaTunnel 2.3.4版本,主要做了以下一些适配和改造,以满足公司内部的导数场景和需求

(一)扩展Sink插件

  • 支持PMQ

    在2.3.4的基础上,我们扩展了connector-pmq模块,以接入公司内部的消息队列中间件PMQ

    PMQ是信也科技自研的一款消息系统中间件,在公司内部有广泛应用,支撑了信贷业务各条线的消息传输与上下游数据链路,支撑PMQ打通了数仓到业务系统的最后一环,实现了数据赋能业务的最后一公里。

  • 支持跨集群HBase Kerberos认证

    公司已有的一些业务平台依赖于自建的HBase集群存储,与数仓的大数据集群是两套体系,之前由于Kerberos认证的问题,难以从数仓的Hive表将离线计算结果写入业务平台的HBase集群,需要改造一个MapReduce程序去实现跨集群的Kerberos认证,增加了数仓开发同学的维护成本。

    千帆平台在SeaTunnel 2.3.4版本的Connector-HBase模块上增加了对Kerberos认证的支持(复用了Connector-file-base-hadoop模块中对Kerberos相关的Config),实现了配置化生成任务读取Hive表跨集群导入标签平台的业务需求,目前这块后端已经实现,产品设计交互和前端页面计划在下个迭代支持。

  • 数据传输流程优化

    在信也科技,有一些离线数据经过内网专线跨机房传输的需求,过去由于没有统一的平台工具支持,往往是数据开发同学产出离线报表且验证无误之后,通知下游研发同学进行数据传输任务的启动。

    由于数据跨机房传输对于数据质量和网络传输速率都有一定的要求,且有一些特定的处理逻辑,因此当传输失败或者数据错误时,往往需要研发同学人工介入,维护成本较高,且无法做到流程自动化。

    考虑到为减少人工维护成本,我们也在积极与数据开发和研发同学沟通需求,通过SeaTunnel来支持这一业务场景,目前整个研发方案在沟通与设计中,计划在未来的版本上线。

(二)千帆平台支持推送任务类型

过去,基于Azkaban调度构建的离线开发平台产品(千帆前身),在功能上很难构建统一的推送任务,内部实现较难解耦,且完全依赖用户自己编写的历史脚本来实现。

当其他平台的用户想要迁移到千帆平台时,往往面临着较高的成本,需要将ETL的流程迁移到多个系统上来支持。

在新的千帆平台上,我们重构了推送任务体系,并且支持了Kafka、StarRocks、MySQL、PMQ(内测中) 这几个任务类型,并实现了页面配置化到任务部署生产、实例运维的CI/ CD流程,以下是我们产品的一些交互设计:

图1

图2

图3

图4

阶段成果

经过一段时间的迭代,Apache SeaTunnel作为新千帆平台的数据集成底座已经在生产环境上线,目前已有部分用户将一些试点任务迁移到千帆平台推送任务当中。

以下是我们重构之后的架构图

未来规划

接下来,我们希望围绕Apache SeaTunnel去进一步扩展数据推送与互导的场景,进一步结合我司业务场景落地一些实际使用Case,希望能够扩大业务场景的覆盖范围和提升推送质量和效率。

以下是我们近期希望尝试落地的一些工作方向:

  • 扩大覆盖的下游Sink组件范围,尽可能覆盖到我司常用的存储组件及一些业务个性化使用的存储场景
  • 尝试切换推送任务的底层引擎,从Flink切换到Zeta,在推送Metric监控及资源调度上做一些尝试
  • 围绕推送数据质量和任务报告进行精细化建设与运营,推动历史任务的迁移

最后,感谢Apache DolphinScheduler社区和Apache SeaTunnel社区在落地实践工作中的帮助和指导,也衷心祝愿社区发展越来越好!

本文由 白鲸开源科技 提供发布支持!

这篇关于信也科技基于 Apache SeaTunnel金融场景的应用实践探索的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1141009

相关文章

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/