V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Chayebao
V2EX  ›  程序员

请教一下大数据 ETL 工具该如何选择。

  •  1
     
  •   Chayebao · 2023-11-30 16:36:55 +08:00 · 4107 次点击
    这是一个创建于 366 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在公司的 ETL ,用的是 mysql 存储过程+事件或其他调度工具,来实现 DWD,和 DWS 层的数据转化。因为现在需要处理的表开始多了起来,后续想使用更专业的 ETL 来统一管理和处理。请问现在比较主流的工具是什么,Kettle ? spark ? 再简单说一下情况:主站 A 的数据分别同步到 B ,C ,D 库,然后在 BCD 库处理数据,分别在自己的库里转为 DWD 和 DWS 层。

    52 条回复    2023-12-11 14:42:39 +08:00
    awen233333
        1
    awen233333  
       2023-11-30 17:09:16 +08:00
    kettle 不建议,我觉得不好用,速度慢 bug 多,老是报莫名其妙的错,数据量小还可以凑合用一下
    ChenKeLiang
        2
    ChenKeLiang  
       2023-11-30 17:13:29 +08:00
    dataworks
    EarthChild
        3
    EarthChild  
       2023-11-30 17:19:01 +08:00
    @awen233333 #1 那你推荐啊!
    EarthChild
        4
    EarthChild  
       2023-11-30 17:19:21 +08:00
    @ChenKeLiang #2 不要阿里系的。
    sss15
        5
    sss15  
       2023-11-30 17:19:51 +08:00
    盲推一波 flink cdc
    heyline
        6
    heyline  
       2023-11-30 17:23:57 +08:00
    可以试试 airbyte + dbt 的方案
    yngzij
        7
    yngzij  
       2023-11-30 17:31:27 +08:00
    datax 可以考虑一下
    awen233333
        8
    awen233333  
       2023-11-30 17:34:27 +08:00
    @EarthChild 我推荐的就是你不想用的😂
    dot2
        9
    dot2  
       2023-11-30 17:46:38 +08:00
    dolphinscheduler
    haimianbihdata
        10
    haimianbihdata  
       2023-11-30 17:57:48 +08:00 via Android
    海豚调度。datax flink cdc
    hengtong
        11
    hengtong  
       2023-11-30 19:07:05 +08:00 via iPhone
    蹲一个
    hengtong
        12
    hengtong  
       2023-11-30 19:07:31 +08:00 via iPhone
    dataworks 挺好的 就是贵
    ursash
        13
    ursash  
       2023-11-30 19:32:27 +08:00
    dbt 考虑一下?
    kkadmin
        14
    kkadmin  
       2023-11-30 20:02:30 +08:00
    Doris/StarRocks + Dolphinscheduler
    ctrlaltdeletel
        15
    ctrlaltdeletel  
       2023-11-30 20:24:41 +08:00
    ddkk1112
        16
    ddkk1112  
       2023-11-30 21:57:38 +08:00
    mysql select 同步的话,datax 还不错
    bin 同步考虑 canal
    如果不想用阿里的,自己用 python 写同步脚本,也很快
    tyrantlucifer
        17
    tyrantlucifer  
       2023-11-30 22:11:19 +08:00
    火山引擎 DataLeap 开发套件可以了解一下
    leonhao
        18
    leonhao  
       2023-11-30 22:14:45 +08:00
    开 binlog 最省心
    dlmy
        19
    dlmy  
       2023-12-01 01:27:01 +08:00
    强烈推荐 FlinkCDC ,大数据项目每天处理 5 亿条数据,处理流程如下:ODS -> DWD -> DWM -> DWS -> ADS ,暂时没发现什么问题
    iv8d
        20
    iv8d  
       2023-12-01 08:17:08 +08:00
    kettle
    noparking188
        21
    noparking188  
       2023-12-01 08:41:01 +08:00 via Android
    @heyline 这个好用吗,体验咋样
    Chayebao
        22
    Chayebao  
    OP
       2023-12-01 08:42:42 +08:00
    @haimianbihdata 我目前就是有用到 海豚调度去调度存储过程,flinkCDC 做的数据同步,但是 etl 方面要怎么做 没太理解,大佬细说
    Chayebao
        23
    Chayebao  
    OP
       2023-12-01 08:44:26 +08:00
    @dlmy 我现在是用的 flinkCDC 同步,你的意思是在同步的同时 又去处理数据,做汇总?
    noparking188
        24
    noparking188  
       2023-12-01 08:45:49 +08:00 via Android
    BCD 库换成 tidb ,开 tiflash ,调度用 dolphin 或者 airflow 之类,回写实时可以用 ticdc
    tidb 生态全方位兼容 MySQL
    Chayebao
        25
    Chayebao  
    OP
       2023-12-01 08:50:39 +08:00
    @dlmy 我这边的情况是这样的, 有一个主站,每张表有‘type’字段 A,B,C 。 我用 flinkCDC 把 type 不同的数据 分离,分别同步到 A,B,C 库。接着,在各自的库,用 mysql 存储过程+海豚调度 处理数据,汇总,做 DWS 。如果不使用 mysql 存储过程,也就是要 再各部署 3 套 flinkCDC ,用 job 去做数据汇总么,还是说写好 job , 丢到海豚调度上处理。目前海豚调度能使用 flink 的那个功能我还不知道怎么使用。
    noparking188
        26
    noparking188  
       2023-12-01 08:51:32 +08:00 via Android
    @noparking188 你只有 TP 的存储系统,你要加一个 AP 的存储系统做 ETL ,你现在的架构算是传统数仓,且远比不上 SQL Server ,SQL Server 那一套现在都逐渐被淘汰了,AP 数据库支撑不了的处理,你加 Spark ,tidb 生态有 tispark
    Chayebao
        27
    Chayebao  
    OP
       2023-12-01 08:55:05 +08:00
    @noparking188 我们这边需求有点不一样 BCD 库要能单独拿出来,所以是 3 个 mysql 地址。
    Chayebao
        28
    Chayebao  
    OP
       2023-12-01 09:02:09 +08:00
    @dlmy 我现在启动了 3 套 flinkCDC ,每套只有一个 JOB ,分别将主站的数据,分 type 同步到 3 个库,然后在 3 个分库,再起 flinkCDC ,实时处理数据 到 dws 层?
    noparking188
        29
    noparking188  
       2023-12-01 09:08:44 +08:00 via Android
    @Chayebao 我建议,Fink CDC 同步的库换成 tidb ,开 tiflash ,SQL 只用改下加 comment hint 使用 AP 引擎,tidb 可以基本视作 MySQL 使用,调度还是用 dolphin ,支撑不了的复杂计算加 spark 集群,dolphin 可以直接集成,你所有的任务只要写 SQL 就够了
    Chayebao
        30
    Chayebao  
    OP
       2023-12-01 09:21:49 +08:00
    @noparking188 意思是 我把我的 ETL 任务 sql 放到 tidb 上,还是用 dolphin 去调度? 那这个跟我使用 mysql 存储过程+dolphin 调度 一样的?
    XuHuan1025
        31
    XuHuan1025  
       2023-12-01 09:30:16 +08:00
    kettle 简单 没啥含金量,整别的就当带薪学习了
    noparking188
        32
    noparking188  
       2023-12-01 09:32:32 +08:00 via Android
    @Chayebao 一样的,你可以和老板吹嘘你用了 HTAP 分布式 NewSQL ,可以同时支撑海量数据实时和离线处理,开发和业务改动最小,基本写 SQL 就行,只是费点运维。今天剩下的时间你可以快速做个 POC 验证下
    Chayebao
        33
    Chayebao  
    OP
       2023-12-01 09:40:10 +08:00
    @noparking188 tidb 需要的资源呢,我们打算把 mysql 存储过程优化掉的原因就是因为存储过程太占资源,想用 java 去跑。
    waterwave
        34
    waterwave  
       2023-12-01 09:46:41 +08:00
    Data X 比较好,我的部门用得很不错。
    dif
        35
    dif  
       2023-12-01 09:49:34 +08:00
    新搞得建议 flink 吧。
    noparking188
        36
    noparking188  
       2023-12-01 09:53:12 +08:00 via Android
    @Chayebao 什么资源
    dayeye2006199
        37
    dayeye2006199  
       2023-12-01 09:57:46 +08:00 via Android
    没人提 airflow ??
    这个难道不是业界标准?
    yingqi1
        38
    yingqi1  
       2023-12-01 09:58:26 +08:00   ❤️ 1
    如果你们的团队规模较大,技术水平也不错,可以考虑使用 fink 。

    但是如果只有几个人,不建议采用如此复杂的技术栈(例如 Hadoop\fink ),因为这可能需要长时间等待才能看到成果。(举个例子,开源 fink cdc 如何整库同步,你需要多长时间解决)。

    小规模改动:结合 Airflow 和 dbt 。Airflow 可以处理调度和数据传输(可以利用现成的插件),而 dbt 则用于统一的数据转换( Transform )开发。dbt 是未来的趋势,但需要做好持续集成和持续部署( CI/CD ),可以参考楼上 GitLab 的开源方案(我们之前也参考 gitlab 的)。

    大规模改动:替换数据处理和数据仓库部分,但避免使用 Hadoop 生态系统,因为它过于复杂且难以快速看到成效。建议使用 ClickHouse 或其他 OLAP 类型数据库。

    不要使用 Dolphinscheduler ,部署都不知道多少台机器了,直接单机 airflow+mysql ,杠杠的。
    总的来说,把带薪学习的时间放在 DBT / CICD /DATAOPS 。
    yingqi1
        39
    yingqi1  
       2023-12-01 10:03:02 +08:00
    @dayeye2006199 我也觉得 airflow 算行业标准了。很感谢 Dolphinscheduler 开源,但是采用微服务把调度系统写的跟 web 后台管理系统似的,我们之前部署的毫无可用性。
    Chayebao
        40
    Chayebao  
    OP
       2023-12-01 10:22:33 +08:00
    @yingqi1 目前数据开发就我一个人,项目不大,所以只简单用了 flinkCDC 做同步,mysql 存储过程+Dolphinscheduler 做 ETL 。谢谢大佬 我研究一下。flinkCDC 已经定好了做实时同步了 可能就没法改了
    mywowo
        41
    mywowo  
       2023-12-01 10:23:11 +08:00
    异类, 用的 kestra
    Mindzy
        42
    Mindzy  
       2023-12-01 10:28:16 +08:00
    SeaTunnel + DolphinScheduler + StarRocks(Doris)
    yingqi1
        43
    yingqi1  
       2023-12-01 10:30:53 +08:00
    @Chayebao 就一个人,不要搞那么复杂,向钱看齐就好了。学 DBT/dataops 。真的要弄实时同步,也不要采用 finkCDC 了,直接用链接服务这类的工具。
    heyline
        44
    heyline  
       2023-12-01 10:32:16 +08:00
    你可以去 airbyte 文档看一眼,运行 docker 体验一下,我没用过 airflow ,我稍微看了一下 airflow ,感觉 airbyte 更简单一些 @Chayebao
    Chayebao
        45
    Chayebao  
    OP
       2023-12-01 10:34:04 +08:00
    @yingqi1 flinkCDC 已经用上了,没法换了,现在要改进的是 ETL 。3 套从库的 ETL ,mysql 的存储过程都是一样的,每套都有 10 多张表,我想揉到一起管理
    Chayebao
        46
    Chayebao  
    OP
       2023-12-01 10:34:30 +08:00
    @heyline 好的 研究研究
    haimianbihdata
        47
    haimianbihdata  
       2023-12-01 10:35:31 +08:00 via Android
    @Chayebao etl 现在一般只是拉数据。。同步数据了。。。计算可以放到数据库里面做,sql 调度分层这样
    Nich0la5
        48
    Nich0la5  
       2023-12-01 11:23:11 +08:00
    fine data link 挺好用,不过收费的
    liushawn1999
        49
    liushawn1999  
       2023-12-01 11:41:12 +08:00
    逛了一大圈发现原来 kettle 居然是最低级的,那我培训班的老师还教,就离谱,看来市面上用的工具比培训班教的差别好大啊,你们说的这些我一个都不知道
    smallpigzbl
        50
    smallpigzbl  
       2023-12-01 11:42:30 +08:00
    @heyline +1 DBT 是真的强
    woncode
        51
    woncode  
       2023-12-02 01:15:12 +08:00 via Android
    蹲一个,我们买了帆软的 FineDataLink ,确实比之前的 kettle 好用一些,可以聚合异源数据输入、基于日子实时同步等。
    x2ve
        52
    x2ve  
       355 天前
    @liushawn1999 #49 也算是招聘的要求之一,有这个经验也不错;数据工作本质是 SQLboy ,大头是业务分析,有行业经验搞起数据来才能更快入手。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2589 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:09 · PVG 11:09 · LAX 19:09 · JFK 22:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.