【问题标题】:Is HBase right for storing and querying log data?HBase 适合存储和查询日志数据吗?
【发布时间】:2011-04-21 01:16:46
【问题描述】:
我正在考虑使用 HBase 来存储日志(网络日志数据),每个日志将有大约 20 个不同的值(比如说列),我想运行基于这些列过滤结果的查询。
我最初的想法是在每列下多次保存每个日志(单元格),这是日志中每个字段的值。这将导致数据大小增加约 20 倍,但我认为这会很好地提高性能。行键将是带有前缀的时间戳,即源 ID。
每个源会产生大约 40-100M 的日志行(可能有数万个源)。
我还需要低延迟,可能低于 10 秒(因此目前无法选择 Hive 等解决方案)
您认为这是正确的架构设计吗?如果不是您认为正确的那个,或者我应该使用其他东西(什么)?
感谢您的所有回答。
【问题讨论】:
标签:
logging
hadoop
hbase
schema-design
【解决方案1】:
我们正在对博客做类似的事情。我们正在做的事情比您提供的案例稍微复杂一些,但我可以看到可能遇到的问题的相似之处。
我们在 hive 中创建表来存储我们收集的各种数据,然后运行查询并将该数据加载到 HBase 预聚合的表中。
这有助于减少数据增加和重复的程度,因为原始数据只存储一次,然后存储您想要的聚合。使用 Hive 存储原始数据可以更灵活地按不同维度和数据的各种操作进行聚合。
根据您的具体目标,HBase 可能是存储的唯一要求,但如果目标是聚合和分析数据,我认为 Hive 和 HBase 可以更好地协同工作。
如果您的结果不需要“实时”,那么仅使用 hive 存储原始数据并从查询生成报告也可能是可接受的解决方案。
我绝不是 HStack 设置的权威资源。我什至不是我们现有系统设计的关键成员。我遇到了一种情况,我们无法在 hbase 中存储数据并检索它,同时保持 hbase 的最佳设置/组织。我们需要存储数据以检索数据的方法会在其他领域造成很多麻烦。
我希望我的漫谈能以某种方式提供一些帮助。 :)