빅데이터의 정착
분산 시스템을 이용한 데이터 처리의 고속화 - Hadoop과 NoSQL
2012년 무렵 "빅데이터"라는 단어가 생겨날 때, 기업들은 분산 시스템을 이용하여 빅데이터를 처리하는 과정에서 애를 먹고 있었다. 빅데이터를 사용하기 위해 이를 처리하는 과정에서 큰 역할을 한 것이 바로 Hadoop과
NoSQL이다.
Hadoop
하둡은 다수의 컴퓨터에서 대량의 데이터를 처리하기 위한 시스템으로, 방대한 양의 데이터를 저장하고 이를 순차적으로 처리할 수 있는 수 많은 컴퓨터를 관리하기 위한 프레임워크이다.
NoSQL
NoSQL은 기존 RDB의 한계를 벗어나기 위해 탄생한 데이터베이스로, RDB보다 고속의 읽기, 쓰기가 가능하고 분산 처리에 뛰어나다. NoSQL에도 Key-Value Store, Document Store, Column Store, Graph Store와 같이 다양한 종류가 있다.
이 두 조합을 이용하여 'NoSQL에 저장하고, Hadoop으로 분산 처리'를 담당함으로써 보다 현실적인 비용으로 대규모의 데이터 처리를 실현할 수 있게 된 것이다.
데이터 웨어하우스와의 공존
빅데이터 개념의 등장 이전에도 기업들은 데이터 웨어하우스(Data Warehouse 이하 DW)를 사용하여 데이터를 저장하고 분석하였었다. DW 또한 대량의 데이터를 다루기에 충분하지만 하드웨어와 소프트웨어가 통합되어 있어 확장하기 힘들다는 단점이 존재했다.
따라서 기업들은 중요하거나 작은 데이터는 DW를 통해 관리하고 확장성이 필요한 심야 대량 발생 데이터와 같은 곳에는 Hadoop을 사용하여 부하를 줄이고 있다.
클라우드와 데이터 디스커버리
클라우드의 발전으로 이제는 분산 처리하는 것이 쉬워지면서 클라우드에 데이터 웨어하우스를 구축함으로써 누구나 빅데이터를 처리하고 활용할 수 있게 되었다. 또한 DW의 데이터를 바탕으로 BI 도구를 활용해 데이터를 시각화하여 정보를 찾는 데이터 디스커버리가 발전되기도 하였다(ex. Tableau). 이를 통해 개인도 도입할 수 있는 셀프 서비스가 가능해졌고 많은 사람들이 데이터를 살펴볼 수 있게 되었다.
이 밖에도 더 효율적인 분산 처리를 위해 Spark가 보급되고, 배치 처리 뿐만 아니라 실시간 데이터 처리를 위한 시스템도 다수 만들어지면서 빅데이터는 점차 누구나 사용할 수 있는 기술이 되었다.
빅데이터 시대의 데이터 분석 기반
빅데이터 기술이 기존의 데이터 웨어하우스와 가장 다른 점은 여러 분산 시스템을 조합하여 데이터 처리 구조를 만든다는 것이다.
빅데이터의 기술
데이터 파이프라인
데이터 엔지니어링의 가장 근간이라고 할 수 있는 것이 바로 데이터 파이프라인을 구축하는 것이 아닐까싶다.
데이터 파이프라인은 말 그대로 차례대로 전달해나가는 데이터로 구성된 시스템이다. 이 과정에는 여러 절차가 포함되어 있다.
데이터 수집
데이터 파이프라인은 로그 파일, 임베디드 데이터 등 다양한 형태의 데이터를 수집할 수 있다. 데이터 전송에서도 크게 두 가지로 나눌 수 있는데, 이미 어딘가 존재하는(ex. 데이터베이스) 데이터를 정리해 추출하는 벌크형과 실시간으로 생성되는 데이터를 보내는 스트리밍형 방법이 있다.
스트림 처리와 배치 처리
주로 벌크형으로 처리하는 것이 대부분이었지만 스마트폰이 보급되면서 스트림형을 처리하는 스트림 처리 방식의 데이터 처리가 주류가 되어가고 있다. 이는 시계열 데이터베이스에 자정되어 그래프를 만들어 현재 어떤 일이 일어나고 있는지 알기에 적합하다. 하지만 장기적인 데이터 분석을 위해서는 대량의 데이터를 저장하고 처리할 수 있는 배치 처리가 효율적이다.
분산 스토리지
대량의 데이터는 분산 스토리지에 저장되는데 여기에도 몇 가지 선택이 있다.
가장 대표적인 방법이 S3와 같은 객체 스토리지를 이용하는 것이며 NoSQL을 이용하여 빠른 읽기, 쓰기를 기대할 수도 있다.
분산 데이터 처리
저장된 데이터를 처리하기 위해서는 별도의 특별한 프레임워크가 필요하다. 여기에 사용된 것이 MapReduce로 이것의 주 역할은 나중에 분석하기 쉽도록 데이터를 가공하여 그 결과를 외부 데이터베이스에 저장하는 것이다.
처리된 빅데이터를 SQL로 집계하는 것이 가장 일반적일텐데, 크게 두 가지 방법이 있다.
분산 스토리지에서 바로 데이터를 집계하기 위해 Hive와 같은 쿼리 엔진을 사용하는 것이다. 지금은 Hive보다도 빠른 대화형 쿼리 엔진(Presto)가 개발되기도 하였다.
또 다른 방법은 분산 스토리지에서 추출한 데이터를 DW에 적재하는 것이다.
이러한 방법을 ETL이라 하고 아마 가장 많이 쓰이는 방법 중에 하나일 것이다.
※ ETL vs ELT
예전에는 데이터를 추출하고 이를 가공하여 DB에 적재하는 ETL을 많이 사용했지만, 요즘은 데이터의 양과 그 형태가 많아짐에 따라 데이터를 추출하고 그것을 먼저 적재한 후에 필요에 따라 변환하는 ELT 방법이 많이 사용되고 있다.
워크플로 관리
전체 데이터 파이프라인을 관리하기 위해서는 워크플로 관리 기술을 사용한다. 이는 데이터 파이프라인의 실행시간이나 오류를 관리하여 관리자에게 통지하는 목적으로 사용한다. 대표적으로 가장 많이 사용하는 툴에는 Airflow가 있다.
데이터 웨어하우스와 데이터 마트
데이터 웨어하우스를 구축하는 것은 데이터 파이프라인의 가장 기본형이라고 할 수 있다. DW는 기존의 RDB와 차이가 있다. 데이터 웨어하우스는 대량의 데이터를 장기 보존하는 것에 최적화되어 데이터를 한 번에 전송하는 것은 뛰어나지만, 소량의 데이터를 자주 쓰고 읽는 것에는 적합하지 않다. RDB와 같은 데이터 소스에서 데이터를 추출하고 가공한 후에 DW에 저장하는 과정을 앞서 살펴본 ETL이라고 한다.
데이터 웨어하우스는 아무래도 업무에 있어 중요한 데이터 처리에 사용되기 때문에 아무때나 사용하기에는 위험하다. 따라서 DW에서 필요한 데이터만을 추출하여 데이터 마트를 따로 구성하여 이를 BI 도구와 조합시키는 형태로 데이터를 시각화하기도 한다.
또한 데이터 웨어하우스와 데이터 마트 모두 SQL로 집계하기 때문에 스키마를 제대로 정한 후에 구축하는 것이 중요하다. DW를 중심으로 하는 파이프라인에서 가장 중요한 것은 테이블 설계와 ETL 프로세스라고 할 수 있다.
데이터 레이크
하지만 데이터의 종류가 다양해지면서 모든 분석이 DW를 가정하여 이루어지지는 않는다. 따라서 데이터를 가공하여 DW에 넣는 프로세스가 아니라 원래 형태 그대로를 저장하고 필요에 따라 나중에 가공하는 데이터 레이크를 많이 구축한다. 보통 임의의 데이터를 저장할 수 있는 분산 스토리지(S3)가 데이터 레이크로 많이 이용되고, CSV, JSON, Parquet 등의 형태로 저장된다.
데이터 레이크의 형태로는 분석을 할 수 없기 때문에 MapReduce 등의 처리 도구를 사용하여 데이터 마트로 적재하고 데이터 분석을 진행할 수 있다.
데이터 분석 기반의 단계적 발전
데이터 분석에 필요한 기술은 너무나도 다양하기 때문에 시스템 구축 및 운용, 자동화 등을 담당하는 데이터 엔지니어와 데이터에서 가치있는 정보를 추출하는 데이터 분석로 나뉜다.
애드 혹 분석 및 대시보드 도구
데이터 파이프라인의 자동화가 결국 데이터 엔지니어링의 핵심이라고 할 수 있는데 그전에 먼저 수작업으로 데이터를 집계하는 방법을 살펴보자. 여기에는 일회성 데이터 분석이라는 애드 혹 분석이 있는데, 직접 DW나 DL에 접근하여 SQL 쿼리를 날려 결과를 즉시 확인하거나, 대시보드를 사용하여 그래프를 생성할 수도 있다.
데이터 마트와 데이터 워크플로
복잡한 데이터 시스템에서 분석이나 시각화를 사용하려면 데이터 마트는 거의 필수적이다. 이를 통해 집계 속도를 높일 수 있기 때문이다. 또한 데이터 마트 구축은 배치 처리로 자동화되는 경우가 많기 때문에 관리를 위해 워크플로를 사용하게 된다. 하지만 굳이 자동화가 필요없는 상황이라면 워크플로는 그다지 필요 없을 수도 있기 때문에 잘 고려하여 도입해야 한다.
데이터 수집 목적
데이터 검색
시스템에 장애가 발생하거나 그 원인을 특정하기 위한 데이터 검색 목적으로 데이터를 수집하는 경우에는 신속한 검색을 위해 실시간 데이터 처리나 검색엔진을 사용하는 것이 좋다.
데이터의 가공
데이터 분석을 위한 데이터 처리 결과를 이용하는 데이터 가공을 이용하고 싶다면 데이터 파이프라인을 설계하는 것이 중요하다. 여기에는 자동화가 필수적이다.
데이터 시각화
데이터를 시각화함으로써 분석을 할 수도 있다. 이를 고속화하기 위해서는 데이터 마트를 구축하는 것이 좋다.
'데이터 엔지니어링 > 데이터 엔지니어링 기초' 카테고리의 다른 글
빅데이터를 지탱하는 기술 Ch6 - 빅데이터 분석 기반 구축 (0) | 2022.01.05 |
---|---|
빅데이터를 지탱하는 기술 Ch5 - 빅데이터의 파이프라인 (0) | 2022.01.03 |
빅데이터를 지탱하는 기술 Ch4 - 빅데이터의 축적 (0) | 2022.01.03 |
빅데이터를 지탱하는 기술 Ch3 - 빅데이터 분산 처리 (0) | 2022.01.03 |
빅데이터를 지탱하는 기술 Ch2 - 빅데이터의 탐색 (0) | 2022.01.03 |