안녕하세요. '빅데이터를 지탱하는 기술'이라는 책에 대해서 이어서 정리해보겠습니다.
오늘은 데이터 엔지니어로서 정말 중요한 역할인 데이터 파이프라인에 대해서 다뤄보겠습니다.
chapter 1 빅데이터의 기초 지식
1-2 빅데이터 시대의 데이터 분석 기반
빅데이터 기술
여기서 '빅데이터 기술' = '데이터를 순차적으로 가공해 나가는 일련의 구조'를 의미합니다.
데이터를 차례대로 차례대로 전달해 나가는 구성된 시스템을 흔히 'Data Pipeline(데이터 파이프라인)'이라고 합니다.

데이터를 모으는 데이터 수집부터 최종 목적지(시각화를 위한 마트 등)로의 과정을 일컫습니다.
지금부터 대표적인 단계를 나열하여 설명하도록 하겠습니다.
1) 데이터 수집
데이터 파이프라인이라 함은 데이터를 모으는 것에서부터 시작합니다.
데이터는 여러 시스템에서 생성되고 각각 다른 형태를 지니고 있습니다. App에서 발생한 로그 데이터, 데이터 베이스에서 쌓인 트랜잭션 데이터, IoT 센서등으로 통해 보내진 데이터 등 최근에 더욱 다양해지고 있습니다.
데이터의 전송은 다음과 같이 크게 두 가지 형태로 구분할 수 있습니다.
- Bulk Type
벌크형은 이미 존재하는 데이터를 정리해 추출하는 방법으로 DB와 파일 서버 등 정기적으로 데이터를 수집하는 형태입니다.
- Streaming 형
스트리밍형은 차례차례 생성되는 데이터를 끊임없이 보내는 방법으로 Mobile App이나 Embedded 장비 등에서 데이터를 수집하는 형태입니다.
2) Stream and Batch Process
데이터를 수집하고 데이터를 저장하기 전에 처리하는 과정이 필요합니다. 물론 이 과정이 반드시 순서대로 진행되는 것이 아니기도 합니다.(하단에서 일부 설명)
빅데이터 이 전부터 유효하게 활용되었던 기술은 '배치(batch) 위주의 기술'이었습니다. 매일 적재되는 데이터 기준, 새벽에 전 날 데이터의 실적 등을 정리하는 형태죠. 배치 프로세스는 물론 현재도 유효하게 적용되지만, 빅데이터 기술에서는 실시간 데이터를 쌓아서 실시간에 가까운 실적 등의 추세를 파악할 수 있게 하는 '스트림(stream) 처리'가 주류가 되고 있습니다.
3) Distributed Storage(분산 스토리지)
수집과 처리가 된 데이터는 '분산 스토리지(저장소)'에 저장됩니다. 여기서 분산이라는 의미는 여러 대로 구성된 서버와 디스크로 구성된 Storage System을 의미합니다. 대표적인 것으로 Object Storage로 AWS에서 서비스되는 S3 서비스가 있습니다. 또한 NoSQL DB를 분산 스토리지로 활용할 수 있습니다. 그리고 HDFS도 이러한 분산 스토리지 중 하나로 Hadoop이라는 대표성을 가지고 있습니다.
4) Distribute Data Processing(분산 데이터 처리)
분산 스토리지에 저장된 데이터를 처리하는 데는 '분산 데이터 처리'가 필요합니다. '여러 서버에 나눠진 데이터를 어떻게 처리할 것인가?'라는 물음에 대한 과정을 설명한 것이라고 할 수 있겠네요.
가장 대표적인 분산 처리 프레임워크로는 MapReduce(이하 MR)를 예를 들 수 있습니다. 이 MR을 통해 처리할 수 있을 정도의 프로그래밍이 가능하다면 좋겠지만, 번거롭기도 하고 대다수의 분석가 혹은 개발자가 MR을 통해 데이터 처리가 가능한 프로그래밍에 어려움이 있습니다.
데이터의 처리(또는 집계)를 하기 위한 가장 일반적인 방법은 SQL을 사용하는 것입니다. 그리고 이 SQL을 이용한 방법에는 두 가지가 있습니다.
첫 번째는 hive와 같이 SQL을 통해 MR을 사용하는 것입니다. 이를 Query Engine(쿼리 엔진)이라고 하며, 최근에는 Spark, Presto 등 더 고속의 쿼리 엔진이 개발 되어 사용되고 있습니다.
두 번째는 외부의 Data Warehouse(데이터 웨어하우스) 제품을 이용하는 것 입니다. 이 과정을 진행하기 위해서는 분산 스토리지에서 데이터를 추출(Extract)하고 변형하고(Transfrom) 한 후 적재(Load)하는 과정이 필요합니다. 이 과정을 흔히 ETL이라고 표현합니다.
또한, 위의 '2) Stream and Batch Process'에서 설명드린 것과 같이 ETL이 아닌 ELT 순서로의 처리도 최근에는 많이 사용되고 있습니다. Storage의 가격이 워낙 낮아졌기 때문에 우선 저장해 두고 필요에 따라 변환시키는 형태이죠.(이러한 내용은 뒤의 '데이터 레이크' 관련 내용에서도 다룰 예정입니다.)

5) Workflow 관리
전체적인 데이터 파이프라인의 동작을 관리하는 것은 Workflow가 그 역할을 합니다. 정해진 배치 처리를 주기에 맞게 스케쥴링하고 오류가 발생하는 경우는 알림을 보내는 등의 관리의 기술이 필요합니다.
빅데이터 처리는 후행 워크플로우에도 영향을 미칠 수도 있기 때문에 재처리와 같이 로직 처리가 중요합니다.
정리하며
다시 정리하면 데이터를 가져오는 단계에서부터 최종 목적지까지 도달하는 과정을 '데이터 파이프라인'이라고 합니다. 크게 수집 - 처리 - 저장과 분산 데이터 처리 그리고 워크플로우 관리로 구성되어 있습니다.
저희 경우에도 특히 운영을 하면서 Shell Script나 쿼리 등을 통해 처리를 진행했었습니다. 새벽 배치가 문제가 생기면 직접 출근해서 처리했던 일도 생각나네요.(지금은 대부분 재택으로 가능해서 하지만요.)
다음 소챕터로는 '데이터 웨어하우스&마트 그리고 데이터 레이크'에 대해서 다뤄보겠습니다.
'Big Data > 빅데이터를 지탱하는 기술' 카테고리의 다른 글
데이터 엔지니어와 데이터 분석가 그리고 데이터 사이언티스트 (0) | 2021.07.03 |
---|---|
데이터 웨어하우스, 데이터 마트 그리고 데이터 레이크 (0) | 2021.04.25 |
Hadoop & NoSQL (0) | 2021.03.01 |