로그 1억 건 처리 졸업 프로젝트에서 Spark 파티셔닝 실수를 고쳐 8배 성능을 낸 경험
Spark를 처음 써본 건 졸업 프로젝트에서 로그 데이터 1억 건 처리를 단일 머신으로 하다가 시간이 너무 걸려서였습니다. 분산 처리가 뭔지 개념만 알고 있었는데, 실제로 클러스터를 로컬에서 띄워보고 스테이지 분리와 셔플 비용이 병목이라는 걸 직접 확인했습니다. 처음 짠 코드가 오히려 단일 처리보다 느렸는데, 그 이유가 파티셔닝 전략이 잘못됐기 때문이었습니다.
키를 제대로 고르지 않아서 특정 익스큐터에 데이터가 쏠렸습니다. 이후 파티션 수를 조정하고 브로드캐스트 조인을 적용하면서 처리 시간이 8배 줄었습니다. Flink는 실시간 처리를 따로 공부하면서 개념만 잡고 있고, 아직 제품 수준으로 써본 적은 없습니다. 그 프로젝트 이후로 분산 처리 코드를 짜기 전에 데이터 흐름을 먼저 그리는 습관이 생겼습니다.