0

上のJavaヒープ領域Iは、ハイブがどの変換せずに別のパーティションテーブルにエラー:Googleのデータ-PROCクラスタ

13783531 

レコードを持つテーブルからのGoogle dataprocクラスタに上書きクエリを挿入し実行しています。エラー5つのワーカーノードと

Diagnostic Messages for this Task: 
Error: Java heap space 

FAILED: Execution Error, return code 2 from 
org.apache.hadoop.hive.ql.exec.mr.MapRedTask 
MapReduce Jobs Launched: 
Stage-Stage-1: Map: 34 Cumulative CPU: 1416.18 sec HDFS Read: 6633737937 
HDFS Write: 0 FAIL 

クラスタの詳細

n1-standard-16 (16 vCPU, 60.0 GB memory) 

で失敗し 。

エラーは、 Javaヒープ領域とGCオーバーヘッド制限を超えています。 パラメータを設定しようとしました

set mapreduce.map.memory.mb=7698; 
set mapreduce.reduce.memory.mb=7689; 
set mapreduce.map.java.opts=-Xmx7186m; 
set mapreduce.reduce.java.opts=-Xmx7186m; 

まだ失敗します。あなたがここに対処する必要がある物事のカップルがあります

+0

可能な複製ではデフォルトで無効になった理由であること、間違ったパーティションにレコードを挿入すると言いソリューション#1.Seemsを使用しない方がよいですHive:org.apache.hadoop.hive.ql.exec.MapRedTaskからコード2を返す](http://stackoverflow.com/questions/11185528/what-is-hive-return-code-2-from-org- apache-hadoop-hive-ql-exec-mapredtask) –

+0

は、寄せ木張りのテーブルテーブルですか? – hlagos

+0

@lakeテーブルはテキストフォーマット – Freeman

答えて

0

問題は、挿入された上書きが小さすぎるファイルを作成しようとしたためです。 は、我々は利用可能な2つのソリューションは、それらの両方があります修正

set hive.optimize.sort.dynamic.partition=true; 

https://community.hortonworks.com/articles/89522/hive-insert-to-dynamic-partition-query-generating.html

を持っているようだと、これらのいずれかが動作する

1. use set hive.optimize.sort.dynamic.partition=true; 

または

2. use DISTRIBUTE BY <PARTITION_COLUMN> 

を働きました。 JIRAが 、GROUP BYで使用した場合、それはそれは[何の最近のハイブ https://issues.apache.org/jira/browse/HIVE-8151

1

合計JVMのメモリJVMのヒープメモリ対割り当てられ

これらのパラメータによって設定され、割り当てられ総JVMのメモリ

mapreduce.map.memory.mb 
mapreduce.reduce.memory.mb 

JVMヒープメモリは、次のパラメータによって設定されます。

mapreduce.map.java.opts 
mapreduce.reduce.java.opts 

[合計メモリ]> [ヒープメモリ]を必ず確認する必要があります。私たちのベンダーの一つは、我々は、ほとんどの部分は、常にの約80%を使用することをお勧めトータル・ツー・ヒープ比

を(このルールは、あなたが提供するパラメータ値に違反していることに注意してください)ヒープの合計メモリ。この勧告でも、さまざまなメモリエラーが発生することがよくあります。

エラー:ヒープメモリ

はおそらく合計とヒープの両方を増やす必要があります。

エラー:Permgen

スペースは十分ではないが、あなたは合計メモリを増やすことなく、ヒープメモリを減らすことができるかもしれない意味オフヒープメモリを増やす必要があります。

エラー:GCオーバーヘッドの制限

を超えてこれはJVMがガベージに収集許可されている時間の量を意味します。非常に長い時間内に受信したスペースが少なすぎると、エラーが発生します。合計メモリとヒープメモリの両方を増やしてみてください。

+0

ヒープメモリとJVMメモリの間で必要な変更を行いましたが、変更内容がDataProcクラスタに反映されていないように見えます。クラスタ。 configsをジョブレベルで設定して更新する方法はありますか? – Freeman

+0

これらの設定はHiveメモリの設定を変更します。 ** Tez **などの類似のクエリエンジンを使用している場合は、そのクエリエンジンのドキュメントを参照して、必要なパラメータを決定する必要があります。 – DrV

関連する問題