본 내용은 러닝스파크 책을 참고하였음.


Apache Spark?


- Apache Spark 범용적이면서도 빠른 속도로 작업을 수행할 수 있도록 설계한 클러스터용 연산 플랫폼


(속도 측면)

- 맵리듀스 모델을 대화형 명령어 쿼리나 스트리밍 처리 등이 가능하도록 확대

- 속도를 높이기 위해 연산을 메모리에서 수행하도록 함. , 복잡한 프로그램을 디스크에서 돌리더라도 맵리듀스

보다 뛰어난 성능

(범용적 측면)

- 스파크는 기존에 각각 분리된 분산 시스템에서 돌아가던 배치 어플리케이션, 반복 알고리즘, 대화형 쿼리, 스트

리밍 같은 다양한 작업 타입을 동시에 커버할 수 있도록 설계

-> 이런 워크로드들을 단일 시스템에서 지원하게 됨에 따라 스파크는 실제의 데이터 분석 파이프라인에서도 서로 다른 형태의 작업을 쉽고 저비용으로 연계 가능하게 함

- 스파크는 고수준에서 접근하기 쉽게 설계되어 있어서 파이썬, 자바, 스칼라, SQL API 및 강력한 Lib 내장 지원

-> 특히 하둡 클러스터 위에서도 실행 가능하며, 카산드라를 포함하는 어떠한 하둡 데이터 소스에도 접근 가능


- 맵리듀스가 반복적인 대화형 연산 작업에는 비효율적이라는 것을 발견

-> 스파크는 시작부터 인메모리 저장 장치 및 효과 적인 장애 복구 지원 같은 개념에 기반하여 대화형 쿼리와, 반복성 알고리즘에 빠르게 동작하도록 설계


Apache Spark 구성요소

- Spark는 다수의 작업 머신이나 클러스터 위에 돌아가는 많은 연산 작업 프로그램을 스케줄링/분배/감시역할 수행



1) Spark Core

- 작업 스케줄링, 메모리 관리, 장애 복구, 저장 장치와의 연동 등 기본 기능들로 구성

- RDD(Resilient Distributed Dataset)를 정의하는 API의 기반이 되며, 이것이 주된 스파크 프로그래밍 추상화 구조

-> RDD 는 여러 컴퓨터 노드에 흩어져 있으면서 병렬 처리 될 수 있는 아이템들의 모음을 표현


2) Spark SQL (Spark 1.0부터 지원)

- 정형 데이터를 처리하기 위한 패키지 (Hive 테이블, Parquet, JSON 등 다양한 데이터 소스 지원)


3) Spark Streaming

- 실시간 데이터 스트림을 처리 (로그 파일, 메시지 Queue 등 포함)


4) Mllib

- 다양한 머신 러닝 알고리즘 지원 (Classification, Regression, Clustering, Collaborative Filtering )

- Gradient Descent 최적화 알고리즘 같은 저수준의 ML 또한 지원


5) Graph X

- 그래프를 다루기 위한 라이브러리


6) Cluster Manager

- 노드에서 수천 노드까지 효과적으로 성능을 확장할 수 있도록 만들어짐

- 이를 달성하기 위해 Yarn, Apache Mesos, 스파크에서 지원하는 가벼운 구현의 단독 스케줄러 등 다양한 Cluster Manager위에서 동작 

'기타 > 분산 컴퓨팅' 카테고리의 다른 글

Spark RDD 개념 및 예제  (0) 2017.04.07
Apache Spark 설치  (0) 2017.04.07
아파치 하둡 맵리듀스  (0) 2017.04.01
아파치 하둡 HDFS 사용법(Cloudera 사용)  (0) 2017.03.31
아파치 하둡 소개  (0) 2017.03.31

+ Recent posts