[컴] Apache Spark

 아파치 스파크 /

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 들은 다음 순서로 동작했다.
      1. input data 를 disk 에서 읽었고,
      2. data 에 함수(function)을 map하고
      3. map의 결과를 reduce 하고
      4. reduce 한 결과를 disk 에 저장.
  • Spark 의 RDDs 는 분산 프로그램들을 위한 working set 로 동작한다.
    • 의도적으로 제한된 형태의 분산 공유 메모리(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

  1. Databricks 이용해서 apache spark 사용해보기
  2. 쿠...sal: [컴] hadoop - spark 테스트 환경
  3. Spark 의 핵심은 무엇인가? RDD! (RDD paper review) : 좀 더 자세한 내용을 알 수 있다.
    1. pdf file : Spark 의 핵심은 무엇인가? RDD! (RDD paper review)

References

  1. Overview - Spark 3.1.1 Documentation
  2. SPARKSQL vs RDBMS Database Query Benchmark pdf 

댓글 없음:

댓글 쓰기