스파크 기본 아키텍처 스파크는 클러스터의 데이터 처리 작업을 관리하고 조율한다. 스파크가 연산에 사용할 클러스터는 Spark Standalone Cluster Manager, Hadoop YARN, Mesos 와 같은 클러스터 매니저가 관리한다. 유저가 스파크 어플리케이션을 스파크 클러스터 매니저에 submit 하면 클러스터 매니저는 자원을 할당한다. 스파크 어플리케이션 스파크 어플리케이션은 드라이버 프로세스(Driver Process)와 다수의 익스큐터 프로세스 (Executor Process) 로 구성된다. 드라이버 프로세스는 main() 함수를 실행한다. 익스큐터 프로세스는 드라이버 프로세스가 할당한 작업을 수행한다. 그리고 진행 상황을 다시 드라이버 노드에 보고한다. 스파크 API 스파크 API ..
아파치 스파크 (Apache Spark) 란 통합 컴퓨팅 엔진이며 클러스터 환경에서 데이터를 병렬로 처리하는 '라이브러리'들의 집합이다. 1. 컴퓨팅 엔진 여기서 스파크가 '컴퓨팅 엔진' 이라는 의미는 스파크는 저장소 시스템의 데이터를 연산하는 역할만 수행하며 스파크가 직접 빅데이터들을 영구적으로 저장하는 저장소의 역할은 하지 않는다는 의미로 이해할 수 있다. 이러한 점은 Apache Hadoop 과 같은 기존의 빅데이터 플랫폼과의 차별점이 된다. Hadoop의 경우 하둡 파일 시스템과 컴퓨팅 시스템인 맵리듀스라는 두 가지 시스템이 매우 밀접하게 얽혀있어서 둘 중 하나만 단독으로 사용하기 어렵다. 반면, Spark의 경우에는 연산 작업을 수행하는 노드와 저장소를 별도로 구성할 수 있다는 장점이 있다. 2..
RDD ? RDD는 Resilient Distributed Dataset 의 줄임말로 스파크의 기본 데이터 구조이다. Spark 에서 모든 작업은 새로운 RDD를 만들거나, 변형하거나, 연산하는 것 중 하나이다. Spark 에서는 빠른 맵리듀스 작업을 위해서 RDD를 사용해 처리한다.즉, 하둡에서의 맵리듀스의 단점을 보완하기 때문에 RDD로 대세가 바뀌게 되었다. 하둡에서의 Map Reduce 중간 결과에 대해 데이터 복제, I/O 직렬 수행으로 인해 오버헤드가 발생한다는 문제점이 있다. RDD라는 아이디어에 따르면, 메모리 내에서 데이터를 공유한다. 네트워크나 디스크에서 작업하는 것보다 메모리에서 작업하게 되면 10배에서 100배정도 더 빠르다. memory 의 내용을 read-only 로 사용하게 한..