实时应用的Hbase

Hbase for real-time application

我想构建一个用于预测性维护的实时应用程序。 我考虑过将 Hbase 与 Phoenix 一起使用。 Phoenix 在 HBase 上提供 SQL 层。

我读到 Hbase 非常适合大数据,例如 1 亿行 plus++。 但是我的应用程序数据目前没有数据。如果一开始只有少量数据,Hbase数据库会如何反应? HBase 是实时 Web 应用程序的良好解决方案吗?

我想要一个类似 lambda 架构的系统。用于批处理和流处理。 HDFS 之上的 HBase 会是我的 OLTP 和 OLAP 系统吗?

因为 lambda 架构有一个 Batch 和 Speed 层。我可以将 HDFS 中的 HBase 数据也用于批处理并将结果保存回 Hbase 吗?

总的来说,我想知道 HBase 是否是构建实时 Web 应用程序的好解决方案,也可以进行分析。

HBase的选择一般基于以下几点:

交易量:数百万和数十亿优于数万和数百万

特性:当您不需要事务、二级索引和一些 RDBMS 特性时

硬件:确保您有足够的硬件用于区域服务器。它涉及大量维护

更具体:

由于其快速的随机读取查询,它最适合 Web 应用程序。但这只带有非常好的行键设计。这涉及您提前计划好最终查询并设计行键。如果您还有基于时间的数据并且您的查询严重依赖它,则需要特别注意行键设计。简而言之,您应该避免热点。一些信息 here

除此之外,可以使用 HBase 过滤器按其他列值进行选择,但选择很少,并且可能无法保证 Web 应用程序的响应时间。

此外,如果您的数据集(行)的列数可变,而且您不需要查询中的所有列,HBase 又是最佳选择

HBase 中可以进行服务器(区域)故障转移 - 因此您的数据将是安全的。

它可以用于批处理和流处理。当然,对于流式传输,它是大数据堆栈中最好的。然而,这也取决于您的流媒体管道——例如 kafka、spark streaming 或 storm 等。

既然你提到了 Phoenix,我想你可能想坚持 sql HBase 的观点——这可能会给你更好的选择。然而在核心,行键设计仍然是 HBase 性能的核心