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

182 天前
 Chayebao

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

3200 次点击
所在节点    程序员
52 条回复
noparking188
181 天前
@heyline 这个好用吗,体验咋样
Chayebao
181 天前
@haimianbihdata 我目前就是有用到 海豚调度去调度存储过程,flinkCDC 做的数据同步,但是 etl 方面要怎么做 没太理解,大佬细说
Chayebao
181 天前
@dlmy 我现在是用的 flinkCDC 同步,你的意思是在同步的同时 又去处理数据,做汇总?
noparking188
181 天前
BCD 库换成 tidb ,开 tiflash ,调度用 dolphin 或者 airflow 之类,回写实时可以用 ticdc
tidb 生态全方位兼容 MySQL
Chayebao
181 天前
@dlmy 我这边的情况是这样的, 有一个主站,每张表有‘type’字段 A,B,C 。 我用 flinkCDC 把 type 不同的数据 分离,分别同步到 A,B,C 库。接着,在各自的库,用 mysql 存储过程+海豚调度 处理数据,汇总,做 DWS 。如果不使用 mysql 存储过程,也就是要 再各部署 3 套 flinkCDC ,用 job 去做数据汇总么,还是说写好 job , 丢到海豚调度上处理。目前海豚调度能使用 flink 的那个功能我还不知道怎么使用。
noparking188
181 天前
@noparking188 你只有 TP 的存储系统,你要加一个 AP 的存储系统做 ETL ,你现在的架构算是传统数仓,且远比不上 SQL Server ,SQL Server 那一套现在都逐渐被淘汰了,AP 数据库支撑不了的处理,你加 Spark ,tidb 生态有 tispark
Chayebao
181 天前
@noparking188 我们这边需求有点不一样 BCD 库要能单独拿出来,所以是 3 个 mysql 地址。
Chayebao
181 天前
@dlmy 我现在启动了 3 套 flinkCDC ,每套只有一个 JOB ,分别将主站的数据,分 type 同步到 3 个库,然后在 3 个分库,再起 flinkCDC ,实时处理数据 到 dws 层?
noparking188
181 天前
@Chayebao 我建议,Fink CDC 同步的库换成 tidb ,开 tiflash ,SQL 只用改下加 comment hint 使用 AP 引擎,tidb 可以基本视作 MySQL 使用,调度还是用 dolphin ,支撑不了的复杂计算加 spark 集群,dolphin 可以直接集成,你所有的任务只要写 SQL 就够了
Chayebao
181 天前
@noparking188 意思是 我把我的 ETL 任务 sql 放到 tidb 上,还是用 dolphin 去调度? 那这个跟我使用 mysql 存储过程+dolphin 调度 一样的?
XuHuan1025
181 天前
kettle 简单 没啥含金量,整别的就当带薪学习了
noparking188
181 天前
@Chayebao 一样的,你可以和老板吹嘘你用了 HTAP 分布式 NewSQL ,可以同时支撑海量数据实时和离线处理,开发和业务改动最小,基本写 SQL 就行,只是费点运维。今天剩下的时间你可以快速做个 POC 验证下
Chayebao
181 天前
@noparking188 tidb 需要的资源呢,我们打算把 mysql 存储过程优化掉的原因就是因为存储过程太占资源,想用 java 去跑。
waterwave
181 天前
Data X 比较好,我的部门用得很不错。
dif
181 天前
新搞得建议 flink 吧。
noparking188
181 天前
@Chayebao 什么资源
dayeye2006199
181 天前
没人提 airflow ??
这个难道不是业界标准?
yingqi1
181 天前
如果你们的团队规模较大,技术水平也不错,可以考虑使用 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
181 天前
@dayeye2006199 我也觉得 airflow 算行业标准了。很感谢 Dolphinscheduler 开源,但是采用微服务把调度系统写的跟 web 后台管理系统似的,我们之前部署的毫无可用性。
Chayebao
181 天前
@yingqi1 目前数据开发就我一个人,项目不大,所以只简单用了 flinkCDC 做同步,mysql 存储过程+Dolphinscheduler 做 ETL 。谢谢大佬 我研究一下。flinkCDC 已经定好了做实时同步了 可能就没法改了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/996575

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX