我想写一个应用程序,能够生成报告,并启用交互式数据分析(olap-like)从监测数据从一个大型生产系统(我知道,前面有一些有问题的权衡决定,但我们暂时把它们放在一边。)
我确定了基本技术堆栈的以下可能性:
hadoop:用于分布式文件系统和mapreduce框架
数据库:hbase或cassandra以启用随机读取
分析:用于高级分析的Hive或Pig
根据我的研究,我倾向于认为hadoop/hbase/hive是最常见的组合。但这只是基于一些论坛问题和产品介绍。
其他人能谈谈他对这个问题的一般看法吗?
或者更具体地回答以下问题:
一般来说,hbase比cassandra(读写性能)更适合大数据分析吗?
使用数据库值得吗?还是应该直接在hadoop上找到我的分析层?
哪些数据库/分析工具组合最“自然”?
我错过了什么好东西吗?
2条答案
按热度按时间fnvucqvd1#
伊莫,
1-考虑到所有最新的进展,仅根据您的读/写需求来决定是使用hbase还是cassandra有点困难。您可以调整这些工具以适应您的读/写需求。在做任何决定时,你应该考虑的事情很少。
2-在这一点上你似乎不需要db。您可以将存储在hdfs中的数据Map到配置单元表。然后在需要长时间运行的批处理进程时运行配置单元查询。如果您打算对数据的某些部分执行实时即席查询,那么可以在相同的配置单元表上使用cloudera impala(当
real-timeness
是重要的)。 Impala 使用相同的Hive元数据。所以你不用担心。3-如果你打算在hadoop平台上工作,那么hdfs+hive+hbase+pig就不错了。我并不是说cassandra不好,但是hbase是为配合hadoop而开发的。
4-外面有很多“酷”的东西,但是你最好保持低的数字。更多的工具意味着更多的配置、更多的设置和更多的管理(更头疼)。所以,只从那些真正需要的东西开始,并且只在你认为它是真正需要的或者它会给你一些额外的优势的时候添加一个特定的工具。但你可能想看看像这样的工具
Impala, Storm, Flume, Spark/shark
等。另外,hbase是为在hadoop集群上使用而构建的。毫无疑问,它会消耗一些内存,但这不应该成为应用程序的瓶颈。你只要把一切都调好就行了。但是,只有在需要对数据进行随机实时读/写访问时,才使用它。
xxslljrj2#
如果您在与hadoop相同的集群上运行hbase,那么您将真正减少mapreduce作业可用的内存。对于olap系统,您实际上不需要hbase的随机读取/更新功能。您可以使用flume或手动将数据加载到hadoop集群中。设备监控数据有助于按时间划分,例如按日历日期划分。将数据加载到可以Map到分区配置单元表的目录结构中后,可以使用hiveql进行查询。对于最棘手的分析,您可以用java编写mapreduce作业,也可以使用pig。
问题是,回应不会马上出现。这对于ad-hock分析是可以的,但是如果您试图查看一些常用的预先确定的指标,则可能会令人沮丧。在后一种情况下,您应该考虑预先计算这些度量,并将结果加载到内存缓存甚至关系数据库中。我在hbase中看到了如此频繁使用的结果,我无法克服为此在集群上浪费一半可用ram的问题。