아파치 스파크 /
Apache Spark
Spark overview
큰 규모의 데이터 프로세싱(large-scale data processing) 을 위한 통합 분석 엔진(unified analystics engine)이다.
- Java, Scala, Python, R 로 된 API 들을 제공한다.
- 일반적인 실행 그래프(general execution graphs)들을 지원하는 최적화된 엔진을 제공한다.
Spark 는 다음과 같은 더 높은 수준의 도구들을 가지고 있다.
- Spark SQL: 구조화된 data processing + SQL
- MLib : ML(Machine learning) 을 위해
- GraphX: 그래픽 프로세싱을 위해
- Structured Streaming : 증가하는 계산(incremental computation)과 streming processing 을 지원
Spark 의 사용처[ref. 2]
스파크는 부하의 넓은 범위를 커버하도록 디자인됐다. 이전에는 분리된 여러개의 분산 시스템들이 필요했었다. 다음 것들을 스파크 하나로 해결할 수 있다.
- batch applications
- 반복적 알고리즘(iterative algorithm)
- 반복적인 쿼리들(nteractive queries)
- streaming
이런 여러 다른 처리들은 데이터 분석 파이프라인(data analysis pipelines) 에서 종종 필요하다.
me: 개인적으로 Apache Spark 는 분산시스템에서 memory cache 의 역할을 하는 framework 같아 보인다.
cluster manager & distributed storage system[ref. 2]
Apache Spark 는 ‘cluster manager’ 와 ‘분산 저장 시스템(distributed storage system)’ 이 필요하다. 다음은 사용가능한 cluster manager 와 distributed storage system 들이다.
- cluster manager
- native Spark cluster(standalone)
- Hadoop YARN
- Apache Mesos
- distributed storage system
- Hadoop Distributed File System (HDFS)
- MapRFile System (MapR-FS)
- Cassandra
- OpenStack Swift
- Amazon S3
- Kudu
- a custom solution(직접 구현해서 사용할 수 있다.)
spark pseudo-distributed local mode[ref. 2]
Spark 는 테스트용으로 ‘pseudo-distributed local mode’ 를 지원한다. 대체로 distributed storage 가 필요치 않는 개발이나 테스트용으로 사용한다. 그래서 local file system 이 대신 사용된다.
이 때는 1개의 machine 위에서 cpu core 당 1개의 executor 가 할당돼서 동작한다.
RDD, Resilient Distributed Dataset[ref. 2]
Apache Spark 는 프로그래에게 Resilient Distributed Dataset(RDD) 라고 불리는 자료구조(data structure) 를 중심으로 한 API 를 제공한다.
- Resilient Distributed Dataset(탄력적이 분산 dataset)
- spark/RDD.scala at master · apache/spark · GitHub
- cluster 에 분산되어 있는 data items 의 read-only multiset 이다.
- MapReduce cluster computing paradigm 의 한계를 극복하고자 만들어졌다.
- 분산 프로그램들에게 특정 linear dataflow 구조를 강제했다.
- MapReduce program 들은 다음 순서로 동작했다.
- input data 를 disk 에서 읽었고,
- data 에 함수(function)을 map하고
- map의 결과를 reduce 하고
- reduce 한 결과를 disk 에 저장.
- Spark 의 RDDs 는 분산 프로그램들을 위한 working set 로 동작한다.
- 의도적으로 제한된 형태의 분산 공유 메모리(distributed shared memory) 를 제공한다.
- 의도적으로 제한된 형태의 분산 공유 메모리(distributed shared memory) 를 제공한다.
- 쿠…sal: [컴] RDD, Resilient Distributed Datasets
RDD의 유용성(availability)[ref. 2]
- iterative algorithm들의 구현을 용이하게 한다.
- iterative algorithm들은 loop 에서 dataset 을 여러번 방문한다.
- 대화형/탐색 적인 data 분석을 용이하게 한다.
- 반복되는 데이터베이스 스타일 data querying
- 이러한 애플리케이션의 지연 시간이 수십 배 정도 감소 할 수 있다.
- Apache Hadoop 스택에서 일반적으로 사용되는 MapReduce 구현과 비교했을 때 수십 배 정도 감소할 수 있다.
See Also
- Databricks 이용해서 apache spark 사용해보기
- 쿠...sal: [컴] hadoop - spark 테스트 환경
- Spark 의 핵심은 무엇인가? RDD! (RDD paper review) : 좀 더 자세한 내용을 알 수 있다.
댓글 없음:
댓글 쓰기