본문 바로가기
🌿 Data Engineering/Study

[Spark] Apache Spark란? | Spark정의를 알아보기까지 빅데이터흐름

by 카프리썬_ 2021. 4. 21.
728x90
728x90

Spark란?

한마디로 정의하면 빅데이터처리를 위한 오픈소스 분산처리 플랫폼 또는 빅데이터 분산처리엔진이다. 

 

이 한 줄에서 내가 궁금한점은 이렇다 

- 빅데이터란?

- 빅데이터 처리란 무엇인가? 

- 분산처리는 또 무엇인가? 

 

그래서 위의 내용을 토대로 spark가 무엇인지 오늘 공부해보려고 한다. 


빅데이터(Bigdata)란?

기존의 데이터베이스, 데이터베이스관리형시스템을 넘어

정형,반정형,비정형데이터를 포함한 다양한 데이터로부터 의미있는 가치를 추출하고 원하는 결과를 분석하는 기술이다.

즉, 큰 데이터로부터 유의미한 지표를 분석해내는 것으로 정의할 수 있다

예를 들어 SNS,로그,문서 등 다양한 경로를 통해 수집한 여러형태의 데이터를 이용하여

의사결정에 도움을 주는 지표를 분석하여 제공하는 것이다. (출처 : WikiDocs)

빅데이터기술은 대규모데이터를 '생성'하고, '수집'하면서, '분석'한 뒤 '표현'하기까지 특징을 갖는다. 

 

데이터양이 점점 증가하면서 새로운 형식의 데이터들도 생겨나고, 

데이터베이스 관리시스템(RDBMS)가 저장하고 관리하는데 한계가 있어

빅데이터에 대한 패러다임이 점점 바뀌기 시작했다. 

 

빅데이터는 늘 달고다니는 문제점이 있다. 바로 사생활침해와 보안이다. 

공공데이터나 개인들의 정보의 집합도 빅데이터가 되는데

이를 수집하고 분석하며 처리하는데 사생활침해문제가 생길 수 있다는 것이다.

이렇게 모은 데이터가 유출이 되지 않기 위해서 보안도 늘 중요하게 따라온다. 

 

사실 빅데이터를 명백하게 정의하기는 어렵다.

시대에 따라, 사람에 따라, 관점에 따라 해석이 달라지기 때문이다. 

가장 최근까지 7V로 부르기도 했다.

-규모(Volume) : 데이터의 크기가 큰 데이터

-다양성(Variety) : 다양한 종류의 데이터 

-속도(Velocity) : 빠르게 처리하고 분석할 수 있는 데이터

-신뢰성(Veracity) : 신뢰할 수 있는 데이터

-가치(Value) : 비즈니스적으로 가치 있고 유용한 데이터

-정확성(Valiaity) : 어떤결정을 내리는데 타당하다고 판단할 수 있는 데이터

-휘발성(Volatility) : 오래저장되고, 오랫동안 사용할 수 있는 데이터

하지만 가장 중요한 속성은 규모,다양성,속도가 가장 큰 특징으로 볼 수 있다.

 

빅데이터 처리란?

빅데이터처리는 말그래도 위에서 정의한 빅데이터를 처리하는 것이다.

그러니까 데이터로부터 유의미한 결과를 만들어내기까지 과정이라고 이해할 수 있겠다. 

그래서 빅데이터는 데이터 자체가 목적이라기 보다

데이터를 잘 수집하여 저장하고, 잘 분석해서 유용하게 활용하는 것이 목표다.

 

이 과정은 5단계로 이루어진다.

0.데이터소스

본격적인 빅데이터처리이전의 준비물이라 하겠다. 빅데이터처리를 하기 이전 쌓인 데이터들을 말한다.

ex) DBMS나 시스템 내부의 데이터, SNS나 공공데이터와 같은 외부데이터, 이미지,영상 등 미디어처리 데이터

1.수집

비즈니스 목적에 맞게 데이터소스들을 수집하는 단계이다.

예를 들어 시스템이나 프로그램을 활용하여 로그를 수집한다거나, 크롤링하는 방법이 있다. 

*ETL작업 : 스데이터를 추출(Extract)하고, 전송(Transfer)해서 적재(Load)하는 방법

어떻게? ex) Kafka, Flume, Sqoop,Logstash 등을 활용하여 수집한다.

2.저장

정형/비정형/반정형 데이터에 따라 적절한 방법으로 빅데이터시스템에 저장하는 단계이다.

대량의 데이터를 안전하게 보관하고 분석할 수 있는 환경으로 옮긴다.

어디에? ex) NoSQL, RDB, 클라우드스토리지, HDFS 등 비정헝데이터베이스 

3.처리

그러나 수집한 데이터들을 모두 전부다 모조리 쓸 수 있는게 아니다.

데이터들 중 필요없는 데이터인거나, 깨진데이터들을 정리하는 단계이다.

그리고 데이터셋 중에서 원하는 부분만 추출하고, 분석을 위해 데이터를 재배치하는 등 데이터형태를 바꾸기도 한다.

*맵리듀스, 프로세싱

어떻게? 일괄처리,실시간처리, 분산병렬처리

4.분석

데이터를 분석할 수 있는 TYPE으로 전처리 한 후 수학적인 기법을 적용하는 단계이다.

적재한 데이터들을 의미있는 지표로 분석해서 

딥러닝,머신러닝 기법을 통해 예측,분류 등의 분석결과를 만들어낸다. 

즉, 대량의 데이터로부터 사실,추세,관계,패턴 등 알려지지 않은 정보 또는 지식을 찾아내는 과정이다

*NLP : 자연어처리,

*ML : 기계학습

어떻게? 데이터를 빠르게 분석하기 위한 처리엔진

5.표현

분석결과를 시각화 하는 단계이다.

그래프,DB,인포그래픽 등 다양한 형태로 직관적이고 보기편하게 표현한다.


각 단계별 자세한 내용은 아래에서 참고하길 바란다.

아래의 선행지식이 있어야 spark에 대해서 이해할 수 있게 된다.

휴 정말 스파크 하나를 알기 위해 여러개의 산을 올라가는 기분이 든다.

2021.04.21 - Apache Spark란? | 빅데이터처리단계 -수집과 저장

2021.04.22 - Apache Spark란? | 빅데이터 처리단계-처리방식/하둡/맵리듀스

 

이제 거의 다 도착했다. 드디어 spark를 알아볼 수 있게 되었다..

이전 사전내용을 이해했으니 왜 스파크가 등장하게 되었는가 이해가 되었다.

 

Spark란?

'고속' 범용 분산플랫폼이다.

Hadoop처럼 맵리듀스 방식으로 데이터를 분산처리하는 것은 같다.

하지만 '고속'이 붙는다. 

둘의 차이는 데이터를 메모리에 놓고 하느냐, 디스크에 놓고 하느냐이다. 

 

하둡은 기본적으로 디스크로부터 map/reduce할 데이터를 불러오고, 처리결과도 디스크에 쓴다.

그래서 데이터를 읽고 쓰는 속도가 느리다. 하지만 디스크용량만큼 데이터를 한번에 처리할 수 있다.

 

스파크는 메모리로부터 map/reduce할 데이터를 불러오고, 처리결과도 메모리에 쓴다.

그래서 데이터를 읽고 쓰는 속도가 빠르지만, 메모리용량만큼의 데이터만 처리할 수 있다.

구체적으로 메모리용량보다 큰 데이터를 처리할 때는 과부하가 걸릴수도 있다는 것이다. 

 

인메모리상에서 동작하기 때문에 반복적인 처리가 필요한 작업에서 하둡보다 더 빠르다. 

그리고 실시간 데이터처리에 대한 니즈가 등장하면서 스파크를 선호하게 되었다. 

 

인메모리 기반으로 빠르게 처리할 수 있다는 것이 대표적인 spark의 특징이다.

이밖에도 java,scala,python 등 다양한 언어를 지원한다. 

또한, text,json,parquet등 다양한 파일포맷도 지원한다. 

스파크 자체가 영구저장소가 되지 않기 떄문에

s3, HDFS등 파일시스템과 HBase등의 분산데이터베이스와 연동도 가능하다.

 

 

출처

spark정의 artist-developer.tistory.com/7

빅데이터처리과정 ikkison.tistory.com/69?category=785566

스파크와 맵리듀스차이점 wooono.tistory.com/50

728x90
반응형