我想编写一个应用程序,该应用程序能够生成报告并启用交互式数据分析(类似 OLAP),监控来自大型生产系统的数据。 (我知道,前面有一些有问题的权衡决定,但我们暂时把它们放在一边。)
我确定了基本技术堆栈的以下可能性:
- Hadoop:用于分布式文件系统和 MapReduce 框架
- 数据库:支持随机读取的 HBase 或 Cassandra
- 分析:用于高级分析的 Hive 或 Pig
根据我的研究,我倾向于认为 Hadoop/HBase/Hive 是最常见的组合。但这只是基于一些论坛问题和产品介绍。
其他人可以分享他对这个问题的一般看法吗?
或者更具体地回答以下问题:
- 总体而言,HBase 是否比 Cassandra 更适合大数据分析(写入与读取性能)?
- 使用数据库是否值得,还是我应该直接在 Hadoop 上找到我的分析层?
- 哪些数据库/分析工具组合最“自然”?
- 我错过了什么很酷的东西吗?
最佳答案
恕我直言,
1- 考虑到最近的所有进步,很难仅根据您的读/写需求来决定是使用 HBase 还是 Cassandra。您可以调整这些工具以适应您的读/写要求。在做出任何决定时,您还应该考虑更多的事情。
2- 此时您似乎不需要数据库。您可以将存储在 HDFS 中的数据映射到 Hive 表。然后在需要长时间运行的批处理时运行 Hive 查询。如果您打算对数据的某些部分执行实时临时查询,则可以在相同的 Hive 表上使用 Cloudera Impala(当 实时性
很重要时)。 Impala 使用相同的 Hive 元数据。所以您不必为此担心。
3- 如果您打算在 Hadoop 平台上工作,那么 HDFS+Hive+HBase+Pig 会很好。我并不是说 Cassandra 不好,但 Hbase 是为与 Hadoop 一起使用而开发的。
4- 那里有很多“很酷”的东西,但您最好将数量保持在较低水平。更多工具意味着更多配置、更多设置和更多管理(更令人头疼)。因此,只从那些真正需要的东西开始,只有当你认为它真的需要或者它会给你一些额外的优势时才添加一个特定的工具。但您可能想看看 Impala、Storm、Flume、Spark/shark
等工具
据我所知,HBase 是为在 Hadoop 集群之上使用而构建的。毫无疑问,它会消耗一些内存,但这不应该成为您应用程序的瓶颈。你只需要正确调整一切。但是,只有在您需要对数据进行随机实时读/写访问时才去做。
关于hadoop - 大数据分析选择技术栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17273089/