hive job oom
2019独角兽企业重金招聘Python工程师标准>>>
概括
先概括下,Hive中出现OOM的异常原因大致分为以下几种:
1. Map阶段OOM。
2. Reduce阶段OOM。
3. Driver提交Job阶段OOM。
Map阶段OOM:
1. 发生OOM的几率很小,除非你程序的逻辑不正常,亦或是程序写的不高效,产生垃圾太多。
Reduce阶段OOM:
1. data skew 数据倾斜
data skew是引发这个的一个原因。
key分布不均匀,导致某一个reduce所处理的数据超过预期,导致jvm频繁GC。
2. value对象过多或者过大
某个reduce中的value堆积的对象过多,导致jvm频繁GC。
3.reduce内存不足
错误信息如下:Container [pid=26845,containerID=container_1419056923480_0212_02_000001] is running beyond virtual memory limits. Current usage: 262.8 MB of 2 GB physical memory used; 4.8 GB of 4.2 GB virtual memory used. Killing container.
解决办法:
1. 增加reduce个数,set mapred.reduce.tasks=300,。
2. 在hive-site.xml中设置,或者在hive shell里调大参数
set mapreduce.map.memory.mb=1024;
set mapreduce.map.java.opts=-Xmx819m;
set mapreduce.reduce.memory.mb=2048;
set mapreduce.reduce.java.opts=-Xmx1638m;
mapreduce.map.memory.mb是向RM申请的内存资源大小
mapreduce.reduce.java.opts 一般只用于配置JVM参数
JVM大小一般是所申请内存的0.75
3. 使用map join 代替 common join. 可以set hive.auto.convert.join = true
4. 设置 hive.optimize.skewjoin = true 来解决数据倾斜问题
Driver提交job阶段OOM:
job产生的执行计划的条目太多,比如扫描的分区过多,上到4k-6k个分区的时候,并且是好几张表的分区都很多时,这时做join。
究其原因,是 因为序列化时,会将这些分区,即hdfs文件路径,封装为Path对象,这样,如果对象太多了,而且Driver启动的时候设置的heap size太小,则会导致在Driver内序列化这些MapRedWork时,生成的对象太多,导致频繁GC,则会引发如下异常:
java.lang.OutOfMemoryError: GC overhead limit exceeded
at sun.nio.cs.UTF_8.newEncoder(UTF_8.java:53)
at java.beans.XMLEncoder.createString(XMLEncoder.java:572)
原因是因为扫描的表的分区太多,上到3千到6千个分区,这样在对计划进行序列化时,仅仅是路径对象Path就会耗去大半Driver,如果Driver设置的heap太小,甚至都会OOM。
解决思路:
1. 减少分区数量,将历史数据做成一张整合表,做成增量数据表,这样分区就很少了。
2. 调大Hive CLI Driver的heap size, 默认是256MB,调节成512MB或者更大。
具体做法是在bin/hive bin/hive-config里可以找到启动CLI的JVM OPTIONS。
这里我们设置
export HADOOP_HEAPSIZE=512
转载于:https://my.oschina.net/u/2000675/blog/1810971
hive job oom相关推荐
- Hive MapJoin OOM
Hive升级完后ETL开发找到我说有的Job一直failed.看了一下在MAP阶段进行MAPJOIN处理时就OOM了,但是开发说没有加MAPJOIN HINT,其实在0.11后hive.auto.co ...
- 史上最详细大数据基础知识
# **1___Hive** ## 0.0.hive基本命令 ```sql [1.分区表] --创建分区 alter table table_name add partition(分区字段='分区值' ...
- Apache Doris 03|杂问题记录和案例测试
目录 案例测试 导入数据测试 查询测试 技术文档: 百度数据仓库 (baidu.com) https://www.kancloud.cn/dorisdb/dorisdb/2146878 http:// ...
- Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别
Pig 一种操作hadoop的轻量级脚本语言,最初又雅虎公司推出,不过现在正在走下坡路了.当初雅虎自己慢慢退出pig的维护之后将它开源贡献到开源社区由所有爱好者来维护.不过现在还是有些公司在用,不过我 ...
- hive 语句总结_大数据分析工程师面试集锦4-Hive
导语 本篇文章为大家带来Hive面试指南,文内会有两种题型,问答题和代码题,题目一部分来自于网上,一部分来自平时工作的总结 精选题型 Hive可考察的内容有:基本概念.架构.数据类型.数据组织.DDL ...
- hive增量表和全量表_基于 Flink + Hive 构建流批一体准实时数仓
基于 Hive 的离线数仓往往是企业大数据生产系统中不可缺少的一环.Hive 数仓有很高的成熟度和稳定性,但由于它是离线的,延时很大.在一些对延时要求比较高的场景,需要另外搭建基于 Flink 的实时 ...
- hive解决数据倾斜问题_八种解决 Spark 数据倾斜的方法
有的时候,我们可能会遇到大数据计算中一个最棘手的问题--数据倾斜,此时Spark作业的性能会比期望差很多.数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能. 数 ...
- 从 Hive 大规模迁移作业到 Spark 在有赞的实践
编者荐语: 本文介绍了有赞迁移 Hive 做到到 SparkSQL 上所做的一些改进,以及如何做到 SparkSQL 占比提升到 91% 以上,最后也分享一些在 Spark 踩过的坑和经验希望能帮助到 ...
- 深入浅出学Hive:Hive优化
目录: 初始Hive Hive安装与配置 Hive内建操作符与函数开发 Hive JDBC Hive参数 Hive高级编程 Hive QL Hive Shell基本操作 Hive优化 Hive体系结构 ...
最新文章
- 2022-2028年中国B2C电子商务市场投资分析及前景预测报告
- 高德全链路压测——语料智能化演进之路
- 11gR2RAC环境DBCA创建一个数据库错误ORA-15055 ORA-15001
- 低头是家和月光,抬头是车和远方
- SQL Server数据库中使用sql脚本删除指定表的列
- 【Python】判断列表中是否存在一个数
- 剑指offer66题 -- 输入一个链表,从尾到头打印链表每个节点的值
- python利用什么模块_什么是Python的heapq模块?
- eclipse快捷键、智能提示
- 前端中心化管理API使用说明
- Flink AggOperator 增量聚合函数
- Matlab期货量化交易特征选取,【策略分享】Matlab量化交易策略源码分享
- 数据库实例: STOREBOOK 用户
- latex longtable and supertabular 跨页表格
- 移动通信网络演进之路
- P1138 第k小整数
- 新版微信页面底部导航问题
- android中如何打开指定卡上的数据连接开关,Android 代码控制手机数据网络的开关(5.0以上)...
- YOLOv5训练自己的数据集之详细过程篇
- 链栈(Linked Stack)
热门文章
- c语言rand随机输出字母,菜鸟求助,写一个随机输出26个英文字母的程序
- java日历记事本ppt_JAVA做的日历记事本
- 需求分析中适应性怎么写_商业计划书中的市场分析怎么写,这样才完整!
- css中属性兼容性写法,CSS3兼容属性和标准属性的书写顺序
- php5.3 with-mysql centos_Centos编译搭建php7让php5.3和php7兼容共存教程
- 用什么写php最好用,php用什么开发工具比较好
- 【存储知识学习】第八章-Fibre Channel协议-8.1 FC网络和8.2FC协议中七种端口类型-《大话存储》阅读笔记
- 从架构理解价值-我的软件世界观
- SpringBoot+Vue整合WebSocket实现前后端消息推送
- Nginx在Windows下载安装启动与配置前后端请求代理