Spark Job 성능 모니터링과 최적화를 위한 Spark Analyzer 개발기
toss.tech
오랜만에 블로그 글을 썼습니다. 이번에는 회사 블로그에 Spark job 성능 모니터링 하기 위해 만들었던 Spark Analyzer 개발기를 써봤습니다.
Spark Analyzer는 꽤 간단합니다. 이 코드는 Spark History Server에 남아있는 Job 기록을 API를 호출해 가지고 와서 metric 계산을 합니다. 이 간단한 작업으로 매일 실행되는 6천 개 이상의 Spark job에서 발생하는 1천 개 이상의 크고 작은 비효율을 탐지할 수 있었습니다.
처음 고민할 때 영감을 받았던 블로그는 Uber에서 발행한 블로그인데요, 처음 읽었을 땐 우와 뭔가 굉장하네? 라고 생각했습니다. 그리고 이렇게 만들려면 시간이 꽤 오래 걸리겠다, 당장은 못하겠는데? 라고도 생각했고요. 그런데 제가 해결해야 할 문제는 생각만큼 어렵게 풀지 않아도 되고, 실제로도 예상보다 금방 개발할 수 있었습니다. 너무 어렵게 생각할 필요가 없었어요.
저와 비슷한 고민을 한 분들께(Spark 클러스터 비용이 많이 나오거나, 리소스가 부족해서 고통받는 분) 도움이 됐으면 좋겠습니다. Spark Job이 그렇게 많지 않다면, DataFlint만 도입하셔도 많은 도움이 될 겁니다.
https://toss.tech/article/spark-analyzer
---
uber blog: https://www.uber.com/en-KR/blog/spark-analysers-catching-anti-patterns-in-spark-apps/
dataflint: https://www.dataflint.io/
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 10월 29일 오후 12:56