DATA+AI SUMMIT 2021 에서 발표한 Monitor Apache Spark 3 on Kubernetes using Metrics and Plugins 세션을 나름대로 정리해보았습니다. 잘못된 정보나 오류가 있다면 언제나 지적 부탁드립니다 :)


Spark 모니터링 생태계

Web UI

  • 제일 쉽게 접근이 가능하면서 유용한 모니터링이 가능
  • job, stage, stage, SQL, streaming, ... 등등의 세부사항 확인 가능
  • default URL: http://driverhost:4040

Spark REST API + Spark Listener

  • task와 executor의 metric들을 확인 가능
  • web UI보다 더욱 세부적인 metric들을 확인 가능

Spark Metrics System

  • Dropwizard metric 라이브러리를 통해 구현
  • driver, executor의 여러 metric을 알 수 있음
    • active task 개수
    • job/stage complete/fail 여부
    • executor의 cpu 사용량
    • executor running time
    • gc time
    • shuffle metrics
    • I/O metrics
    • ...
  • default URL: http://driver:4040/metrics/json
  • executor의 경우 Spark의 local mode인경우에만 사용가능
  • prometheus에서 사용하고있음
  • pipeline
  • spark 2.x~3.0 에서 k8s를 사용하는 경우는 다음과 같이 사용
      $SPARK_HOME/bin/spark-shell \
          --conf "spark.metrics.conf.*.sink.graphite.class"="org.apache.spark.metrics.GraphiteSink" \
          --conf "spark.metrics.conf.*.sink.graphite.host"="graphiteEndPoint_influxDB_hostname" \
          ...

Spark 3 metrics system with Plugins

  • K8S pod들의 resource 관련 metric 등을 모니터링 가능
    • nsight에서의 cpu 사용량, network in/out 같은 metric
    • RSS, Swap, Cache 등의 세부 metric 확인 가능
  • 사용자가 직접 커스터마이징해서 metric을 모니터링 가능

출처: https://databricks.com/session_na21/monitor-apache-spark-3-on-kubernetes-using-metrics-and-plugins

+ Recent posts