我目前有一个Hadoop集群,我在其中存储大量日志,我运行猪脚本来计算汇总分析。我还有一个Mongo集群,用于存储生产数据。
我最近被置于一个需要进行大量一次性分析查询或让其他人进行分析的位置。这些查询经常需要同时使用生产数据和日志数据,所以无论我使用什么,我都希望将所有内容放在一个地方。我的日志数据是json,大约是我的prod数据的10倍。以下是我看到的Mongo和HBase的优缺点:
Mongo Pros / HBase缺点:
HBase Pros / Mongo缺点:
我目前对Hbase知之甚少,我不认为自己是Mongo专家,所以我可能会错过很多。
那么,我错过了什么,哪种情况适合我的情况呢?
答案 0 :(得分:2)
首先,你应该使用你已经可以处理的东西。因此,Mongo DB似乎是一个不错的选择,特别是当数据已经是json格式时。
另一方面,我使用HBase已经有一段时间了,虽然有很多行但读取性能很惊人,我真的不知道Mongo DB与Hadoop是否有任何良好和快速的集成。 HBase是Hadoop数据库,因此预定与Hadoop一起使用。
如果可以通过(在HBase Rowkey中)索引日志:
producing_program_identifier, timestamp, ...
HBase可以很好地用于此查询模式。 但如果您决定使用HBase,请使用 phoenix framwork,它将节省您使用熟悉的接口(如jdbc和类似SQL的查询)的时间。它还提供简单的聚合函数(count,avg,max,min),这可能就足够了。
答案 1 :(得分:0)
根据您的说法,基于mongoDB的解决方案似乎最适合您。
HBase非常通用,您可以将其用于满足您的产品需求以及您的分析需求,但是通用SQL功能(在Phoenix,Cloudera的Impala等)处于初期阶段并且标准的HBase方式可以获得高查询性能(设计读取的数据结构)将花费很多精力(特别是因为你没有HBase的经验)。
顺便说一句,它可能适用于您使用map /减少预先聚合的数据,然后将其加载到MongoDB中,从而利用您当前的设置而不是改变它