1

我想编写一个应用程序,它能够从大型生产系统的监控数据中生成报告并启用交互式数据分析(类似 OLAP)。(我知道,前面有一些有问题的权衡决定,但我们暂时将它们放在一边。)
我确定了基本技术堆栈的以下可能性:

  • Hadoop:用于分布式文件系统和 MapReduce 框架
  • 数据库:HBase 或 Cassandra 以启用随机读取
  • 分析:用于高级分析的 Hive 或 Pig

根据我的研究,我倾向于认为 Hadoop/HBase/Hive 将是最常见的组合。但这只是基于一些论坛问题和产品演示。
其他人可以分享他对这个问题的一般看法吗?
或者更具体地回答以下问题:

  • 一般来说,HBase 是否比 Cassandra 更适合大数据分析(写入与读取性能)?
  • 使用数据库值得还是我应该直接在 Hadoop 上找到我的分析层?
  • 哪些数据库/分析工具组合是最“自然”的?
  • 我错过了什么很酷的东西吗?
4

2 回答 2

3

恕我直言,

1- 考虑到所有最近的进步,仅根据您的读/写需求来决定是使用 HBase 还是 Cassandra 有点困难。您可以调整这些工具以适应您的读/写要求。在做出任何决定时,您应该考虑更多的事情。

2-此时您似乎不需要数据库。您可以将存储在 HDFS 中的数据映射到 Hive 表。然后在需要长时间运行的批处理过程时运行 Hive 查询。如果您打算对数据的某些部分执行实时即席查询,您可以在相同的 Hive 表上使用 Cloudera Impala(何时real-timeness很重要)。Impala 使用相同的 Hive 元数据。所以你不必担心这一点。

3- 如果您打算在 Hadoop 平台上工作,那么 HDFS+Hive+HBase+Pig 会很好。我并不是说 Cassandra 不好,但 Hbase 是为与 Hadoop 一起使用而开发的。

4-那里有很多“酷”的东西,但最好保持低数字。更多工具意味着更多配置、更多设置和更多管理(更令人头疼)。因此,只从那些真正需要的东西开始,只有在您认为确实需要它或者它会给您带来一些额外优势时才添加一个特定的工具。但是您可能想看看诸如此类的工具Impala, Storm, Flume, Spark/shark

AFAIK,HBase 是为在 Hadoop 集群之上使用而构建的。毫无疑问,它会消耗一些内存,但这不应该成为您的应用程序的瓶颈。您只需要正确调整所有内容。但是,只有当您需要对数据进行随机实时读/写访问时,才可以这样做。

于 2013-06-25T19:43:17.790 回答
2

如果您在与 Hadoop 相同的集群上运行 HBase,那么您确实会减少 MapReduce 作业的可用内存。对于 OLAP 系统,您实际上并不需要 HBase 的随机读取/更新功能。您可以使用 Flume 或手动将数据加载到 Hadoop 集群中。设备监控数据适合按时间划分,例如按日历日期。将数据加载到可以映射到分区 Hive 表的目录结构后,您可以使用 HiveQL 查询它。对于最棘手的分析,您可以使用 Java 编写 MapReduce 作业或使用 Pig。

问题是响应不会立即出现。这对于临时分析来说是可以的,但如果您尝试查看一些常用的预先确定的指标,可能会令人沮丧。在后一种情况下,您应该考虑预先计算此类指标并将结果加载到内存缓存甚至关系数据库中。我已经看到在 HBase 中缓存了如此频繁使用的结果,我无法忍受为此目的浪费集群上一半的可用 RAM。

于 2013-06-24T21:03:52.223 回答