빅데이터를 지탱하는 기술[3]

Byungkyu Ju
byungkyu-ju
Published in
4 min readMay 3, 2020

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

다수의 컴퓨터에 데이터 처리를 분산하기 위해서는 실행을 관리하기 위한 프레임워크가 필요하다. 이 장에서는 Hadoop과 Spark를 중심으로 분산시스템의 구조를 살펴본다.

데이터 구조화의 파이프라인

분산 스토리지에 수집된 데이터는 명확한 스키마를 갖지 않는 것도 많으므로 그대로는 SQL로 집계할 수 없다. 따라서 스키마를 명확하게 한 테이블 형식의 구조화된 데이터로 변환하는것이 우선이다.

일반적으로 구조화 데이터는 데이터의 압축률을 높이기 위해 열 지향 스토리지로 저장하는데, 2장의 내용처럼 MPP 데이터베이스로 전송하거나 Hadoop상에서 열 지향 스토리지 형식으로 변환한다.

열 지향 스토리지의 작성

비구조화 데이터를 읽고 열 지향 스토리지로 변환하는 과정에서 데이터의 가공 및 압축을 위해 많은 리소스가 소비된다. 그래서 사용되는 것이 Hadoop과 Spartk등의 분산처리 프레임워크다.

Hadoop의 구성요소

  • HDFS — distributed file System
  • YARN — Resource Manager
  • MapReduce — distributed data processing

기본 구성요소는 위의 3가지지만, 이중 일부만 사용하거나 기능을 사용하지 않도록 구성할 수도 있다.

HDFS와 YARN

Hadoop에서 처리되는 데이터 대부분은 HDFS에 저장된다. HDFS는 파일서버와 같은 역할을 하지만, 다수의 컴퓨터에 파일을 복사하여 중복성을 높인다는 특징이 있다.

YARN은 CPU나 메모리 등의 리소스를 관리하며, 컨테이너단위로 관리한다. Hadoop에서 분산 어플리케이션을 실행하면 YARN이 클러스터 전체의 부하를 보고 비어 있는 호스트부터 컨테이너를 할당한다.

YARN의 컨테이너를 Docker를 연상시키는 OS 수준의 가상화 기술이 아니라, 어떤 호스트에서 어떤 프로세스를 실행시킬 것인지 결정하는 어플리케이션 수준의 기술이다.

MapReduce와 Hive

MapReduce는 분산시스템에서 데이터 처리를 실행하는 데 사용된다. MapReduce는 임의의 자바 프로그램을 실행시킬 수 있기 때문에 비구조화 데이터를 가공하는 데 적합하다.

SQL에 의한 데이터 집계가 목적이라면 Hive와 같은 쿼리엔진을 사용한다.

Spark

Spark는 MapReduce를 대체할 수 있으며, 대량의 메모리를 활용하여 고속화를 구현하는것이 특징이다.

데이터 마트 구축의 파이프라인

ex) Hive와 Presto를 결합한 데이터 파이프라인

팩트 테이블

빅데이터의 분석은 데이터를 구조화하는것부터 시작한다.
팩트 테이블은 추가치환의 방법으로 작성한다.

  • 테이블 파티셔닝
    하나의 테이블을 여러 물리적인 파티션으로 나누어, 파티션 단위로 정리하여 데이터를 쓰거나 삭제할 수 있도록 한 것이다.

집계 테이블

팩트테이블을 모아 집계하여 데이터의 양을 줄일 수 있다.

디멘전을 추가하여 비정규화 테이블 완성시키기

시각화에 적합한 디멘전만 남기고 집계
시각화에 적합한 디멘전만 남기고 집계

--

--