使用hive进行实时查询

yquaqz18  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(943)

首先,我想澄清一下,我正在学习hive和hadoop(以及一般的大数据),所以请原谅我缺乏合适的词汇。
我正在着手一个庞大的(至少对我来说)项目,它需要处理大量的数据,而我在过去没有处理这些数据,因为我一直主要使用mysql。
在这个项目中,一系列传感器每小时将产生大约125.000.000个数据点5次(每天15.000.000.000个),这是我插入每个mysql表的所有数据总和的几倍。
我知道一种方法是使用hadoopmapreduce和hive来查询和分析数据。
我面临的问题是,据我所知,配置单元的运行大多类似于“cron jobs”,而不是实时查询,因为实时查询可能需要很多小时,并且需要不同的基础设施。
我想根据配置单元查询的结果创建mysql表,因为最多需要实时查询的数据大约是1.000.000.000行,但我想知道这是正确的方法还是应该研究其他技术。
有没有什么技术是专门为大数据的实时查询而开发的呢?
任何小费将不胜感激!

km0tfn4u

km0tfn4u1#

这是一个复杂的问题。让我们从解决您在问题中提到的技术开始,然后从这里开始:
mysql:任何使用过mysql(或任何其他关系数据库)的人都应该清楚,传统的现成的mysql安装永远不会支持您所说的卷。信封后面的计算足以告诉我们——假设你的传感器插入只有100字节,你说的是150亿x 100字节=1.5万亿字节或1.396兆字节/天。这是真正的大数据,特别是如果你计划存储超过一天或两天。
hive:hive当然可以处理这种数据量(我和其他许多人都做过),但是正如您所指出的,您不会得到实时查询。每个查询都是批处理的,如果需要快速查询,则需要预先聚合数据。
现在我们来讨论一个真正的问题—您需要运行什么样的查询?如果您需要运行任意的实时查询,并且永远无法预测这些查询可能是什么,那么您可能需要寻找相对昂贵的专有数据存储,如vertica、greenplum、microsoft pdw等。这些将花费大量资金,但它们和其他人可以处理您正在谈论的负载。
另一方面,如果您能够以某种程度的准确性预测将要运行的查询类型,那么像hive这样的东西可能是有意义的。将原始数据存储在那里,并使用批处理查询功能来完成繁重的工作,并定期在mysql或其他关系数据库中创建聚合数据表,以支持低延迟查询的需要。
另一种选择是hbase。hbase为您提供了对分布式数据的低延迟访问,但是您失去了两个可能已经习惯的关键项—查询语言(hbase没有sql)和聚合数据的能力。要在hbase中进行聚合,需要运行mapreduce作业,尽管该作业可以将其结果存储回hbase,以便再次进行低延迟访问。

相关问题