IT 정리/아파치 스파크

아파치 스파크 소개

유정임 2026. 4. 30. 10:55

아파치 스파크란?

- 빅데이터 위에서 쉽게, 유연하게 프로세싱 할 수 있는 툴 = 라이브러리

- 데이터 전처리를 하고 수집해서 데이터 엔지니어나 머신너링 엔지니어들이 쓰게 끔 함.

 

왜 아파치 스파크를 쓰는가?

  • High Performance
    • 기존 하둡 랩리듀스는 디스크베이스로 디스크 위에서 정리를 하고 네트워크를 통해 데이터를 셔플링 
    • 하둡보다 더 빠름 → 모든 데이터를 메모리 위에 올린 후 메모리에서 계산을 하고 데이터 셔플링을 할 때 네트워크 사용
  • Unified Platform for Big Data
    • 배치 프로세싱 - 시간 정해놓고 데이터 처리
    • 스트림 프로세싱 - 시냇물처럼 들어오는 움직이는(?) 데이터를 처리
    • SQL querying - 데이터 프레임 위에 sql을 가지고 query
    • ML
    • 그래프 분석
    • 이 보든 걸 결합하는 싱글 시스템
        전체적인 걸 다 가지고 있기 때문에 다른 툴이 필요 없음
  • Scalability
    • 클러스터(여러개의 노드를 모아놓은 것)
    • 비슷한 스펙을 가진 하드웨어를 수평적으로 확장하고 네트워크를 통해 교환
    • 대용량 데이터까지 처리 가능. 
    • 아파치 하둡 YARN, 아파치 메소스, 쿠버네티스 같은 클러스터 매니저와 같이 작동 
  • Flexibility
    • 파이썬, 자바, 스칼라, SQL, R 을 이용해서 쿼리 날릴 수 있음
    • 모든 데이터(대부분 데이터는 비정형)를 데이터 포맷을 이용해 정형/반정형 데이터로 구조화
  • Real-Time Data Processing
    • 스파크 스트리밍이라는 라이브러리를 통해 실시간 스트림(real-time data streams) 처리 가능
    • 배치 프로세싱과 스트림 프로세싱을 같은 코드를 이용해 다룰 수 있음

  • 클러스터에는 마스터 노드와 워커노드로 구성되어있음.
  • 마스터 노드는 1~2개, 워커 노드는 여러개
    1. 마스터 노드는 Driver Program이 Spark Context를 가지고 있음
    2. 클러스터 매니저가 메시지를 받으면 명령을 가지고 Worker Node안에 있는 Executor에다가 Task 시킴
    3. Task를 시켜서 처리 후 다시 Driver Program에 리턴 
  • Task가 프로세싱하다가 Cache할게 있으면 저장하다가 필요하다가 다시 사용
  • 많은 워커 노드들이 서로 셔플링하며 데이터 처리하며 분산 시스템을 만듦

 

왜 파이썬을 쓰는가?

  • Ease of Learning and Use
  • Rich Ecosystem
    • 많은 라이브러리로 편하게 사용 가능(numpy, pandas, scikit-learn etc)
  • Popular Combination

'IT 정리 > 아파치 스파크' 카테고리의 다른 글

Spark 기초(1)  (0) 2026.05.01
Spark 환경 설정  (0) 2026.04.30
Apache Spark 설치(window), jupyter 접속  (0) 2026.04.30
RDD, Docker 소개  (0) 2026.04.30
클러스터&스파크 아키텍쳐 소개  (0) 2026.04.30