如何控制一个Hive查询同时启动的最大容器数

问题描述 投票:1回答:1

我有一个Hive表,在HDFS上有1000个文件,每个文件大约128M(一个HDFS块是128M)。当我从这个表中运行select count(1)时,它总共会运行1000个映射器,这没关系。

让事情变得糟糕的是,如果群集资源可用(当然最多1000个),此Hive查询将尝试在同一时间启动尽可能多的映射器。

这非常糟糕和丑陋,因为它可能同时占用太多资源,让其他应用程序无需使用资源,必须等待。

我的问题是如何控制同时运行的最大映射器?

也就是说,例如,对于1000个映射器,在任何时刻,最多有100个映射器同时运行,因此它不会同时占用太多资源(Spark具有--num-executors and --executor-cores参数的控制权)

hadoop hive yarn
1个回答
1
投票

从Hadoop 2.7.0开始,MapReduce提供了两个配置选项来实现这一目标:

  • mapreduce.job.running.map.limit(默认值:0,无限制)
  • mapreduce.job.running.reduce.limit(默认值:0,无限制)

MAPREDUCE-5583: Ability to limit running map and reduce tasks

© www.soinside.com 2019 - 2024. All rights reserved.