2012-04-05 73 views
2

我对hadoop还是比较陌生的,通过做一些示例练习我已经学习了一些,但是我在练习中遇到了一个问题。很多应用程序似乎都适用于批处理(如日志文件数据),但我不确定hbase如何适应这里?Hadoop Hbase工作流程

将日志文件数据存储在hbase中然后处理并将其输出到某种其他存储格式是否很常见?将原始日志文件传入hadoop然后将输出存储在hbase中更常见吗?我想这里的真正问题通常是hbase用作hadoop的输入或输出,或者两者兼而有之?

回答

4

HBase适用于需要对数据进行随机,低延迟访问的任何地方,而Hadoop生态系统其余大部分内容都是按照批处理方式提供的。

要使用您的日志解析示例,您可以通过MapReduce处理存储在HDFS中的日志文件,但接下来呢?想必你会看到一段时间内的流量模式(分钟,小时,天,等等)。如果您将结果以时间戳存储在HBase中作为行键,那么您可以高效地查询特定的日期范围(例如,“向我显示上周的所有数据”。)HBase将以比经典快得多的速度返回MapReduce,因为它不需要扫描上个月的所有数据,去年等,而MapReduce会。

+0

这是有道理的。您是否有希望将输入数据存储在hbase中的情况? – 2012-04-05 21:01:20

+0

当然 - 如果你有多台机器,比如HBase,对于处理这个问题是相当不错的。如果您正在运行MapReduce作业来处理日志,那么如果这些作业在HBase RegionServers上同时运行Mappers和Reducers(输入和输出),那么这些作业将更有效率,因为那样数据不太可能需要复制网络到目标存储节点。 – 2012-04-05 21:12:58

+0

很酷,谢谢。欣赏输入。 – 2012-04-05 21:17:05

2

Flume是很多人将他们的日志文件连接起来以便在数据生成时对其进行实时处理的方式。您可以从每个日志文件创建一个源文件,并与您的HBase实例同步

另请参见OpenTSDB,因为它们有一个非常好的系统,用于在HBase之上存储群集度量标准。您可能可以重新使用一些基础架构来执行日志分析。