我正在考虑使用HBase存储日志(Web日志数据),每个日志将具有大约20个不同的值(比方说列),我想运行基于这些列过滤结果的查询。

我最初的想法是将每个日志(单元格)多次保存在每一列下,这是日志中每个字段的值。这将导致数据大小增加大约20倍,但是我认为这可以很好地提高性能。行键将是带有源ID前缀的时间戳。
每个源将生成大约40-100M日志行(可能有数万个源)。
我还需要低延迟,可能不到10秒(因此,当前无法选择Hive之类的解决方案)

您认为这是正确的架构设计吗?如果不是,您认为哪种方法是正确的,或者我应该使用其他方法(做什么)?
感谢您的所有答复。

最佳答案

我们正在对博客进行类似的操作。我们正在做的事情比您介绍的情况要复杂一些,但是我可以看到可能会遇到的问题的相似之处。

我们在 hive 中创建了表来存储我们正在收集的各种数据,然后有一项工作来运行查询并将数据加载到预先汇总的HBase中的表中。

这有助于降低数据增加和重复的级别,因为原始数据仅存储一次,然后存储所需的聚合。使用Hive来存储原始数据,可以更轻松地灵活地通过数据的不同维度和各种操作进行聚合。

根据您的特定目标,HBase可能是存储的唯一要求,但是如果目标是聚合和分析数据,我认为Hive和HBase可以更好地协同工作。

如果不需要“实时”获得结果,则仅使用hive来存储原始数据并根据查询生成报告也是一种可以接受的解决方案。

我绝不是HStack设置的权威资源。在我们现有系统的设计中,我什至都不是关键成员。我遇到了一种情况,我们无法在hbase中存储数据并在保持hbase最佳设置/组织的同时检索数据。我们需要使用存储数据来检索数据的方法,这会在其他 Realm 引起很多麻烦。

我希望我的闲逛以某种方式提供一些帮助。 :)

09-04 08:01
查看更多