我对 hadoop 还比较陌生,我通过做一些示例练习来了解它,但我对它在实践中的使用方式有疑问。许多应用程序似乎都面向批处理(例如日志文件数据),但我不确定 hbase 如何适合这里?
将日志文件数据存储在hbase中然后处理并输出为其他存储格式是否很常见?将原始日志文件传递到 hadoop 然后将输出存储在 hbase 中是否更常见?我想我在这里真正的问题通常是 hbase 用作 hadoop 的输入或输出,或两者兼而有之?
HBase 适用于您需要随机、低延迟访问数据的任何地方,而 Hadoop 生态系统的其余大部分都是面向批处理的,正如您所提到的。
使用您的日志解析示例,您可以通过 MapReduce 处理存储在 HDFS 中的日志文件,但是接下来呢?大概您想查看一段时间内的流量模式(分钟、小时、天等)。如果将结果以时间戳作为行键存储在 HBase 中,那么您可以有效地查询特定日期范围(例如,“显示上周的所有数据。”)HBase 将比经典更快地返回MapReduce,因为它不需要扫描上个月、去年等的所有数据,而 MapReduce 则需要。
Flume 是很多人连接他们的日志文件以在数据生成时对其进行实时处理的方式。您可以从每个日志文件创建一个源并同步到您的 HBase 实例
还要看看 OpenTSDB,因为他们有一个非常好的系统,可以在 HBase 之上存储集群指标。您也许可以重用他们的一些基础设施来进行日志分析。