HDFS 에서 돌아가는 맵리듀스 프레임워크의 단점
- 번거로운 운영 복잡도로 인해 관리가 쉽지 않다.
- 일반적인 배치 처리르 위한 맵리듀스 API는 장황하고 많은 양의 기본 셋업 코드를 필요로 하며, 장애 대응이 불안정하다.
- 방대한 배치 데이터 작업을 수행하면서 많은 MR 태스크가 필요해지면 각 태스크는 이후의 단계를 위해 중간 과정의 데이터를 로컬 디스크에 써야 했다. → 디스크 I/O작업은 실행 시간에 큰 타격을 주었다.
- 하둡 MR은 일반적인 배치 처리를 위한 대규모 작업에는 적당하지만 머신러닝이나 스트리밍, 상호 반응하는 SQL 계통의 질의 등 다른 워크로드와 연계하기에는 한계가 있다.
아파치 스파크란
- 대규모 분산 처리를 위해서 설계된 통합형 엔진
- 중간 연산을 위해 메모리 저장소를 지원하여 하둡 맵리듀스보다 훨씬 빠르게 동작할 수 있다.
- 머신러닝, SQL, 스트리밍 처리, 그래프 처리 등을 위해 쉽게 사용 가능한 API로 이루어진 라이브러리를 가진다.
- 스파크 설계 철학 : 속도, 사용 편리성, 모듈성, 확장성
속도
- 하드웨어 산업의 발전으로 CPU, 메모리 성능이 향상되었으며, 상용 서버는 수많은 코어, 효과적으로 멀티스레딩과 병렬 처리를 지원하는 유닉스 기반 OS 등이 포함되어 있다. 스파크 프레임워크는 이 모든 요소들로부터 이득을 얻을 수 있도록 설계되었다.
- 스파크는 질의 연산을 방향성 비순환 그래프(DAG, directed acyclic graph)로 구성한다. 이는 효율적인 연산 그래프를 만들어서 각각의 태스크로 분해하여 클러스터의 워커 노드 위에서 병렬 수행될 수 있도록 해 준다.
- 물리적 실행 엔진인 텅스텐(Tungsten)은 전체적 코드 생성(whole-stage code generation)이라는 기법을 사용하여 실행을 위한 간결한 코드를 생성해낸다. (3장)
- 모든 중간 결과는 메모리에 유지되며, 디스크 I/O를 제한적으로 사용하므로 성능이 크게 향상된다.
사용 편리성