在 Hive 里“调内存”通常不是调 Hive 自身一个参数,而是分 Hive 客户端 / 服务内存 和 底层执行引擎(MapReduce / Tez / Spark)内存 两部分。下面按常见场景给你说明。
通过环境变量设置(一般在 hive-env.sh):
export HADOOP_HEAPSIZE=4096 # 单位 MB,默认通常 1000
# 或
export HIVE_SERVER2_HEAPSIZE=4096
或修改:
$HIVE_HOME/conf/hive-env.sh
export HADOOP_HEAPSIZE=2048
或:
export METASTORE_HEAPSIZE=2048
set mapreduce.map.memory.mb=4096;
set mapreduce.map.java.opts=-Xmx3072m;
set mapreduce.reduce.memory.mb=8192;
set mapreduce.reduce.java.opts=-Xmx6144m;
⚠️
java.opts一般设为memory.mb的 0.8 左右
set hive.execution.engine=tez;
set tez.am.resource.memory.mb=4096;
set tez.am.java.opts=-Xmx3072m;
set tez.task.resource.memory.mb=4096;
set tez.task.java.opts=-Xmx3072m;
Tez 比 MapReduce 更省内存、更快
set hive.execution.engine=spark;
set spark.executor.memory=8g;
set spark.executor.cores=4;
set spark.driver.memory=4g;
或在 spark-defaults.conf 中配置。
Java heap space✅ 调大:
mapreduce.reduce.java.optstez.task.java.optsContainer killed by YARN for exceeding memory limits✅ 调大:
mapreduce.reduce.memory.mbtez.task.resource.memory.mbset hive.groupby.skewindata=true;
set hive.optimize.skewjoin=true;
即使 Hive 设置了内存,YARN 不够也不行:
yarn.scheduler.maximum-allocation-mb
yarn.nodemanager.resource.memory-mb
如果你愿意,可以告诉我:
我可以直接帮你写一套可用参数配置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。