스파크 RDD 기반 병렬 Eclat 알고리즘 연구

스파크 RDD 기반 병렬 Eclat 알고리즘 연구
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

본 논문은 Spark RDD 환경에서 Eclat 알고리즘을 병렬화한 RDD‑Eclat을 제안하고, 다섯 가지 변형을 설계한다. 기존 Hadoop MapReduce 기반 FIM 알고리즘이 디스크 I/O에 취약한 반면, Spark의 메모리 중심 처리와 RDD의 불변성·분산 특성을 활용해 반복 연산을 효율화한다. 실험 결과 RDD‑Eclat은 Spark‑Apriori보다 수배 빠른 성능을 보이며, 코어 수와 데이터 규모가 증가함에 따라 선형적인 확장성을 확인하였다.

상세 분석

RDD‑Eclat은 전통적인 Eclat이 “수직 데이터베이스” 형태로 아이템‑트랜잭션 매핑을 이용해 후보 집합을 확장하는 방식을 Spark RDD의 변환 연산에 매핑한다. 핵심 아이디어는 (1) 각 아이템에 대한 트랜잭션 ID 집합(TID‑set)을 RDD로 표현하고, (2) TID‑set 간 교집합 연산을 join·mapPartitions 등 변환으로 구현해 메모리 내에서 수행한다는 점이다. 논문은 다섯 가지 변형을 제시한다.

  1. Basic‑RDD‑Eclat: 가장 단순히 아이템‑TID‑set을 groupByKeyflatMap으로 교집합을 구한다.
  2. Partition‑Optimized: 데이터 파티션을 사전에 균등하게 분배해 각 파티션 내에서 로컬 교집합을 수행하고, 결과만 다시 합친다. 이는 네트워크 셔플을 최소화한다.
  3. Cache‑Enhanced: 빈번히 사용되는 TID‑set을 persist(StorageLevel.MEMORY_ONLY)로 캐시해 재사용을 촉진한다. 메모리 압박이 심할 경우 MEMORY_AND_DISK 전략을 적용한다.
  4. Hybrid‑Apriori: 초기 단계에서 지원도가 높은 1‑itemset을 Apriori 방식으로 빠르게 추출하고, 이후 단계부터 Eclat 교집합을 적용한다. 이는 후보 폭발을 억제한다.
  5. Dynamic‑Load‑Balancing: 실행 중 파티션별 작업량을 모니터링해 repartition을 동적으로 수행, 작업 불균형을 완화한다.

각 변형은 Spark의 shuffle 비용, 메모리 사용량, CPU 활용도 관점에서 서로 다른 트레이드오프를 제공한다. 실험에서는 대표적인 FIM 벤치마크(Chess, Connect, Kosarak, Retail 등)를 사용해 최소 지원도 0.1%~5% 범위에서 성능을 측정하였다. 결과는 다음과 같다.

  • 속도: Basic‑RDD‑Eclat이 Spark‑Apriori 대비 평균 6배, Partition‑Optimized는 8배, Hybrid‑Apriori는 10배 이상 가속을 달성.
  • 스케일러빌리티: 코어 수를 4→16으로 늘릴 때 처리 시간은 거의 선형적으로 감소했으며, 데이터 크기를 10배 확대해도 메모리 오버플로 없이 정상 수행.
  • 메모리 효율: Cache‑Enhanced 변형은 동일 데이터셋에 대해 20~30% 메모리 사용량 감소와 15% 응답 시간 단축을 기록.

또한, 논문은 Spark RDD의 불변성 특성이 알고리즘 설계에 미치는 영향을 논의한다. RDD는 변형이 불가능하므로, 각 단계에서 새로운 RDD를 생성하는 비용이 존재한다. 이를 최소화하기 위해 mapPartitionsaggregateByKey를 활용해 파티션 내부에서 가능한 한 많은 연산을 수행하도록 설계하였다. 이러한 설계는 GC(가비지 컬렉션) 압력을 낮추고, 장기 실행 작업에서 안정성을 높인다.

한계점으로는 매우 희소한 데이터셋에서 TID‑set이 큰 메모리 블록을 차지해 캐시 효율이 떨어지는 점, 그리고 join 연산이 여전히 네트워크 셔플을 발생시켜 클러스터 규모가 매우 클 경우 병목이 될 가능성이 제시된다. 향후 연구에서는 DataFrame/Dataset API와 Catalyst 옵티마이저를 활용한 비용 기반 연산 재배치, 그리고 GPU 가속을 통한 교집합 연산 가속화 방안을 제안한다.

전반적으로 RDD‑Eclat은 Spark 환경에서 반복적인 교집합 연산을 효율적으로 구현함으로써, 기존 MapReduce 기반 FIM 알고리즘이 갖는 디스크 I/O 병목을 극복하고, 메모리 중심의 고성능 데이터 마이닝을 실현한다는 점에서 의미가 크다.


댓글 및 학술 토론

Loading comments...

의견 남기기