Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS EMR HiveQL-java.lang.OutOfMemoryError:java堆空间_Hive_Hiveql_Emr - Fatal编程技术网

AWS EMR HiveQL-java.lang.OutOfMemoryError:java堆空间

AWS EMR HiveQL-java.lang.OutOfMemoryError:java堆空间,hive,hiveql,emr,Hive,Hiveql,Emr,我正在AWS EMR上运行HiveQL作业,并在下面的代码块中收到以下错误。该实例有39个M3.2XLarge M3.2XLarge 8vCPU 30GB内存2 x 80GB SSD存储节点,总内存为1.1TB HiveQL文件从S3加载数据,以ORC格式创建一个较小的主数据表。有相当多的中间表在发生错误之前正确执行。出错的代码块是select countdistinct。。。从 在每个新语句之前有没有清理/清除内存的方法? 我需要调整堆的大小吗? 我还可以提供什么来帮助更好地了解数据和环境 错

我正在AWS EMR上运行HiveQL作业,并在下面的代码块中收到以下错误。该实例有39个M3.2XLarge M3.2XLarge 8vCPU 30GB内存2 x 80GB SSD存储节点,总内存为1.1TB

HiveQL文件从S3加载数据,以ORC格式创建一个较小的主数据表。有相当多的中间表在发生错误之前正确执行。出错的代码块是select countdistinct。。。从

在每个新语句之前有没有清理/清除内存的方法? 我需要调整堆的大小吗? 我还可以提供什么来帮助更好地了解数据和环境

错误

    Diagnostic Messages for this Task:
Error: org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError: error in shuffle in fetcher#1
    at org.apache.hadoop.mapreduce.task.reduce.Shuffle.run(Shuffle.java:134)
    at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:381)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:175)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:170)
Caused by: java.lang.OutOfMemoryError: Java heap space
    at org.apache.hadoop.io.BoundedByteArrayOutputStream.<init>(BoundedByteArrayOutputStream.java:56)
    at org.apache.hadoop.io.BoundedByteArrayOutputStream.<init>(BoundedByteArrayOutputStream.java:46)
    at org.apache.hadoop.mapreduce.task.reduce.InMemoryMapOutput.<init>(InMemoryMapOutput.java:63)
    at org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl.unconditionalReserve(MergeManagerImpl.java:297)
    at org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl.reserve(MergeManagerImpl.java:287)
    at org.apache.hadoop.mapreduce.task.reduce.Fetcher.copyMapOutput(Fetcher.java:411)
    at org.apache.hadoop.mapreduce.task.reduce.Fetcher.copyFromHost(Fetcher.java:341)
    at org.apache.hadoop.mapreduce.task.reduce.Fetcher.run(Fetcher.java:165) 

暂时的解决办法是增加减速机内存分配

设置mapreduce.reduce.memory.mb=6000;
设置mapreduce.reduce.java.opts=-Xmx5000m

是否可以粘贴配置单元语句的整个日志?mapreduce.map.memory.mb和mapreduce.map.java.opts以及mapreduce.reduce.memory.mb和mapreduce.reduce.java.opts的默认值是什么?您可以使用SET命令在配置单元脚本中调整这些设置,只要您不遇到纱线限制,例如纱线。调度程序。最大分配-mb@SamsonScharfrichter这是我在AWS EMR文档页面上找到的。配置选项默认值mapreduce.map.java.opts-Xmx1152m mapreduce.reduce.java.opts-Xmx2304m mapreduce.map.memory.mb 1440 mapreduce.reduce.memory.mb 2880 thread.scheduler.最小分配mb 1440 thread.scheduler.最大分配mb 23040 thread.nodemanager.resource.memory mb23040@DurgaViswanathGadiraju日志文件是745行。在我已经粘贴的代码上面是否有一点比整个输出更有用?@SamsonScharfrichter这里是我为我们正在使用的特定节点找到的其他数据。参数值Thread\u RESOURCEMANAGER\u HEAPSIZE 2703 Thread\u PROXYSERVER\u HEAPSIZE 2703 Thread\u NODEMANAGER\u HEAPSIZE 2048 HADOOP\u JOB\u History Server\u HEAPSIZE 2703 HADOOP\u NAMENODE\u HEAPSIZE 3276 HADOOP\u DATANODE\u HEAPSIZE 1064需要增加内存没有问题。显然,此时的作业正在处理一组中间映射输出,这些输出需要的内存比以前的配置(reducer)所允许的内存更多。