首先,我想澄清一下,我正在学习Hive和Hadoop (以及一般的大数据),所以请原谅我缺乏适当的词汇。
我正在着手一个巨大的项目(至少对我来说),它需要处理大量的数据,而我过去不习惯于处理这些数据,因为我一直主要使用MySQL。
对于这个项目,一系列传感器将产生大约125.000.000个数据点,每小时5次(每天15.000.000.000),这是我插入到每个MySQL表中的所有数据点总和的数倍。
我知道一种方法是使用Hadoop MapReduce和Hive来查询和分析数据。
我面临的问题是,据我所知,Hive的运行方式主要类似于"cron job“,而不是实时查询,这可能需要花费数小时并需要不同的基础设施。
我想根据配置单元查询的结果创建MySQL表,因为需要实时查询的数据最多大约为1.000.000.000行,但我想知道这是不是正确的方法,或者我应该研究一些其他技术。
有没有专门针对大数据实时查询而开发的技术,我应该学习一下?
任何建议都将不胜感激!
发布于 2012-10-03 09:25:05
这是一个复杂的问题。让我们从您在问题中提到的技术开始,然后从那里开始:
现在,这给我们带来了一个真正的问题--您需要运行哪种类型的查询?如果您需要运行任意的实时查询,并且永远无法预测这些查询可能是什么,那么您可能需要寻找相对昂贵的专有数据存储,如Vertica、Greenplum、Microsoft PDW等。这些存储将花费大量资金,但它们和其他公司可以处理您正在讨论的负载。
另一方面,如果您可以准确地预测将要运行的查询的类型,那么像Hive这样的东西可能是有意义的。将原始数据存储在那里,并使用batch query功能执行繁重的任务,并定期在MySQL或其他关系数据库中创建聚合数据表,以支持您的低延迟查询需求。
另一种选择是像HBase这样的东西。HBase为您提供了对分布式数据的低延迟访问,但您可能已经习惯了两个关键项目-查询语言(HBase没有SQL语言)和聚合数据的能力。要在HBase中进行聚合,您需要运行一个MapReduce作业,尽管该作业随后可以将其结果存储回HBase中,以便再次进行低延迟访问。
https://stackoverflow.com/questions/12700582
复制相似问题