Edited at

Sparkのメトリクスを取る(WIP)

More than 3 years have passed since last update.


目的


  • Sparkのメトリクスを取りたい

  • 各ノードの性能監視をしたい


データソース


  • Sparkのmetrics

  • Gangliaのmetrics

  • 各ノードの性能情報


    • cpu, load average, memory usage, disk i/o, network i/o...




Sparkのmetrics


公式ドキュメント(1.3.1)

https://spark.apache.org/docs/1.3.1/monitoring.html


  • http://<driver-node>:4040

  • To view the web UI after the fact, set spark.eventLog.enabled to true before starting the application. This configures Spark to log Spark events that encode the information displayed in the UI to persisted storage.

  • If Spark is run on Mesos or YARN, it is still possible to reconstruct the UI of a finished application through Spark’s history server, provided that the application’s event logs exist.


    • ./sbin/start-history-server.sh




検討事項


  • 実際に取れるメトリクスの値は不明

  • GraphiteSinkがあるので、Graphiteに直接メトリクスを保存できるみたい

  • Ganguliaのメトリクスも取れるっぽいけど、ライセンスの問題でSparkをカスタムビルドしないとダメらしい


    • Spark on EMRではGanguliaが使えるようにプロビジョニングできたはずなので、このカスタムビルド仕様になってないか確認する




Gangliaのmetrics

EMRのbootstrap-actionのinstall-ganglia-metricsを見ると、GangliaSink.scalaを使うようになっている。以下、追いかけたソースコード。

https://github.com/awslabs/emr-bootstrap-actions/blob/master/spark/install-ganglia-metrics

https://github.com/apache/spark/blob/master/extras/spark-ganglia-lgpl/src/main/scala/org/apache/spark/metrics/sink/GangliaSink.scala

https://github.com/dropwizard/metrics/blob/master/metrics-ganglia/src/main/java/com/codahale/metrics/ganglia/GangliaReporter.java

https://github.com/ganglia/gmetric4j/blob/master/src/main/java/info/ganglia/gmetric4j/gmetric/GMetric.java