如何在所有可用节点中运行Hive mapreduce任务?

时间:2014-01-21 12:21:46

标签: hadoop hive

我是Hadoop和Hive世界的新手。

我编写了一个处理189百万行(40 GB文件)的Hive查询。我正在执行查询。 Hive查询在单台机器上执行,并生成许多map和reduce任务。这是预期的行为吗?

我在很多文章中都看过Hadoop是分布式处理框架。我理解的是Hadoop会将您的工作分成多个任务,并将这些任务分配到不同的节点中,一旦任务完成,reducer将加入输出。如果我错了,请纠正我。

我有1个主节点和2个从节点。我正在使用Hadoop 2.2.0和Hive 0.12.0。

3 个答案:

答案 0 :(得分:0)

如果您有2个从属节点,只要您的群集配置正确,Hive就会将其工作负载分成两部分。

话虽这么说,如果您的输入文件不可拆分(例如,它是GZIP压缩文件),Hadoop将无法拆分/并行化工作,您将陷入单个输入拆分,因此单个mapper,将工作负载限制在一台机器上。

答案 1 :(得分:0)

您对hive的理解是正确的 - 将您的Query转换为hadoop作业,然后将其拆分为多个任务,分发到节点,映射> sort& shuffle>减少聚合物>返回hive CLI。

答案 2 :(得分:0)

谢谢大家的快速回复。

你们都纠结我的工作被转换成不同的任务并分发到节点。

当我在第一级检查Hadoop Web UI时,显示作业正在单个节点中运行。当我进一步向下钻取时,它显示了Mappers和Reducers以及正在运行的位置。

谢谢:)

相关问题