执行查询时,hive 是不是运行 hadoop?
Posted
技术标签:
【中文标题】执行查询时,hive 是不是运行 hadoop?【英文标题】:Does hive run hadoop when a query is executed?执行查询时,hive 是否运行 hadoop? 【发布时间】:2012-04-20 15:24:47 【问题描述】:我试图了解 hive 和 hadoop 如何交互。从我读过的教程中,我似乎在运行 HIVE 查询之前运行了一个 map/reduce 作业来获取输入数据。这对我来说似乎适得其反,如果我已经运行了 map/reduce 作业并以易于解析的格式获取数据,为什么我不将数据放入传统数据库中。
感谢您的帮助, 内森
【问题讨论】:
【参考方案1】:Hive 对存储在 HDFS 上的文件进行操作。除了最简单的查询之外,hive 会生成并运行 mapreduce 作业。对于非常简单的查询 (SELECT * FROM MyTable
),它只会从磁盘流式传输文件。
输入数据不需要来自 MapReduce - 它可以是上传到 HDFS 的简单文本文件。见http://developer.yahoo.com/hadoop/tutorial/module2.html#commandref
【讨论】:
【参考方案2】:Hive 通过提供海量并行处理数据库的功能填补了开源软件中非常重要的空白。在其他世界 - 它为我们提供了水平可扩展的分析 SQL 引擎。 具体到您的问题,当 Hive 比 RDMS 更好时,我可以看到一些主要场景。 a) 数据已经在 HDFS 中,我们还有一些其他用途(例如 MR 作业) b) 有太多数据要加载到单服务器 RDMBS 中。 c) 我们只需要查询一次或两次数据。在这种情况下,Hive 的数据加载时间相对较慢,可以胜过 RDMBS。
【讨论】:
【参考方案3】:是的。 Hive 建立在具有分布式计算的 Hadoop 之上。 Hive 访问 HDFS 以存储文件。每个表都作为文件存储在 HDFS 上。
【讨论】:
以上是关于执行查询时,hive 是不是运行 hadoop?的主要内容,如果未能解决你的问题,请参考以下文章
如何在所有可用节点中运行 Hive mapreduce 任务?