暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

日均处理PB级数据,基于DolphinScheduler的离线数据治理平台实现血缘维护耗时降低95%

海豚调度 2025-08-06
326

点击蓝字,关注我们

本文介绍了基于 DolphinScheduler 的离线数据治理平台,解决了任务依赖黑洞和扩展性瓶颈问题。通过 YAML 动态编译和血缘自动捕获,实现了高效的任务依赖管理和数据追踪。平台使用 Neo4j 图数据库进行血缘存储,支持秒级影响分析和根因定位。此外,结合自研高性能导入工具,大幅提升数据传输效率。


1

背景与挑战


在日均处理PB级数据的背景下,原有调度系统面临两大核心问题:

  1. 任务依赖黑洞:跨系统任务(Hive/TiDB/StarRocks)依赖关系人工维护,故障排查耗时超30分钟
  2. 扩展性瓶颈:单点调度器无法支撑千级任务并发,失败重试机制缺失导致数据延迟率超5%

2

技术选型



3

核心架构设计




关键技术实现:

  1. YAML动态编译
    type TaskDAG struct {
        Nodes []Node `yaml:"nodes"` 
        Edges []Edge `yaml:"edges"`
    }
    func GenerateWorkflow(yamlPath string) (*ds.WorkflowDefine, error) {
        data := os.ReadFile(yamlPath)
        var dag TaskDAG
        yaml.Unmarshal(data, &dag)
        // 转换为DolphinScheduler DAG结构
        return buildDSDAG(dag) 
    }
    2. 血缘自动捕获
    • 通过拦截SQL执行计划解析输入/输出表
    • 非SQL任务通过Hook捕获文件路径
      # StarRocks Broker Load血缘捕获
      def capture_brokerload(job_id):
          job = get_job_log(job_id)
          return {
            "input": job.params["hdfs_path"],
            "output": job.db_table 
          }


      4

      核心难题解决方案


      1. 零事故迁移方案
      • 双跑比对:新老系统并行运行,DataDiff工具校验结果一致性
      • 灰度发布:按业务单元分批次切割流量
      • 回滚机制:5分钟内完整回退能力
      2. 自研高性能导入工具



      核心优化点:

      • 基于Go的协程池实现批量提交
      • 动态缓冲区调整策略
        func (w *StarrocksWriter) batchCommit() {
            for {
                select {
                case batch := <-w.batchChan:
                    w.doBrokerLoad(batch) 
                    // 动态调整batchsize
                    w.adjustBatchSize(len(batch)) 
                }
            }
        }


        5

        血缘管理实现


        血缘存储采用图数据库Neo4j,实现:

        • 影响分析:表级变更秒级定位影响范围
        • 根因定位:故障时30秒内追踪问题源头
        • 合规审计:满足GDPR数据溯源要求


        6

        性能收益


        原文链接:https://blog.csdn.net/guichenglin/article/details/149216068





        用户案例



        Zoom网易邮箱 每日互动 惠生工程  作业帮 
        博世智驾 蔚来汽车 长城汽车集度长安汽车
        思科网讯食行生鲜联通医疗联想
        新网银行唯品富邦消费金融 
        自如有赞伊利当贝大数据
        珍岛集团传智教育Bigo
        YY直播  拈花云科太美医疗
        Cisco Webex兴业证券




        迁移实战



        Azkaban   Ooize(当贝迁移案例)
        Airflow (有赞迁移案例)
        Air2phin(迁移工具)
        Airflow迁移实践



        发版消息




        Apache DolphinScheduler 3.2.2版本正式发布!
        Apache DolphinScheduler 3.2.1 版本发布:增强功能与安全性的全面升级
        Apache DolphinScheduler 3.3.0 Alpha发布,功能增强与性能优化大升级!




        加入社区



        关注社区的方式有很多:

        • GitHub: https://github.com/apache/dolphinscheduler
        • 官网:https://dolphinscheduler.apache.org/en-us
        • 订阅开发者邮件:dev@dolphinscheduler@apache.org
        • X.com:@DolphinSchedule
        • YouTube:https://www.youtube.com/@apachedolphinscheduler
        • Slack:https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-1cmrxsio1-nJHxRJa44jfkrNL_Nsy9Qg

        同样地,参与Apache DolphinScheduler 有非常多的参与贡献的方式,主要分为代码方式和非代码方式两种。

        📂非代码方式包括:

        完善文档、翻译文档;翻译技术性、实践性文章;投稿实践性、原理性文章;成为布道师;社区管理、答疑;会议分享;测试反馈;用户反馈等。

        👩‍💻代码方式包括:

        查找Bug;编写修复代码;开发新功能;提交代码贡献;参与代码审查等。

        贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

        社区汇总了以下适合新手的问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3A%22first+time+contributor%22

        优先级问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3Apriority%3Ahigh

        如何参与贡献链接https://dolphinscheduler.apache.org/zh-cn/docs/3.2.2/%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%8D%97_menu/%E5%A6%82%E4%BD%95%E5%8F%82%E4%B8%8E_menu

        如果你❤️小海豚,就来为我点亮Star吧!

        https://github.com/apache/dolphinscheduler


        你的好友秀秀子拍了拍你

        并请你帮她点一下“分享”

        文章转载自海豚调度,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论