2017-11-14 5 views
0

MySQLドンとMongoデータソースを使用して8GBのRAM上で2,000万データを照会してメモリ例外を取り除くことで、ApacheドリルでR & Dを実行しています。Apache Drill |ディスクにスピルを設定する方法

次に、drill-override.confで次の設定を行ってディスク上のSpillを設定しようとしました。

drill.exec: { 
cluster-id: "APDCluster1", 
zk.connect: "192.168.1.16:2181", 
spill: { 
    directories: ["/data/enliven/installations/ApacheD/drill/spill"], 
    fs: "file:///" 
} 
sort: { 
    external: { 
    batch.size: 4000, 
    spill: { 
    batch.size: 4000, 
    group.size: 100, 
    threshold: 200, 
    directories: ["/data/enliven/installations/ApacheD/drill/spill"], 
    fs: "file:///" 
    } 
    } 
}, 
hashagg: { 
    spill: { 
    directories: ["/data/enliven/installations/ApacheD/drill/spill"], 
    fs: "file:///" 
    } 
} 
} 

まだメモリ不足例外が発生しています。

これについて私が手助けをすることができます。

答えて

0

http://www.openkb.info/2015/05/drill-workshop-spill.htmlによれば、ドリルスピルの有効性をテストするには、提供されたメモリ量をたとえば10に減らす必要があります。 20 MB:

alter session set `planner.memory.max_query_memory_per_node`=20971520; 

次に、クエリが正常に実行されているかどうかをテストし、ファイルシステムをチェックします。

drill-env.shファイルは、以下のオプションが含まれています

また、あなたが最初の場所で十分なヒープを提供する場合は、(https://drill.apache.org/docs/configuring-drill-memory/から)入手できる8ギガバイトを持っているかどうかを確認するのが賢明かもしれません。

:、メモリの制限をカスタマイズする必要行のコメントを解除し、設定を変更するには

#export DRILL_HEAP=${DRILL_HEAP:-"4G”} 
#export DRILL_MAX_DIRECT_MEMORY=${DRILL_MAX_DIRECT_MEMORY:-"8G"} 

export DRILL_HEAP=${DRILL_HEAP:-"<limit>”} 
export DRILL_MAX_DIRECT_MEMORY=${DRILL_MAX_DIRECT_MEMORY:-“<limit>"} 
+0

ありがとうございました。チェックしてください –

0

ドリルオーバーライド設定は正しいです(ただし、オペレータ固有の設定は必要ありません)。 drill.exec.spill。*は、すべての流出オペレータに共通です。オペレータ固有のもの(drill.exec.hashagg.spill.fsなど)は、将来廃止予定です。

planner.memory.max_query_memory_per_nodeは重要な設定です。理想的には、ダイレクトメモリのサイズに近いサイズを、使用される同時クエリストリームの数で割った値に設定する必要があります。デフォルトの設定は2GBですが、これは小さすぎることがよくあります。

Spilling enabledは、すべてのメモリ問題の万能薬ではありません。特定の詳細をチェックして(ログのスタックトレースを調べる)、オペレータが失敗したかどうかを調べる必要があります。いくつかの可能性:

  1. ハッシュ結合はまだ流出をサポートしていません。大きなデータセットに参加する必要がある場合は、無効にする(alter session set `planner.enable_hashjoin` = false;)ようにすると、代わりにマージ結合が使用されます。
  2. 外部ソートには、メモリをよりよく処理する新しいバージョン(管理対象)があります。代わりにマネージドバージョンを使用可能にするには、 "drill.exec.sort.external.disable_managed"の設定をfalseに設定します。 (これはドリル1.12のデフォルト設定になります)。
  3. ハッシュ集計スピルサポートは新しい機能です(Drill 1.12がうまく機能するかもしれません)。ここでのオプション:(alter session set `planner.enable_hashagg` = false;)を無効にするか、 "exec.hashagg.min_batches_per_partition"を高い値(4または5)に増やしてください。
  4. (クエリにORDER BY句とLIMIT句の両方がある場合に使用される)TopN演算子にはメモリに関する問題がありました(1.12で修正)。これは、drill.exec.sortの下の "purge.threshold:10"の設定オーバーライドを設定することで修正できます。
+0

ありがとうございます –

関連する問題