ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spark] 스파크란 무엇인가?(spark 등장배경, 쓰는이유, 빠른이유)
    데이터 엔지니어링/Spark 2022. 6. 18. 19:25
    반응형

    스파크란?

    빅데이터 처리를 위한 오픈 소스 고속 분산처리 엔진이다. 스파크를 알기 위해서는 빅데이터의 문제를 알아야 한다. 우리가 아는 빅데이터랑 많은 양의 데이터를 뜻한다. 그런데 지금 빅데이터를 쌓아 오면서 생기는 문제점이 있었다.


    빅데이터 문제

    • 데이터의 규모가 증가
    • 데이터 규모의 증가로 인한 처리 속도 문제 
    • 데이터 포맷의 다양성 증가  

    빅데이터를 축적하여 활용할려 봤더니 데이터가 너무 많이 쌓이고, 그래서 이 규모를 처리할려고 하니 속도가 문제가 됬으며, 또한 파일 포맷( CSV, AVRO, Parquet등등) 엄청나게 다양한 파일 포맷이 등장하면서 종류도 많아졌다. 빅데이터 처리를 하기 위해서 많은 고민들을 해오게 되었다고 한다.

     

    Apache Hadoop의 등장

    이를 처리 하기 위해서 yahoo에서 hadoop을 만들게 된다.하둡은 HDFS라는 파일시스템, Yarn이라는 리소스관리, 연산처리를 하는 MR(Map Reduce)가 존재 하게 된다.hadoop은 분산형 파일 시스템을 기반으로 만들어져 데이터셋을 분산 처리를 할 수 있어 빅데이터의 문제점을 해결하는 듯 보였다.

     

    하지만 하둡의 문제점도 있었는데, 바로 연산처리 방식이였다. 하둡의 HDFS는 DISK I/O를 기반으로 동작하는데 현대 it기술로 진입하면서 DISK I/O의 빅데이터 처리 방식으로는 실시간성의 데이터를 처리하지 못하게 되었다. 

    Apache Spark를 쓰는 이유

    Spark는 Hadoop의 빅데이터 처리 방식은 맞지만, 속도가 느린 것을 해결하기위해 나왔다. Spark는 인메모리 방식의 연산처리를 지향하면서 MR의 연산 속도의 한계를 극복하기 위해 나왔다고 한다.그래서 Spark가 유명하고 많이 사용하는 것은 엄청나게 빠르기 때문이다. 그래서 스파크를 사용하면 빅데이터의 문제점을 어느정도 커버 할 수 있다. 즉 hadoop의 분산 처리 방식인 Map Reduce를 사용하지 않고 Spark를 사용하는 이유는 빅데이터를 연산처리 할 때 DISK I/O로 처리하는 것이 아니라 인메모리로 처리하기 때문에 실시간 스트리밍이 가능할 만큼 속도가 빠르기 때문이다.

     

     

     

     

    Apache Spark가 빠른 이유(처리 방식)

     

    Spark cluster 

    Driver Program : 우리가 작업하는 환경을 뜻한다 Script(java,python,scala)를 작성하는 것이라고 보면된다.
    Cluster Manager : 위에 작업한 script 내용을 실행 시키면 cluster manager가 worker node에게 일을 분배하여 처리 하게 해준다.
    (ex: Hadoop-yarn, aws-Eleatic MapReduce 등)
    Worker Node : Worker Node는 1CPU 하나당 1Node가 배치되어 인메모리 연산을 진행한다.

     

    spark는 Driver Program, Cluster Manager, Workder Node로 구성 되어 있다. 위와 같은 이유 때문에 인메모리 연산 분산 처리가 가능해져 속도가 빨라지게 되었다. 즉 Spark는 Cluster Manager가 Workder node를 알아서 CPU 로 할당하여 분산 처리를 하기 때문에 연산 속도가 빨라 졌다고 한다.

     


    Spark 구성 

    • Spark Core
    • Spark SQL
    • Spark Streaming
    • MLlib
    • GraphX


    Spark는 SQL, Streaming, MLlib, GraphX등을 사용하여 처리하는 방식이 여러가지로 진화 왔다고 한다. 또한 그림에서 볼수 있겠지만, SQL, Streaming, MLlib, GraphX등을 사용하여 연산을 처리 할 수 있으며, 아래와 같이 다양한 툴들과 연동되어 확장성 까지 같추었다. 이로써 빅데이터 연산 처리를 위해서는 꼭 필요한 존재가 되었다고 한다.

    반응형

    댓글

Designed by Tistory.