아파치 스파크 (Apache Spark)
쉽게 풀면
아파치 스파크는 아주 큰 데이터를 여러 컴퓨터에 나누어 동시에 처리할 수 있게 해주는 도구이다. 이전 세대 기술인 맵리듀스가 중간 결과를 매번 디스크에 기록했던 것과 달리, 스파크는 가능한 한 데이터를 메모리에 올려둔 채로 반복 계산을 수행해서 훨씬 빠른 속도를 낸다. 대규모 로그 분석이나 딥러닝 학습에 쓰일 데이터를 정제·전처리하는 파이프라인에서 자주 활용된다.
왜 중요한가
데이터 규모가 한 대의 컴퓨터로 감당할 수 없을 만큼 커지면, 연구든 실무든 여러 대의 컴퓨터에 작업을 나누어 처리하는 분산 처리 기술이 필요해진다. 아파치 스파크는 이러한 분산 처리를 비교적 쉬운 API로 다룰 수 있게 해주기 때문에, 대규모 데이터 전처리·특징 추출·로그 분석을 다루는 논문에서 실험 파이프라인의 기반 인프라로 자주 언급된다. 특히 대규모 말뭉치나 센서 데이터를 다루는 자연어처리, 추천시스템, 사물인터넷 관련 연구에서 데이터 준비 단계의 표준 도구처럼 쓰인다.
논문에서는 이렇게 쓰입니다
대량으로 수집한 웹 데이터를 여러 대의 컴퓨터에서 병렬로 처리하는 스파크를 이용해 정리했다는 뜻이다.
사물인터넷 등에서 끊임없이 들어오는 센서 데이터를 스파크의 스트리밍 기능으로 실시간에 가깝게 처리했다는 의미이다.
대량의 거래 데이터를 여러 노드에 나누어 특징을 뽑아내는 작업을 스파크의 내장 머신러닝 라이브러리로 처리했다는 뜻이다.
조금 더 깊게 보면
스파크의 핵심 개념 중 하나는 RDD(Resilient Distributed Dataset)와 이를 발전시킨 DataFrame 구조로, 데이터를 여러 노드에 나누어 저장하면서도 노드 장애 시 재계산을 통해 복구할 수 있게 설계되어 있다. 또한 스파크는 연산을 즉시 실행하지 않고 지연 실행(lazy evaluation) 방식으로 처리 계획을 최적화한 뒤 한꺼번에 실행하는 특징이 있는데, 이 덕분에 불필요한 중간 연산을 줄일 수 있다. 논문에서 성능을 논할 때는 처리 시간 외에도 셔플(shuffle) 비용, 파티션 수, 클러스터 노드 수 같은 설정값이 함께 언급되는 경우가 많으므로, 실험 재현성을 확인하려면 이러한 설정 정보를 같이 살펴보는 것이 도움이 된다.
주의할 점
스파크는 대규모 배치 데이터 처리에 강점이 있지만, 아주 작은 데이터셋이나 단순 작업에는 오히려 설정과 실행 오버헤드가 더 클 수 있다.