2016-08-14 1 views
0

Pourriez-vous me guider pour résoudre ce problème de surcharge GC et d'espace mémoire.Hive: erreur GC Overhead ou Heap space - table partitionnée dynamique

Je suis en train d'insérer table partitionnée d'une autre table (partition dynamique) en utilisant la requête suivante:

INSERT OVERWRITE table tbl_part PARTITION(county) 
SELECT col1, col2.... col47, county FROM tbl; 

J'ai couru les paramètres suivants:

export HADOOP_CLIENT_OPTS=" -Xmx2048m" 
set hive.exec.dynamic.partition=true; 
set hive.exec.dynamic.partition.mode=nonstrict; 
SET hive.exec.max.dynamic.partitions=2048; 
SET hive.exec.max.dynamic.partitions.pernode=256; 
set mapreduce.map.memory.mb=2048; 
set yarn.scheduler.minimum-allocation-mb=2048; 
set hive.exec.max.created.files=250000; 
set hive.vectorized.execution.enabled=true; 
set hive.merge.smallfiles.avgsize=283115520; 
set hive.merge.size.per.task=209715200; 

ajouté également dans le fil site .xml:

<property> 
<name>yarn.nodemanager.vmem-check-enabled</name> 
<value>false</value> 
<description>Whether virtual memory limits will be enforced for containers</description> 
</property> 

<property> 
<name>yarn.nodemanager.vmem-pmem-ratio</name> 
<value>4</value> 
<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description> 
</property> 

Parkour -m:

  total  used  free  shared buffers  cached 
Mem:   15347  11090  4256   0  174  6051 
-/+ buffers/cache:  4864  10483 
Swap:  15670   18  15652 

C'est un cluster autonome avec 1 cœur. Préparation des données de test pour exécuter mes tests unitaires en étincelle.

Pourriez-vous guider quoi d'autre que je pourrais faire.

La table source possède les propriétés suivantes:

Table Parameters:  
    COLUMN_STATS_ACCURATE true     
    numFiles    13     
    numRows     10509065    
    rawDataSize    3718599422   
    totalSize    3729108487   
    transient_lastDdlTime 1470909228   

vous remercie.

Répondre

1

Ajouter DISTRIBUTE BY county à votre requête:

INSERT OVERWRITE table tbl_part PARTITION(county) SELECT col1, col2.... col47, county FROM tbl DISTRIBUTE BY county; 
+0

j'ai couru avec DISTRIBUER BY et obtenu l'erreur de l'espace de tas: – Aavik

+0

Vous n'avez pas fourni les journaux, il est donc j'utilise supposition. Habituellement, cela aide. Avez-vous essayé d'augmenter la mémoire allouée? Peut-être que ça manque vraiment de mémoire. Voir ceci: https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-hive-out-of-memory-error-oom/ Et ceci: https: //blogs.msdn.microsoft. com/shanyu/2014/07/31/hadoop-yarn-memory-settings-dans-hdinsight/ – leftjoin

+0

hive.vectorized.execution.enabled = true; Définir hive.vectorized.execution.reduce.enabled = true; set hive.vectorized.execution.reduce.groupby.enabled = true; régler le fil.nodemanager.resource.memory-mb = 8192; set yarn.scheduler.minimum-allocation-mb = 2048; set yarn.scheduler.maximum-allocation-mb = 8192; SET hive.tez.container.size = 7168; SET hive.tez.java.opts = -Xmx4096m; – Aavik