我有一个Hive表,该表在HDFS上有1000个文件,每个文件约为128M(一个HDFS块为128M)。当我从该表中运行select count(1)时,它将总共运行1000个映射器,这是可以的。
让事情变得糟糕的是,在群集资源可用的情况下(当然最多为1000个),此Hive查询将尝试同时启动尽可能多的映射器。
这真的很糟糕,很丑陋,因为它可能同时占用太多资源,而使其他应用程序无法使用任何资源,而不得不等待。
我的问题是如何控制同时运行的最大映射器?
也就是说,例如,对于1000个映射器,在任何时候最多同时运行100个映射器,因此它不会同时占用太多资源(Spark具有{{ 1}}参数)
答案 0 :(得分: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