我试图了解蜂巢和hadoop如何互动。从我读过的教程中我看来,在运行HIVE查询之前,您运行map / reduce作业来获取输入数据。这似乎适得其反,如果我已经运行map / reduce作业并以易于解析的格式获取数据,为什么我不将数据放入传统数据库。
感谢您的帮助, 森
答案 0 :(得分:4)
Hive对存储在HDFS上的文件进行操作。除了最简单的查询之外,hive还会生成并运行mapreduce作业。对于非常简单的查询(SELECT * FROM MyTable
),它只会将文件从磁盘流式传输。
输入数据不需要来自MapReduce-它可以是上传到HDFS的简单文本文件。见http://developer.yahoo.com/hadoop/tutorial/module2.html#commandref
答案 1 :(得分:1)
Hive通过提供大量parralel处理数据库的功能,填补了开源软件中非常重要的空白。在其他领域 - 它为我们提供了横向可扩展的分析SQL引擎。
特别是对于你的问题,我可以看到一些主要的情况,当Hive比RDMS更好。
a)数据已经在HDFS中,我们在那里有一些其他用法(如MR工作)
b)有太多数据要加载到单个服务器RDMBS中。
c)我们只需要查询一次或两次数据。在这种情况下,Hive可以在相对较慢的数据加载时间内胜过RDMBS。
答案 2 :(得分:0)
是的。 Hive构建在具有分布式计算功能的Hadoop之上。 Hive访问HDFS以存储文件。每个表都作为文件存储在HDFS上。