본문 바로가기
Book & Lesson

[책정리]빅데이터를 지탱하는 기술 3.1 대규모 분산 처리의 프레임워크

by 카프리썬_ 2021. 6. 22.
728x90

6월 선정도서 - 빅데이터를 지탱하는 기술

선정계기 - 데이터가 쌓이고 흐르는 전체적인 구조를 깊이 있게 이해할 수 있고,

미래의 데이터엔지니어로써 해야하는 업무들의 전반적인 흐름을 파악할 수 있을 것 같아 선정(기대가 된다

 

목차 

챕터3. 빅데이터의 분산처리 

3-1. 대규모 분산처리의 프레임워크

3-2. 쿼리엔진

3-3. 데이터마트의 구축 

 

 

데이터 처리를 분산하기 위해서 그 실행을 관리하기 위한 프레임워크, Hadoop과  Spark


구조화 데이터 vs 비구조화 데이터 

구조화데이터(정형데이터) : 테이블의 칼럼명, 데이터형, 관계와 같은 스키마가 명확하게 정의된 데이터

비구조화데이터(비정형데이터) : 텍스트, 이미지,동영상 등 스키마가 없는 데이터 

스키마리스 데이터(반정형데이터) : CSV,JSON,XML등 서식은 정해져있지만 칼럼수,데이터형이 명확하지 않은 데이터 

 

 

2020.01.19 - 정형데이터 vs 비정형데이터 (RDBMS VS NOSQL)

 

그리고 비정형데이터와 스미카리스 데이터는 '분산스토리지' 즉, 열 지향 스토리지'에 보관한 뒤,

SQL로 집계 가능한 '구조화된 데이터로 변환'한다.

 

이를 위해 하둡과 스파크가 필요하다. 

비구조화 데이터를 읽어들여 Apache ORC, Apache Parquet 등 구조화된 데이터로 변환하여

이들을 형식에 맞는 열 지향 스토리지에 보관하고, 쿼리엔진에서 집계 할 수 있다. 


Hadoop

하둡이란?

대규모 분산 시스템을 구축하기 위한 공통 플랫폼 역할. 

단일 소프트웨어가 아니라 분산시스템을 구성하는 다수의 소프트웨어로 이루어진 집합체 .

 

구성요소

  • 분산파일시스템 : HDFS
  • 리소스관리자 : YARN
  • 분산데이터처리 : MapReduce

분산파일시스템은 HDFS, 리소스관리자 Mesos, 분산데이터처리 Spark 처럼 하둡을 일부만 사용할 수 도 있다. 

 

분산파일시스템 : HDFS

하둡에서 처리되는 데이터이 저장된다.

네트워크에 연결된 파일서버와 같은 존재지만, 다수의 컴퓨터에 파일을 복사하여 중복성을 높인다. 

 

리소스관리자 : YARN

CPU나 메모리 등의 계산 리소스가 관리한다. 

애플리케이션이 사용하는 CPU코어와 메모리를 컨테이너라 불리는 단위로 관리한다. 

하둡에서 분산애플리케이션을 실행하면, YARN이 클러스터 전체의 부하를 보고 비어있는 호스트부터 컨테이너를 할당

 

한정된 리소스로 다수의 분산애플리케이션을 동시 실행해야하기 때문에,

어느 애플리케이션에 얼마만큼의 리소스를 할당할지 관리해야함.

YARN은 OS수준의 가상화가 아니라 어떤 호스트에서 어떤 프로세스를 실행시킬 것인지 결정하는 수준

 

분산데이터처리 : MapReduce,Hive,Tez

분산시스템에서 데이터처리를 실행하는데 사용된다.

MapReduce는 임의의 자바프로그램을 실행시켜 비구조화 데이터를 가공.

Hive는 SQL 쿼리언어 의한 데이터집계를 처리할 때 사용. 

 

이들은 대량의 데이터를 배치처리하기 위한 시스템이다. 

한번 실행하면 분산파일시스템에서 대량의 데이터를 읽을 수 있지만, 작은 프로그램을 실행하려면 오버헤드가 넘 큼.

따라서, 시간이 오래걸리는 배치처리에는 적합하나 짧은 쿼리실행이나 애드혹 쿼리를 여러번 실행하는데는 부적합 

 

Tez(테즈)는 Hive와 MapReduce보다 가속화 (하둡의 연장선)

Tez에서는 스테이지의 종료를 기다리지 않고, 처리가 끝난 데이터를 차례때로 후속처리에 전달해서 쿼리실행시간 단축 

 

 

분산데이터처리 중 대화형쿼리엔진 : Impala, Presto

처음부터 대화형의 쿼리실행만 전문으로 하는 쿼리엔진.

이들은 YARN과 같은 리소스관리자를 사용하지 않고, sql의 실행만 특화한 독자적인 분산처리 구현

 

일반적인 분산데이터처리 방식과 대화형쿼리엔진의 차이점?

MapReduce와 Tez는 장시간의 배치처리를 가정해 한정된 리소스를 효율적으로 사용하도록 설계.

대화형쿼리엔진은 순간최대속도를 높이면서 최대한 리소스를 사용할 수 있게 쿼리를 실행

따라서, 이미 완성된 구조화 데이터를 대화식으로 집계하고자 할때 적합

 


Apache Spark

Spark(스파크)는 대량의 메모리를 활용하여 고속화 실현. 

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

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

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

2021.04.22 - Apache Spark란? | 구조 및 동작방식

 

 

SQL쿼리를 실행하기 위한 Spark SQL과 스트림처리하기 위한 Spark Streaming 기능이 있다.

따라서 배치처리 뿐만 아니라 SQL에 의한 대화형쿼리실행과 실시간 스트림 처리까지 널리 사용

반응형