LoginSignup
3
0

More than 1 year has passed since last update.

YARN上で動くSparkからGCログを取得する方法

Last updated at Posted at 2018-12-28

JavaのアプリケーションでGC関連の調査を行う際は、GCログを吐き出させてログをGC Viewerなどで分析すると思います。
ただ分散処理環境のyarnでは、実行環境が分散している関係上設定方法に少し癖があります。
今回はYARNで実行されるSparkから具体的なGCログの取得方法について説明します。

SparkにGCログを出力させる

spark-submitを行う際に書きのオプションを渡すことでexecutorのJVMにGCログを出力させることができます。
driverの場合も似た感じで渡せます。

spark2-submit \
    --conf "spark.executor.extraJavaOptions=-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps" \
    --class ExampleSparkMain \
    ExampleSpark.jar

Spark executorの標準出力を取得する

GCログはexecutorの標準出力に出力されます。
yarn.log-aggregation-enableが有効になっていれば
Sparkを実行しているノードのローカルに出力されます(Spark Web UI上からアクセスする事もできる)。

ローカルへの出力ディレクトリですがyarnのyarn.nodemanager.log-dirsという値で設定が行われているので下記の方法で確認を行います。

  • yarn-site.ymlを見る
  • hdfs getconf -confKey yarn.nodemanager.log-dirsでパラメータを取得

自分が試した環境はCDH5だったのですが、/etc/hadoop配下のyarn-site.ymlには記載がなく、CDHがインストールされているディレクトリのyarn-site.ymlを読むことでディレクトリが判明しました。

ディレクトリ配下のstdoutというファイルにgcログが出力されているのでこれをgc viewerなどで読み込ませます。

gc viewer

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0