Community

⛏️ Spark의 안티패턴을 찾아내는 Spark Analyser

많은 회사들에서 데이터 분산처리를 위해 Apache Spark를 사용하고는 합니다. Spark는 튜닝하고 코드단 최적화할 수 있는 부분들이 많은데, 회사내의 Spark 사용자들이 이 모든 것들을 다 잘 이해하고 항상 최적화된 Spark Job을 구현하는 것이 쉬운 일은 아닙니다. 그래서 Uber에서는 비효율적으로 구현된 Spark Job을 인지할 수 있도록 도움을 주는 Spark Analyser를 구현한 글을 퍼블리싱해서 공유합니다. ⛏️ Spark Analyser는 2개의 컴포넌트로 이뤄져있습니다: 1. Spark Event Listener - Spark application이 돌아갈때 발생되는 이벤트 특히 Spark가 어떻게 실행될지에 대한 plan을 Kafka로 보내주는 역할을 합니다. 2. Analyser - Flink application이고 Spark Event Listener가 Kafka로 보내준 이벤트를 구독해서 Excessive Partition Scan(과도한 파티션 스캔), Duplicate Spark Plan (중복 Spark Plan)을 분석해서 감지합니다. 최적화되지 않은 Spark Job으로 판단이 되면 AntiPattern 이벤트를 Kafka로 보내주는 역할을 합니다. Analyser에서 알려준 AntiPattern들을 기반으로 분석해서 해당 Spark Job의 오너에게 지라로 비효율이 있음을 알려줘서 개선할 수 있도록 해줍니다. 처음부터 잘 구현하는 것이 언제나 좋지만 실제로 매번 그렇게 하는 것은 어렵기도 하고, 조직이 커질 수록 더더욱 어려워집니다. 그렇다면 Uber의 사례와 같이 비효율적인 작업들을 잘 감지할 수 있는 시스템이 있으면 개선을 할 수 있는 부분들이 많아집니다. https://www.uber.com/en-US/blog/spark-analysers-catching-anti-patterns-in-spark-apps/

알림

알림이 없습니다