Azure hdinsight HiveのJava Heap調整

シェアする

Javaヒープの調整

HDInsight 上のHiveで処理をしていると、以下のエラーが継続して出てしまし、処理ができない状況に陥っちゃいました。

java.lang.OutOfMemoryError: Java heap space (google検索

そこでで、JVMのヒープ割り当てを変更して、問題回避。
(ちょっと解決方法として正解なのか、詳しく調べきれていませんが・・・)

Hiveへの問合せ文の前に、以下を付け加えることで、YARN自体やMap Reduce(もしくはtez)に割り当てされるメモリー割り当て増加でき、Java heap不足の解消がされるようです。

 SET yarn.nodemanager.resource.memory-mb = 12288;
 SET yarn.scheduler.minimum-allocation-mb = 1024;
 SET yarn.scheduler.maximum-allocation-mb = 12288;
 SET mapreduce.map.memory.mb = 9216;
 SET mapreduce.map.java.opts = "-Xmx8192m";
 SET mapreduce.reduce.memory.mb = 8192;
 SET mapreduce.reduce.java.opts = "-Xmx6144m";
 SET yarn.app.mapreduce.am.resource.mb = 6144;
 SET yarn.app.mapreduce.am.command-opts = "-Xmx4096m";

※この例では、データノードが、Standard A4 (CPU8コア、メモリ14GB)の場合に合わせて、サイズなどのパラメーターを決めています。

↓のリンク (Hortonworks)に、標準的なサイズの説明があり参考にして決めています。

参考情報

入門記事
ja-jp/documentation/articles/machine-learning-data-science-hive-queries

ヒープ等の役割説明
shanyu/archive/2014/07/31/hadoop-yarn-memory-settings-in-hdinsigh.aspx
本家Hortonworksのチューニング推奨値
HDPDocuments/HDP2/HDP-2.0.9.1/bk_installing_manually_book/content/rpm-chap1-11.html