这是一个非常广泛的问题,但我会尝试给出一些答案。
Hadoop 可以是数据源、数据仓库或“数据湖”,是可以从中提取仓库和集市的数据存储库。
Hadoop 和基于 RDBMS 的数据仓库之间的界限越来越模糊。随着 SQL-on-Hadoop 成为现实,与基于 Hadoop 的数据交互变得越来越容易。但是,为了有效,数据中必须有结构。
Hadoop/DW 交互的一些示例:
- Microsoft 应用平台系统,在 SQL Server 和 Hadoop 之间具有 Polybase 交互
- Impala (Cloudera)、Stinger (Hortonworks) 和其他提供 SQL-on-Hadoop 的公司
- Actian 和 Vertica (HP) 在 Hadoop 上提供与 RDBMS 兼容的 MPP
也就是说,Hadoop DW 仍然不成熟。它的性能不如基于 RDBMS 的 DW,缺乏许多安全和操作特性,也缺乏 SQL 能力。在走这条路之前,请仔细考虑您的需求。
您应该问的另一个问题是您是否真的需要这种类型的平台。任何 RDBMS 都可以处理 3-5Tb 的数据。SQL Server 和 PostgreSQL 是可以在商品硬件上处理 DW 且可忽略管理的两个平台示例。
这些相同的 RDBMS 可以处理 100Tb 的工作负载,但在这种规模下它们需要更多的关注和支持。
MPP RDBMS 设备可处理 PB 范围内的数据工作负载,在扩展时具有较低的管理和运营开销。我怀疑你能达到这样的规模,很少有公司这样做:) 如果复杂查询的速度是你最重要的因素,你可能会选择 MPP 设备来处理更小的数据量。由于这个原因,我已经看到 MPP 设备部署在小至 5Tb 的数据量上。
根据加载技术,您可能会发现基于 RDBMS 的 DW 的加载速度比 Hadoop 快。例如,我每秒将数十万行加载到 PostgreSQL 中,而在 SQL Server 中则略少。在 Hadoop 中实现相同结果需要更长的时间,因为我必须摄取文件,在 Hive 中建立它,然后将其移动到 Parquet 以获得类似水平的输出性能。随着时间的推移,我希望这会改变对 Hadoop 的青睐,但它还没有完全实现。
你提到了维度建模。如果您的星型模式由事务事实表和 SCD0-SCD1 维度组成,因此需要仅插入处理,那么您可能会成功使用 SQL-on-Hadoop。如果您需要更新事实(累积快照)或维度(SCD2、SCD3),您可能会在能力和性能方面遇到困难——许多实现还不支持 UPDATE 查询,而且那些实现的速度很慢。
抱歉,没有简单的“做这个!” 答案,但这是一个不成熟领域中的复杂主题。我希望这些评论能帮助你思考。