zoukankan      html  css  js  c++  java
  • Hive 报错

    hadoop hive任务失败,原因是GC overhead limit exceeded (OOM)

    GC Overhead Limit Exceeded errorjava.lang.OutOfMemoryError家族的一员,表示JVM内存被耗尽。

    OutOfMemoryErrorjava.lang.VirtualMachineError的子类,当JVM资源利用出现问题时抛出,更具体地说,这个错误是由于JVM花费太长时间执行GC且只能回收很少的堆内存时抛出的。

    根据Oracle官方文档,默认情况下,如果Java进程花费98%以上的时间执行GC,并且每次只有不到2%的堆被恢复,则JVM抛出此错误。换句话说,这意味着我们的应用程序几乎耗尽了所有可用内存,垃圾收集器花了太长时间试图清理它,并多次失败。

     

    原文链接:https://developer.aliyun.com/ask/59564?spm=a2c6h.13159736

    Hadoop任务可能引起OOM错误的原因有很多。一般情况下,首先检查是否重设了hadoop参数:mapred.child.java.opts,一般设为-Xmx2000m,即使用2G的最大堆内存。
    Hive中可能引起OOM的原因及相关的修复设定如下表所示:

    原因:map aggregation
    map aggregation使用哈希表存储group by/distinct key和他们的aggregation结果。
    aggregate结果字段过多,或group by/distinct key的散度过大,可能导致内存占用过多。
    修复:
    减小hive.map.aggr.hash.percentmemory设定(默认为0.5,即使用50%的child堆内存)。

    原因:join
    join需要cache所有相同join key的非驱动表的记录
    修复:
    检查是否把大表设定为驱动表(大表写在join的最右边)。
    如果已经设定正确的驱动表,减小hive.join.emit.interval设定(默认为1000,即每1000行的join结果集输出一次)。

    原因:map join
    map join需要cache全部小表的所有数据
    修复:
    检查小表是否足够小。如果小表超过1G,考虑不要使用map join。

    --加了以下参数解决了问题
    
    set mapreduce.map.java.opts=-Xmx3072m;
    set hive.exec.parallel=true;
    set hive.exec.parallel.thread.number=16;
    set hive.exec.compress.output=true;
    set hive.map.aggr.hash.percentmemory=0.3;
    set hive.join.emit.interval=600;
    set hive.auto.convert.join = false;

    Hive Runtime Error while processing row at 

    --加以下参数
    set hive.vectorized.execution.enabled=false;
    set hive.vectorized.execution.reduce.enabled=false;

    FAILED: Class com.shield.xlab.hive.sql.UDFsha not found

    jar包名被写错,UDFSha

  • 相关阅读:
    浅谈工作流的作用
    WinForm上播放Flash文件
    C#反序列化 “在分析完成之前就遇到流结尾”
    UML类图详解
    关于C#中Thread.Join()的一点理解
    c# 反射的用法
    C#多线程学习笔记之(abort与join配合使用)
    UML用例图总结
    asp.net 发布到IIS中出现”处理程序“PageHandlerFactoryIntegrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”“错误的解决方法
    C#序列化和反序列化
  • 原文地址:https://www.cnblogs.com/shimingjie/p/11941768.html
Copyright © 2011-2022 走看看