我目前有一个 Hadoop 集群,我在其中存储大量日志,我在这些日志上运行 pig 脚本来计算聚合分析。我还有一个存储生产数据的 Mongo 集群。
我最近被置于一个需要做大量一次性分析查询的位置,或者让其他人来做这些查询。这些查询经常需要同时使用生产数据和日志数据,所以无论我使用什么,我都希望将所有东西都放在一个地方。我的日志数据是 json 格式,大约是我的 prod 数据大小的 10 倍。以下是我看到的 Mongo 和 HBase 的优缺点:
Mongo 优点/ HBase 缺点:
- 由于日志数据是 JSON 格式的,我可以很容易地将它输入 Mongo,并且我可以通过 FluentD 之类的东西实时执行此操作。
- 与我一起工作的大多数人已经有编写 Mongo 查询的经验,因为需要使用产品数据,因此在 Mongo 上建立一个分析数据库对每个人来说都非常简单。
- 我对 Hbase 的了解比 Mongo 少得多。
- 不知道以 JSON 格式或从 Mongo 获取数据到 Hbase 有多么容易/困难。我想这还不错,但是我看不到太多文档。
HBase 优点/Mongo 缺点:
- 我的日志数据比我的 prod 数据大得多,因此将其存储在 hadoop 和 mongo 中会比将 prod 数据存储在 hadoop 和 mongo 中要昂贵得多。
- 我可以在我已经运行的 Hadoop 集群之上构建 HBase,并在其中放置我的产品数据,而无需添加许多额外的机器。如果我选择 Mongo,我需要一个全新的 Mongo 集群。
- 我可以在 Hbase 上使用 Phoenix 来允许使用简单的 SQL 语法来访问我们所有的数据,但我不确定这对于基于文档的多级数据会有多笨拙。
我目前对 Hbase 知之甚少,而且我不会认为自己是 Mongo 专家,所以我可能遗漏了很多。
那么,我错过了什么,哪些适合我的情况?