【问题标题】:Copy datas from SQLDB into hadoop [closed]将数据从 SQLDB 复制到 hadoop [关闭]
【发布时间】:2020-11-17 08:46:50
【问题描述】:

我正在研究一个用例,我们要将数据从 SQL 数据库(600TB ~100 个表)移动到转换格式到 hadoop。我们没有在 SQL DB 中启用日志。我们决定将数据复制为数据集市视图并每周刷新此视图。复制的数据每周都会被擦除以重写。

此 SQL 数据库用于源自数据湖的报告目的。这个 OLTP 数据库是我们正在逐步替换的旧系统。被复制的数据集每周都会被删除并再次复制(刷新)。

  • 80% 的数据副本是直接的,没有任何转换。
  • 20% 已重新设计。

我们确定了 3 个选项:

  1. AirFlow + Beam 用于处理
  2. ETL (informatica) 被排除在外
  3. Kafka(连接、流式传输、沉入 hadoop)可选 CDC Debezium

您认为关于性能、总体交付时间、数据架构的最佳方法是什么?

感谢您的帮助!

【问题讨论】:

  • 您真的打算每周删除并重新加载 600TB 的数据吗?从一周到另一周的数据集是否没有重叠?有多少数据转​​换 - 它基本上是源表的直接副本还是基本重新设计(OLTP 到 OLAP)?为什么要将数据从 SQL DB 移到 Hadoop?
  • 感谢您的回答。此 SQL DB 用于从数据湖派生的报告目的。这个 OLTP 数据库是我们正在逐步替换的旧系统。复制的数据集每周都会被删除并再次复制(刷新)。 80% 的数据副本是直接的。 20% 已重新设计。

标签: hadoop apache-kafka architecture apache-beam debezium


【解决方案1】:

我的想法——它们的价值:

  1. 我绝对不会希望每周复制 600TB。鉴于这些数据中的大部分不会每周都发生变化(我假设),那么您应该只复制已更改的数据。由于您在 Hadoop 中的数据将被分区,因此您主要是将新数据插入新分区 - 对于那些已更改的记录,您只需删除/重新加载几个分区
  2. 我会将所有必要的数据原样复制到 Hadoop 中的暂存区(不进行转换),然后在 Hadoop 平台上对其进行处理以生成您实际需要的数据 - 然后您可以根据需要删除暂存区数据
  3. 数据处理工具 - 如果您已经在公司内使用过特定工具集,请使用该工具;除非现有工具中没有所需的关键功能,否则不要增加正在使用的工具集。如果这一个过程就是您将要使用此工具集的全部,那么您使用哪一个可能并不重要 - 选择一个学习/部署最快的。如果要将此工具集扩展到其他用例,那么我肯定会使用专用的 ETL/ELT 工具,而不是使用编码解决方案(您为什么放弃 Informatica 作为解决方案?)

以下绝对是意见……

如果您正在构建一个新的分析平台,我很惊讶您正在使用 Hadoop。 Hadoop 是一种遗留技术,已被更现代、更强大的云数据平台(Snowflake 等)取代。

此外,Hadoop 是一个糟糕的平台,可以尝试在其上运行分析(它可以作为一个数据湖来保存数据,同时您可以决定要使用它做什么)。尝试在其上运行与数据分区方式不一致的查询会带来非常糟糕的性能(对于非平凡的数据集大小)。例如,如果您的交易按日期分区,那么运行查询以汇总上周的交易价值将很快运行。但是,运行查询来汇总特定帐户(或帐户组)的交易会非常糟糕

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    相关资源
    最近更新 更多