BigData分析选择技术堆栈



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

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

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

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

IMHO,

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

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

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

4-有很多"酷"的东西,但你最好保持低数字。更多的工具意味着更多的配置、更多的设置和更多的管理(更令人头疼)。所以,只从那些真正需要的东西开始,只有当你认为它是真正需要的,或者它会给你一些额外的优势时,才添加一个特定的工具。但你可能想看看Impala, Storm, Flume, Spark/shark等工具。

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

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

问题是,回应不会立竿见影。这对于广告费用分析来说是可以的,但如果你试图查看一些常用的预先确定的指标,可能会令人沮丧。在后面的情况下,您应该考虑预先计算这些度量,并将结果加载到内存缓存甚至关系数据库中。我在HBase中看到了如此频繁使用的缓存结果,我无法忘记为此在集群上浪费一半的可用RAM。

最新更新