hadoop - 如何控制一个 Hive 查询同时启动的最大容器数
问题描述
我有一个 Hive 表,在 HDFS 上有 1000 个文件,每个文件大约 128M(一个 HDFS 块是 128M)。当我从这个表中运行 select count(1) 时,它将总共运行 1000 个映射器,这没关系。
糟糕的是,考虑到集群资源可用(当然最多 1000 个),此 Hive 查询将尝试同时启动尽可能多的映射器。
这真的很糟糕很丑陋,因为它可能同时占用太多资源,让其他应用程序没有资源可以使用,不得不等待。
我的问题是如何控制同时运行的最大映射器?
也就是比如1000个mapper,任何时候最多有100个mapper同时运行,这样就不会同时占用太多资源(Spark就是有--num-executors and --executor-cores
参数控制的)
解决方案
从 Hadoop 2.7.0 开始,MapReduce 提供了两个配置选项来实现这一点:
mapreduce.job.running.map.limit
(默认值:0,无限制)mapreduce.job.running.reduce.limit
(默认值:0,无限制)
推荐阅读
- casting - LLVM 通过将整数转换为浮点数
- oracle - sqlplus 复制命令的密码无效,但它是正确的密码。请指导我
- javascript - TypeError:无法读取反应中未定义的属性“页面”
- windows - Windows 10 上的 Turbo Assembler 16 位编译器
- python - GridSearchCV 和树分类器
- jenkins - 如何只运行选定的作业?
- azure - 无法删除 azure apim api
- javascript - List.js addEventListener 和 .on() 不起作用
- html - 使用引导轮播时 CSS 下拉菜单消失
- sql - 使用复制导出将当前日期动态注入 PostgreSQL 查询