Miner

Spark(1) 본문

데이터 엔지니어링/Spark

Spark(1)

MineTime76 2024. 1. 22. 16:58

요약

  • 빅데이터의 처리를 위해 하둡이라는 오픈소스가 등장

분산 파일 시스템(HDFS)과 분산 컴퓨팅 시스템(맵리듀스/YARN)으로 구성

맵리튜스 프로그래밍의 제약성으로 인해 SQL이 재등장

  • Spark은 대세 대용량 데이터 분산 컴퓨팅 기술

Pandas + Scikit Learn의 스테로이드 버전

SQL과 스트림 데이터와 그래프 처리도 제공


빅데이터의 정의 :

1. 서버 한대로 처리할 수 없는 규모의 데이터

판다스로 처리해야 할 데이터가 너무 커서 처리가 불가능하다면 어떻게 할 것인가?

2. 기존의 소프트웨어로는 처리할 수 없는 규모의 데이터 - 대표적인 기존 소프트웨어 오라클이나 MYSQL과 같은 관계형 데이터베이스 (분산환경을 염두해 두지 않음, Scal-up 접근방식(vs. Scale-out) : 메모리 추가, CPU 추가, 디스크 추가)

3. 4V - Volume : 데이터크기 대용량, Velocity :  데이터의 처리 속도, Variety : 구조화/비구조화 데이터, Veracity : 데이터의 품질

 

빅데이터의 예시

모바일 디바이스(위치 정보), 스마트 TV, 각종 센서 데이터(IOT 센서), 네트워킹 디바이스

웹 : 

수십 조개의 웹 페이지가 존재, 웹 검색엔진 개발은 진정한 대용량 데이터 처리( 웹 페이지를 크롤하여 중요한 페이지를 찾아내고 (페이지 랭크) 인덱싱하고 서빙, 구글이 빅데이터 기술의 발전에 지대한 공헌)

사용자 검색어와 클릭 정보 자체도 대용량, 이를 마이닝하여 개인화 혹은 별도 서비스 개발이 가능, 검색어를 바탕으로한 트렌드 파악, 통계 기반 번역

요즘은 웹 자체가 NLP 거대 모델 개발의 훈련 데이터로 사용되고 있다.

 

빅데이터 처리의 특징 :

먼저 큰 데이터를 손실없이 보관할 방법이 필요 : 스토리지

처리 시간이 오래 걸림 : 병렬 쳐리

이런 데이터들은 비구조화된 데이터일 가능성이 높음 : SQL 만으로는 부족 (ex : 웹 로그 파일)

 

해결 방안 :

큰 데이터를 손실없이 보관할 방법이 필요  - 큰 데이터 저장이 가능한 분산 파일 시스템이 필요

시간이 오래 걸림 - 병렬 처리가 가능한 분산 컴퓨팅 시스템이 필요

이런 데이터들은 비구조화된 데이터일 가능성이 높음 - 비구조화 데이터를 처리할 방법이 필요

결국 다수의 컴퓨터로 구성된 프레임워크가 필요하다. 

 

대용량 분산 시스템

분산 환경 기반(1대 혹은 그 이상의 서버로 구성) - 분산 파일 시스템과 분산 컴퓨팅 시스템이 필요

Fault Tolerance - 소수의 서버가 고장나도 동작해야 함

확장이 용이해야 함 - Scale Out 이 되어야함

 

하둡(Hadoop)

분산 파일 시스템(HDFS) / 분산 컴퓨팅 시스템(MapReduce) - 병렬처리

다수의 노드로 구성된 클러스터 시스템 - 마치 하나의 거대한 컴퓨터처럼 동작, 사실은 다수의 컴퓨터들이 복잡한 소프트웨어로 통제됨

하둡 2.0 버전 ~

Storage Layer - HDFS

Resource Management Layer - YARN(분산 컴퓨팅 시스템)

Application Layer - Mapreduce, Spark, Tez..

 

하둡은 Yarn 이란 이름의 분산처리 시스템 위에서 동작하는 애플리케이션이 됨

Spark는 Yarn 위에서 애플리케이션 레이어로 실행된다.  

 

분산 파일 시스템 HDFS 

  • 데이터를 블록단위로 나눠 저장 - 블록의 크기는 128MB (디폴트)
  • 블록 복제 방식(Replication) - 3군데 중복 저장됨, Fault Tolerance를 보장할 수 있는 방식으로 이 블록들은 저장된다.
  • 하둡 2.0 네임노드 이중화 지원 - Active & Standby (둘 사이에 share edit log가 존재,  Secondart 네임노드는 여전히 존재)

 

MapReduce : 분산 컴퓨팅 시스템

  • 하둡 1.0 에서 만
  • 하나의 잡 트래커와 다수의 태스그, 트래커로 구성됨 - 잡 트래커가 일을 나눠서 다수의 태스크를 트래커에게 분배
  • 태스크 트래커에서 병렬처리
  • MapReduce 만 지원 - 재너럴한 시스템이 아님, 효율적이지 않아서 하둡 1.0에서는 구조화된 데이터를 처리하기 위해 다른 프로그램들을 설치

하둡 1.0의 분산 컴퓨팅 시스템 구조

 

'데이터 엔지니어링 > Spark' 카테고리의 다른 글

Spark(6) - Spark 사용  (0) 2024.01.30
Spark(5) - Spark  (0) 2024.01.30
Spark(4) - Install Hadoop  (0) 2024.01.22
Spark(3) - MapReduce 프로그래밍  (0) 2024.01.22
Spark(2) - Yarn  (0) 2024.01.22