본 게시물은 니시다 케이스케 저자의 '빅데이터를 지탱하는 기술'이라는 도서를 읽고 정리한 내용으로, 블로그 게재에 대한 출판사의 동의를 얻었음을 알려드립니다.
- 도서 구매 링크 : https://product.kyobobook.co.kr/detail/S000001916916
Cahpter 1. 빅데이터의 기초지식
- 빅데이터의 주변 기술이 생겨난 역사적 배경과 그 기본이 되는 사고방식 및 용어를 정리
1-2. 빅데이터 시대의 데이터 분석 기반
- 빅데이터 기술이 기존의 데이터 웨어하우스와 다른 점은 다수의 분산 시스템을 조합하여 확장성이 뛰어난 데이터 처리 구조를 만든다는 점이며, 본 절에서 그 차이점에 관해 상술
[재입문] 빅데이터의 기술 : 분산 시스템을 활용해서 데이터를 가공해 나가는 구조
- 본 책에서 다루는 '빅데이터 기술'이란 분산 시스템을 활용하여 데이터를 순차적으로 가공해나가는 일련의 구조
- 실제로는 아래 그림 1.4와 같이 여러 서브시스템을 조합함으로써 실현 가능
# 데이터 파이프라인 : 데이터 수집에서 워크플로 관리까지
> 데이터 파이프라인(Data Pipeline)
- 일반적으로 차례로 전달해나가는 데이터로 구성된 시스템
- 데이터 수집 대상 및 실현 목적에 따라 데이터 파이프라인이 변화하므로 하고 싶은 일이 증가함에따라 어떻게 조합시킬지가 문제가 된다.
# 데이터 수집 : 벌크 형과 스트리밍 형의 데이터 전송
- 데이터 파이프라인은 데이터를 모으는 부분부터 시작한다. 각기 다른 출처와 형태를 보이므로 서로 다른 기술로 데이터를 전송한다.
> 데이터 전송 (Data Transfer)
- 데이터 전송의 방법은 아래의 두 가지가 있음 (그림 1.4 ①, ②)
- 방식 1, 스트리밍형 : 차례차례로 생성되는 데이터를 끊임없이 계속해서 보내는 방법으로 모바일 애플리케이션과 임베디드 장비 등에서 널리 데이터를 수집하는 데 사용된다.
- 방식 2, 벌크형 : 이미 어딘가에 존재하는 데이터를 정리해 추출하는 방법으로, 데이터베이스와 파일 서버 등에서 정기적으로 데이터를 수집하는 데에 사용
# 스트림 처리와 배치 처리
> 스트림 처리
- 기존에는 DWH에서 다루는 데이터는 주로 벌크형 방법이 이용되었음
- 빅데이터 세계에서는 모바일 애플리케이션 등이 증가함에 따라 오히려 스트리밍 형 방법이 주류가 되고 있고, 주로 실시간으로 처리하고 싶어지며, 이를 '스트림 처리'라고 한다.
- (예시) 과거 30분간 취합한 데이터를 집계하여 그래프를 만들려면 '시계열 데이터 베이스'와 같은 실시간 처리를 지향한 데이터 베이스가 자주 사용된다.(그림 1.4 ③) 스트림 처리의 결과를 시계열 데이터베이스에 저장함으로써 지금 무슨 일이 일어나고 있는지 즉시 알 수 있음
- 장기적인 데이터분석에는 적합하지 않음 (너무 양이 방대해지기 때문)
> 배치처리
- 장기적인 데이터 분석을 위해서는 보다 대량의 데이터를 저장하고 처리하는 데 적합한 분산 시스템이 좋다. (그림 1.4 ④, ⑤)
- 여기에 필요한 것은 스트림 처리가 아닌, 어느 정도 정리된 데이터를 효율적으로 가공하기 위한 '배치 처리' 구조다.
# 분산 스토리지 : 객체 스토리지, NoSQL 데이터베이스
- 수집된 데이터는 '분산 스토리지(distribute storage)*'에 저장된다.(그림 1.4 ②, ④)
> 데이터를 저장하는 여러가지 방법
- 객체 스토리지(Object Storage) : 한 덩어리로 모인 데이터에 이름을 부여해서 파일로 저장 (ex. Amazon S3)
- NoSQL 데이터베이스를 분산스토리지로 사용 : 애플리케이션에서 많은 데이터를 읽고 쓰려면 NoSQL 데이터베이스가 성능면에서 우수 (단, 확장성이 높은 제품을 선택해야 한다.)
* 분산 스토리지 : 여러 컴퓨터와 디스크로부터 구성된 스토리지 시스템
# 분산 데이터 처리 : 쿼리 엔진, ETL 프로세스
- 분산 스토리지에 저장된 데이터를 처리하는 데는 '분산 데이터 처리'의 프레임워크가 필요하다. (그림 1.4 ⑥, ⑦, MapReduce가 사용되어진 것이 바로 이 부분)
- 분산 데이터 처리의 주 역할은 데이터를 가공해서 그 결과를 외부 데이터베이스에 저장하는 것이다.
> 빅데이터를 SQL로 집계하는 두 가지 방법
[방법 1, 쿼리 엔진]
- 분산 스토리지 상의 데이터를 SQL로 집계하기 위해 쿼리엔진을 도입
- Hive가 이 예시로, 현재는 Hive보다 고속인 '대화형 쿼리 엔진'도 개발되었음
[방법 2, 외부 DWH 제품 이용]
- ETL : 분산 스토리지에서 추출한 데이터를 데이터 웨어하우스에 적합한 형식으로 변환, 즉 데이터를 Extract(추출)해서 그것을 Transform(가공)한 후, DWH에 Load(로드)한다.
※ ELT, 즉 데이터를 데이터베이스 안으로 읽어 들인 후에 가공하는 경우도 있으나 본 책에서는 ETL과 ELT를 구분하지 않는다.
# 워크플로 관리
- 전체 파이프라인의 동작을 관리
- 매일 정해진 시간에 배치 처리를 스케줄대로 실행하고, 오류가 발생한 경우에는 관리자에게 통지하는 목적
< Notice > 각 기술에 대해 다음 장에서 보다 자세하게 알아볼 수 있음
- 3장 : 분산 데이터 처리의 프레임워크, 쿼리 엔진
- 4장 : 벌크형, 스트리밍 형의 데이터 수집, 분산 스토리지
- 5장 : 워크플로 관리, 배치 처리, 스트림 처리
데이터 웨어하우스와 데이터 마트 : 데이터 파이프라인 기본형
- 데이터 파이프라인의 기본형 : 기존 방식대로의 데이터 웨어하우스를 구축하는 프로세스(그림 1.6)
> 데이터 웨어하우스
- 데이터 웨어하우스는 일반적인 RDB(웹서버, 업무시스템에서 이용)와는 달리 대량의 데이터를 장기보존 하는 것에 최적화되어 있음
- 정리된 데이터를 한 번에 전송하는 것은 뛰어나지만, 소량의 데이터를 자주 쓰고 읽는 데는 적합하지 않음
- 전형적인 사용 방법 : 업무 시스템에서 꺼낸 데이터를 하루가 끝날 때 정리하여 쓰고, 이것을 야간시간대에 집계해서 보고서를 작성
- 데이터 소스 : DWH 입장에서 봤을 때 업무 시스템을 위한 RDB나 로그 등을 저장하는 파일 서버가 '데이터 소스'며, 거기에 보존된 raw data를 추출하고 필요에 따라 가공한 후 데이터 웨어하우스에 저장하기까지의 흐름이 'ETL'이다.
> 데이터 마트
- DWH는 업무에 있어서 중요한 데이터 처리에 사용되기 때문에 아무때나 함부로 사용해 시스템에 과부하를 초래하는 것은 곤란하며, 이에 데이터분석과 같은 목적에 사용하는 경우에는 데이터 웨어하우스에서 필요한 데이터만을 추출하여 '데이터 마트'를 구축한다.
- 데이터마트는 BI도구와 조합시키는 형태로 데이터를 시각화하는 데에도 사용된다.
- DWH와 DM 모두 SQL로 데이터를 집계하며, 특히 BI도구로 데이터를 볼 경우에는 미리 시각화에 적합한 형태로 테이블을 준비해야 한다.
데이터 레이크 : 데이터를 그대로 축적
> 데이터 레이크
- 빅데이터 시대가 되며 ETL 프로세스는 복잡해지게 되며, 모든 데이터가 DWH를 가정해서 만들어지지는 않는다. 텍스트 파일과 바이너리 파일(※) 등은 그대로 DWH에 넣을 수 없을 수도 있음
- 모든 데이터를 원래의 형태로 축적해두고 나중에 필요에따라 가공하는 구조가 필요하며, 이럴 때 사용되는 데이터 축적 장소가 '데이터 레이크'이다.
- 임의의 데이터를 저장할 수 있는 분산 스토리지가 데이터레이크로 이용됨
- 데이터 형식은 자유이지만, 대부분 CSV나 JSON등의 범용적인 텍스트 형식이 사용된다.
※ 텍스트 파일과 바이너리 파일
1) 이진 파일
: 이진 파일(binary file)은 텍스트 파일이 아닌 컴퓨터 파일이다. 종종 '논-텍스트 파일(non-text file)'을 의미하는 용어로 사용되며, 컴퓨터 저장과 처리 목적을 위해 이진형식으로 인코딩된 데이터를 포함한다.
이를테면, 포맷 텍스트를 포함하는 컴퓨터 문서 파일을 들 수 있다. 많은 이진 파일 형식은 문자열로 해석될 수 있는 부분을 포함하고 있다.
포맷 정보가 없는 문자열 데이터만 포함하는 이진 파일은 완전한 텍스트 파일이라고 한다.
텍스트로만 이루어진 파일은 보통 이진 파일과 구분짓는데 이진 파일은 완전한 텍스트 이상의 무언가를 더 포함하고 있기 때문이다.
아래와 같이 이진 파일을 텍스트 모드로 열면 다음 그림과 같이 글자가 깨진다.

2) 텍스트 파일
텍스트 파일은 컴퓨터 파일 시스템에서 컴퓨터 파일의 일종이다.
일반 문자열이 들어가는 파일이지만 저장 정보의 해석 방식, 운영 체제와 연결되는 프로그램의 방식에 따라 이진 파일과 구분한다.
텍스트 파일은 사람이 인지할 수 있는 문자열 집합으로부터 문자열로만 이루어진다.
잘 알려진 문자열 집합으로는 ASCII 문자열 집합과 유니코드 문자열 집합이 있다.
- 출처1 : https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%A7%84_%ED%8C%8C%EC%9D%BC
- 출처2 : https://ko.wikipedia.org/wiki/%ED%85%8D%EC%8A%A4%ED%8A%B8_%ED%8C%8C%EC%9D%BC
- DHW를 데이터레이크로 치환 시, 아래 그림 1.8과 같이 데이터 파이프라인을 구축할 수 있음
- 앞의 그림 1.6과 비교하면 원시 데이터를 그대로 저장소에 저장한다는 점이 다름
# 데이터 레이크와 데이터 마트 : 필요한 데이터는 데이터 마트에 정리
- 데이터 레이크는 단순한 스토리지이며, 이것만으로는 데이터를 가공을 못하기 때문에 사용되는 것이 분산 데이터 처리 기술 (ex. MapReduce 등)
데이터 분석 기반을 단계적으로 발전시키기 : 팀과 역할 분담, 스몰 스타트와 확장
# 애드 혹 분석 및 대시보드 도구
- 본책은 최종적으로 데이터 파이프라인의 자동화에 관해 논할 것
- 다만 초반부에서는 자동화를 생각하지 않고, 데이터를 집계하는 등의 '일회성 데이터 분석'을 의미하는 '애드혹 분석'부터 시작할 것
- 애드 혹 분석 (ad hoc analysis) :
'데이터 엔지니어링 > [도서] 빅데이터를 지탱하는 기술' 카테고리의 다른 글
1-1. [배경] 빅데이터의 정착 (0) | 2023.05.04 |
---|