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

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

  •  1
     
  •   Chayebao · 357 天前 · 4058 次点击
    这是一个创建于 357 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在公司的 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  
       357 天前
    kettle 不建议,我觉得不好用,速度慢 bug 多,老是报莫名其妙的错,数据量小还可以凑合用一下
    ChenKeLiang
        2
    ChenKeLiang  
       357 天前
    dataworks
    EarthChild
        3
    EarthChild  
       357 天前
    @awen233333 #1 那你推荐啊!
    EarthChild
        4
    EarthChild  
       357 天前
    @ChenKeLiang #2 不要阿里系的。
    sss15
        5
    sss15  
       357 天前
    盲推一波 flink cdc
    heyline
        6
    heyline  
       357 天前
    可以试试 airbyte + dbt 的方案
    yngzij
        7
    yngzij  
       357 天前
    datax 可以考虑一下
    awen233333
        8
    awen233333  
       357 天前
    @EarthChild 我推荐的就是你不想用的😂
    dot2
        9
    dot2  
       357 天前
    dolphinscheduler
    haimianbihdata
        10
    haimianbihdata  
       357 天前 via Android
    海豚调度。datax flink cdc
    hengtong
        11
    hengtong  
       357 天前 via iPhone
    蹲一个
    hengtong
        12
    hengtong  
       357 天前 via iPhone
    dataworks 挺好的 就是贵
    ursash
        13
    ursash  
       357 天前
    dbt 考虑一下?
    kkadmin
        14
    kkadmin  
       357 天前
    Doris/StarRocks + Dolphinscheduler
    ctrlaltdeletel
        15
    ctrlaltdeletel  
       357 天前
    ddkk1112
        16
    ddkk1112  
       357 天前
    mysql select 同步的话,datax 还不错
    bin 同步考虑 canal
    如果不想用阿里的,自己用 python 写同步脚本,也很快
    tyrantlucifer
        17
    tyrantlucifer  
       357 天前
    火山引擎 DataLeap 开发套件可以了解一下
    leonhao
        18
    leonhao  
       357 天前
    开 binlog 最省心
    dlmy
        19
    dlmy  
       357 天前
    强烈推荐 FlinkCDC ,大数据项目每天处理 5 亿条数据,处理流程如下:ODS -> DWD -> DWM -> DWS -> ADS ,暂时没发现什么问题
    iv8d
        20
    iv8d  
       356 天前
    kettle
    noparking188
        21
    noparking188  
       356 天前 via Android
    @heyline 这个好用吗,体验咋样
    Chayebao
        22
    Chayebao  
    OP
       356 天前
    @haimianbihdata 我目前就是有用到 海豚调度去调度存储过程,flinkCDC 做的数据同步,但是 etl 方面要怎么做 没太理解,大佬细说
    Chayebao
        23
    Chayebao  
    OP
       356 天前
    @dlmy 我现在是用的 flinkCDC 同步,你的意思是在同步的同时 又去处理数据,做汇总?
    noparking188
        24
    noparking188  
       356 天前 via Android
    BCD 库换成 tidb ,开 tiflash ,调度用 dolphin 或者 airflow 之类,回写实时可以用 ticdc
    tidb 生态全方位兼容 MySQL
    Chayebao
        25
    Chayebao  
    OP
       356 天前
    @dlmy 我这边的情况是这样的, 有一个主站,每张表有‘type’字段 A,B,C 。 我用 flinkCDC 把 type 不同的数据 分离,分别同步到 A,B,C 库。接着,在各自的库,用 mysql 存储过程+海豚调度 处理数据,汇总,做 DWS 。如果不使用 mysql 存储过程,也就是要 再各部署 3 套 flinkCDC ,用 job 去做数据汇总么,还是说写好 job , 丢到海豚调度上处理。目前海豚调度能使用 flink 的那个功能我还不知道怎么使用。
    noparking188
        26
    noparking188  
       356 天前 via Android
    @noparking188 你只有 TP 的存储系统,你要加一个 AP 的存储系统做 ETL ,你现在的架构算是传统数仓,且远比不上 SQL Server ,SQL Server 那一套现在都逐渐被淘汰了,AP 数据库支撑不了的处理,你加 Spark ,tidb 生态有 tispark
    Chayebao
        27
    Chayebao  
    OP
       356 天前
    @noparking188 我们这边需求有点不一样 BCD 库要能单独拿出来,所以是 3 个 mysql 地址。
    Chayebao
        28
    Chayebao  
    OP
       356 天前
    @dlmy 我现在启动了 3 套 flinkCDC ,每套只有一个 JOB ,分别将主站的数据,分 type 同步到 3 个库,然后在 3 个分库,再起 flinkCDC ,实时处理数据 到 dws 层?
    noparking188
        29
    noparking188  
       356 天前 via Android
    @Chayebao 我建议,Fink CDC 同步的库换成 tidb ,开 tiflash ,SQL 只用改下加 comment hint 使用 AP 引擎,tidb 可以基本视作 MySQL 使用,调度还是用 dolphin ,支撑不了的复杂计算加 spark 集群,dolphin 可以直接集成,你所有的任务只要写 SQL 就够了
    Chayebao
        30
    Chayebao  
    OP
       356 天前
    @noparking188 意思是 我把我的 ETL 任务 sql 放到 tidb 上,还是用 dolphin 去调度? 那这个跟我使用 mysql 存储过程+dolphin 调度 一样的?
    XuHuan1025
        31
    XuHuan1025  
       356 天前
    kettle 简单 没啥含金量,整别的就当带薪学习了
    noparking188
        32
    noparking188  
       356 天前 via Android
    @Chayebao 一样的,你可以和老板吹嘘你用了 HTAP 分布式 NewSQL ,可以同时支撑海量数据实时和离线处理,开发和业务改动最小,基本写 SQL 就行,只是费点运维。今天剩下的时间你可以快速做个 POC 验证下
    Chayebao
        33
    Chayebao  
    OP
       356 天前
    @noparking188 tidb 需要的资源呢,我们打算把 mysql 存储过程优化掉的原因就是因为存储过程太占资源,想用 java 去跑。
    waterwave
        34
    waterwave  
       356 天前
    Data X 比较好,我的部门用得很不错。
    dif
        35
    dif  
       356 天前
    新搞得建议 flink 吧。
    noparking188
        36
    noparking188  
       356 天前 via Android
    @Chayebao 什么资源
    dayeye2006199
        37
    dayeye2006199  
       356 天前 via Android
    没人提 airflow ??
    这个难道不是业界标准?
    yingqi1
        38
    yingqi1  
       356 天前   ❤️ 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  
       356 天前
    @dayeye2006199 我也觉得 airflow 算行业标准了。很感谢 Dolphinscheduler 开源,但是采用微服务把调度系统写的跟 web 后台管理系统似的,我们之前部署的毫无可用性。
    Chayebao
        40
    Chayebao  
    OP
       356 天前
    @yingqi1 目前数据开发就我一个人,项目不大,所以只简单用了 flinkCDC 做同步,mysql 存储过程+Dolphinscheduler 做 ETL 。谢谢大佬 我研究一下。flinkCDC 已经定好了做实时同步了 可能就没法改了
    mywowo
        41
    mywowo  
       356 天前
    异类, 用的 kestra
    Mindzy
        42
    Mindzy  
       356 天前
    SeaTunnel + DolphinScheduler + StarRocks(Doris)
    yingqi1
        43
    yingqi1  
       356 天前
    @Chayebao 就一个人,不要搞那么复杂,向钱看齐就好了。学 DBT/dataops 。真的要弄实时同步,也不要采用 finkCDC 了,直接用链接服务这类的工具。
    heyline
        44
    heyline  
       356 天前
    你可以去 airbyte 文档看一眼,运行 docker 体验一下,我没用过 airflow ,我稍微看了一下 airflow ,感觉 airbyte 更简单一些 @Chayebao
    Chayebao
        45
    Chayebao  
    OP
       356 天前
    @yingqi1 flinkCDC 已经用上了,没法换了,现在要改进的是 ETL 。3 套从库的 ETL ,mysql 的存储过程都是一样的,每套都有 10 多张表,我想揉到一起管理
    Chayebao
        46
    Chayebao  
    OP
       356 天前
    @heyline 好的 研究研究
    haimianbihdata
        47
    haimianbihdata  
       356 天前 via Android
    @Chayebao etl 现在一般只是拉数据。。同步数据了。。。计算可以放到数据库里面做,sql 调度分层这样
    Nich0la5
        48
    Nich0la5  
       356 天前
    fine data link 挺好用,不过收费的
    liushawn1999
        49
    liushawn1999  
       356 天前
    逛了一大圈发现原来 kettle 居然是最低级的,那我培训班的老师还教,就离谱,看来市面上用的工具比培训班教的差别好大啊,你们说的这些我一个都不知道
    smallpigzbl
        50
    smallpigzbl  
       356 天前
    @heyline +1 DBT 是真的强
    woncode
        51
    woncode  
       356 天前 via Android
    蹲一个,我们买了帆软的 FineDataLink ,确实比之前的 kettle 好用一些,可以聚合异源数据输入、基于日子实时同步等。
    x2ve
        52
    x2ve  
       346 天前
    @liushawn1999 #49 也算是招聘的要求之一,有这个经验也不错;数据工作本质是 SQLboy ,大头是业务分析,有行业经验搞起数据来才能更快入手。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1178 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:19 · PVG 02:19 · LAX 10:19 · JFK 13:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.