我是hadoop和hive世界的新手。我编写了一个配置单元查询,它正在处理1.89亿行(40gb文件)。当我执行查询时。配置单元查询在单机上执行,生成多个map和reduce任务。这是预期的行为吗?我在许多文章中读过hadoop是分布式处理框架。据我所知,hadoop将把你的工作分成多个任务,并将这些任务分布在不同的节点上,一旦任务完成,reducer将加入输出。如果我错了,请纠正我。我有1个主节点和2个从节点。我正在使用hadoop2.2.0和hive0.12.0。
mm5n2pyu1#
您对hive的理解是正确的—hive将您的查询转换为hadoop作业,而hadoop作业又会被拆分为多个任务、分发到节点、Map>排序和洗牌>减少聚合>返回hive cli。
fjaof16o2#
谢谢大家的快速回复。你们都纠正了我的作业被转换成不同的任务并分发到节点。当我在第一级检查hadoopwebui时,它显示作业正在单节点上运行。当我进一步深入的时候,它显示了Map器和还原器,以及Map器的运行位置。谢谢:)
uqjltbpv3#
如果您有2个从属节点,只要集群配置正确,hive就会将其工作负载拆分到这两个节点上。这就是说,如果您的输入文件不可拆分(例如,它是一个gzip压缩文件),hadoop将无法拆分/并行化工作,您将被困在一个单一的输入拆分和单一的Map器中,从而将工作负载限制在一台机器上。
3条答案
按热度按时间mm5n2pyu1#
您对hive的理解是正确的—hive将您的查询转换为hadoop作业,而hadoop作业又会被拆分为多个任务、分发到节点、Map>排序和洗牌>减少聚合>返回hive cli。
fjaof16o2#
谢谢大家的快速回复。
你们都纠正了我的作业被转换成不同的任务并分发到节点。
当我在第一级检查hadoopwebui时,它显示作业正在单节点上运行。当我进一步深入的时候,它显示了Map器和还原器,以及Map器的运行位置。
谢谢:)
uqjltbpv3#
如果您有2个从属节点,只要集群配置正确,hive就会将其工作负载拆分到这两个节点上。
这就是说,如果您的输入文件不可拆分(例如,它是一个gzip压缩文件),hadoop将无法拆分/并行化工作,您将被困在一个单一的输入拆分和单一的Map器中,从而将工作负载限制在一台机器上。