Mongodb 分析数据库的HBase或Mongo(如果已经使用Hadoop)?

Mongodb 分析数据库的HBase或Mongo(如果已经使用Hadoop)?,mongodb,hadoop,hbase,hdfs,Mongodb,Hadoop,Hbase,Hdfs,我目前有一个Hadoop集群,在那里我存储了大量日志,在这些日志上我运行pig脚本来计算聚合分析。我还有一个Mongo集群,在那里我存储生产数据 我最近处于一个位置,我需要做很多一次性的分析查询,或者让其他人来做。这些查询经常需要同时使用生产数据和日志数据,所以无论我使用什么,我都希望将所有内容都放在一个地方。我的日志数据是json格式的,大约是prod数据的10倍。以下是我看到的Mongo和HBase的优点/缺点: Mongo的优点/HBase的缺点: 因为日志数据是JSON格式的,所以我可以

我目前有一个Hadoop集群,在那里我存储了大量日志,在这些日志上我运行pig脚本来计算聚合分析。我还有一个Mongo集群,在那里我存储生产数据

我最近处于一个位置,我需要做很多一次性的分析查询,或者让其他人来做。这些查询经常需要同时使用生产数据和日志数据,所以无论我使用什么,我都希望将所有内容都放在一个地方。我的日志数据是json格式的,大约是prod数据的10倍。以下是我看到的Mongo和HBase的优点/缺点:

Mongo的优点/HBase的缺点:

  • 因为日志数据是JSON格式的,所以我可以很容易地将其导入Mongo,并且可以通过FluentD之类的工具实时地完成这项工作
  • 与我共事的大多数人都有编写Mongo查询的经验,因为他们需要使用prod数据,所以在Mongo上建立分析数据库对每个人来说都非常简单
  • 我对Hbase的了解比Mongo少得多
  • 不知道用JSON或从Mongo获取数据到Hbase有多容易/难。我想这还不错,但我没有看到太多文档
  • HBase的优点/Mongo的缺点:

  • 我的日志数据比prod数据大得多,因此在hadoop和mongo中存储日志数据比在hadoop和mongo中存储prod数据要昂贵得多
  • 我可以在已经运行的Hadoop集群上构建HBase,并将我的prod数据放在其中,而无需添加许多额外的机器。如果我使用Mongo,我需要一个全新的Mongo集群
  • 我可以在Hbase上使用Phoenix来允许一个简单的SQL语法来访问我们的所有数据,但我不确定这对于基于文档的多级数据会有多笨拙
  • 我目前对HBASE了解甚少,我不认为自己是Mongo专家,所以我可能错过了很多。
    那么,我遗漏了什么,哪一个适合我的情况呢?

    从您的说法来看,基于mongoDB的解决方案最适合您

    HBase的用途非常广泛,您可以让它满足您的产品需求和分析需求,但是通用SQL功能(在Phoenix、Cloudera的Impala和其他产品中)还处于起步阶段,而获得高查询性能的标准HBase方法(为读取设计数据结构)将花费大量精力(尤其是因为您没有HBase方面的经验)


    顺便说一句,您可以使用map/reduces预聚合数据,然后将其加载到MongoDB中,从而更好地利用您当前的设置,而不是以任何方式对其进行更改。首先,您应该使用您已经可以处理的内容。因此,Mongo DB似乎是一个不错的选择,尤其是当数据已经在jso中时n格式

    另一方面,我使用了HBase很长一段时间,虽然有很多行,但读取性能非常惊人,我真的不知道Mongo DB与Hadoop是否有良好的快速集成。 HBase是Hadoop数据库,因此它注定要与Hadoop一起工作

    如果日志可以(在HBase行键中)索引:

    HBase可以很好地用于此查询模式。 但如果您决定使用HBase,请使用
    ,它将节省您使用熟悉的接口(如jdbc和类似sql的查询)的时间。它还提供简单的聚合函数(count、avg、max、min)这可能就足够了。

    您是说在MongoDB和Hadoop中存储原始日志以进行查询,还是在Hadoop中进行某种聚合并将聚合结果存储在MongoDB中?我想将原始日志存储在一个或另一个中,以便在不进行复杂聚合的情况下运行查询(通常我可以充分利用索引)很快。不管我怎么做,我仍然需要继续在HDFS中存储原始日志,以便在hadoop上运行复杂的分析查询。我知道我可以通过Mongo的聚合框架或使用Mongo的hadoop连接器来完成其中的一部分,但前者不足以满足我的情况,而后者由于所有数据传输而变得缓慢从Mongo到HDFS。离题:几天前我在MongoSF上看到了你的演讲,真的很好!嗯……似乎MongoDB查询比你使用HBase做的要灵活得多(但我显然对MongoDB和所有查询方式有偏见)。离题:谢谢!:)什么类型的“分析查询”你想做什么?您需要什么查询性能?@arnnrotem Gal Oz ms到秒。这些是通常使用索引的简单查询。类似SQL,但数据量非常大。tl;dr:你希望在Mongo上用毫秒到秒就能完成的事情。
    producing_program_identifier, timestamp, ...