ML,DL,Bigdata/Big Data

[Spark] Apache Spark

주죵 2021. 4. 4. 17:44
728x90
반응형

Big Data?

요새 여기저기서 너도 나도 빅데이터 빅데이터 합니다. 사실 단어 그대로 매우 큰 데이터가 빅데이터이구요.  하지만 말그대로 '큰 데이터'라고 빅데이터라고만 하는건 아닐테니 통상적으로 쓰이는 '빅데이터'라는 의미가 무엇인지 알아보겠습니다.

 

"빅데이터란 기존의 데이터베이스 관리도구 능력을 넘어서는 대량의 정형 또는 비정형 데이터(DB 형태가 아닌데이터)의 집합조차 포함한 데이터로부터 가치를 추출하고 결과를 분석하는 기술이다."

 

위키피디아가 말해준 빅데이터입니다. '기존 DB에서 처리하기 힘든 대량의 데이터'와 이곳에서 가치를 추출하고 분석하는것이 빅데이터의 정의이자 핵심이라고 보면 되겠네요.

 

Why Spark?

빅데이터의 효율적 관리, 처리를 위해 구글에서 2004년 MapReduce란 기술을 발표합니다.

대용량의 데이터를 하나의 컴퓨터로 저장, 처리하는건 불가능하겠죠? 하지만 여러대의 컴퓨터로 분산시켜 저장하고 관리한다면 처리속도면에서도 효율적이고, 데이터 손실의 리스크도 줄일 수 있습니다. MapReduce는 이와 같은 분산 저장소에 존재하는 데이터를 변환, 계산하기 위한 프레임워크입니다. 이 기술에 기반해 오늘날 흔히 쓰이는 

hadoop이 개발되었구요.

 

하지만 MapReduce의 치명적인 단점은 반복연산의 경우 처리효율이 떨어진다는 겁니다.

MapReduce를 한번 할때마다

데이터 로드 > 연산 > 데이터 write

의 과정을 반복합니다. 단순연산은 문제가 없겠지만 여러번의 반복연산이 일어난다면 데이터를 반복적으로 읽고 쓰는 I/O가 발생하는건 비효율적이겠죠?

 

하지만 Spark는 다단계 연산, 반복연산에서 결과를 바로 입력(write)해버리지 않고 메모리에 저장합니다. 따라서 매번 디스크에 데이터를 쓰고 다시 읽기를 반복하는것에 비하면 훨씬 빠르게 데이터를 처리할수 있습니다.

+ Apache Spark 확장 프로젝트

Spark 엔진으로 하는 확장 프로젝트들이 같이 제공됩니다.

  • Spark SQL : SQL로 데이터를 분석
  • Spark Streaming : 실시간 Streaming 데이터 분석. 작
  • MLib : 머신러닝 라이브러리
  • GraphX : 페이지랭크와 같은 그래프 분석

Spark Streaming은 스트림 데이터를 아주 작은 윈도우로 만들어 짧은 단위로 연산을 수행 및 처리하는 방법입니다.

 

728x90