乐知付加密服务平台

如果你有资源, 平台可以帮你实现内容变现, 无需搭建知识付费服务平台。

点击访问官方网站 https://lezhifu.cc

扫码关注公众号 乐知付加密服务平台-微信公众号
记录一次hive堆内存溢出问题 | chenzuoli's blog

记录一次hive堆内存溢出问题

      目前运行环境是这样的:

1
2
3
hive version: 3.1.0
centos version: 7.4
hadoop version: 3.1.4

      默认tez引擎

      此表数据量:

      原来设置的参数如下:

1
2
3
4
5
6
7
set hive.merge.mapfiles=true;
set hive.merge.mapredfiles=true;
set hive.merge.smallfiles.avgsize=60000000;
set hive.auto.convert.join.noconditionaltask.size=10000000;
set hive.exec.compress.intermediate=true;
set hive.intermediate.compression.codec=org.apache.hadoop.io.compress.snappycodec;
set hive.intermediate.compression.type=block;

      运行时

      运行结果出现如下错误:

      分析:

  1. 此表数据量很大;
  2. 运行时500个reducer中每个reducer所承载的数据量很大;

      昨天此任务运行成功,去hdfs看下结果数据文件情况:

      发现结果文件只有5个,而且每个文件34M,可想而知1个reducer当时拉取了大量的数据做聚合,这是导致reducer内存溢出的原因,于是设置reducer个数:

1
set mapred.reduce.tasks=1000;

      添加参数后运行时:

      添加参数后运行结果文件如下:

      解决。


A man is not old until his regrets take place of his dreams.

书山有路勤为径,学海无涯苦作舟。

欢迎关注微信公众号:【程序员写书】
程序员写书

喜欢宠物的朋友可以关注:【电巴克宠物Pets】
电巴克宠物

一起学习,一起进步。

-------------本文结束感谢您的阅读-------------