[데이터] - 빅데이터 기술
이번 포스팅은 분산 시스템을 활용하여 데이터를 순차적으로 가공해 나가는 일련의 기술을 통칭하는 ‘빅데이터 기술’에 대한 글로, 니시다 케이스케의 ‘빅데이터를 지탱하는 기술’을 읽고 이해한 바를 정리한 글입니다.
데이터 파이프라인
데이터 파이프라인은 데이터를 수집하고 저장한 뒤, 워크플로를 관리하는 일련의 과정을 의미합니다. 여기서는 빅데이터를 처리할 수 있는 데이터 파이프라인에 대해서 이야기 합니다.
-
데이터 수집 : 현대의 데이터는 데이터베이스, 각종 서버, 모바일 어플리케이션, 임베디드 장비 등 수많은 곳에서 쏟아져 나오고 있습니다. 이러한 데이터들은 형태와 특징들이 다르기 때문에, 다른 접근 방식이 필요합니다. 여기서는 데이터 수집 과정에서의 데이터 전송 방식으로 크게 두 가지를 소개합니다.
-
벌크형
- 이미 존재하는 데이터를 정리해 추출하는 방식으로, 데이터베이스나 파일 서버 등에서 데이터를 수집하는 데에 사용합니다.
-
스트리밍형
- 차례로 생성되는 데이터를 끊임없이 계속해서 전송하는 방식입니다.
- 빅데이터의 시대에는 모바일 어플리케이션, 임베디드 장비의 사용이 증가함에 따라 이러한 데이터 전송 방식이 많이 활용되고 있습니다.
이 때 스트리밍형으로 전송되는 데이터를 수집하기 위해서는 스트림 처리 기술을 사용합니다. 끊임없이 전송되는 데이터를 실시간으로 처리하기 위한 방식입니다. 반면 장기간의 데이터를 한 번에 분석하기 위해서는 대량의 데이터를 저장하고 처리하는데 적합한 배치 처리 기술을 활용합니다.
-
-
분산 스토리지 : 이렇게 수집된 데이터는 분산 스토리지를 활용하여 저장합니다. 데이터의 양이 매우 방대하기 때문에 여러 컴퓨터와 디스크에 나눠서 데이터를 저장합니다. 분산 스토리지의 대표적인 예시로 AWS의 S3와 같은 객체 스토리지입니다.
-
분산 데이터 처리 : 분산 스토리지에 저장한 데이터를 처리하기 위해서는 MapReduce와 같은 분산 데이터 처리 프레임워크가 필요합니다. 이 과정에서 분석이 용이하도록 데이터를 가공하고, 그 결과를 외부 데이터베이스에 저장합니다.
데이터 집계 과정에서 SQL이 많이 사용되기 때문에, SQL을 활용하여 데이터를 집계할 수 있도록 처리하게 됩니다. 이때 두 가지 선택지가 존재합니다.
- 분산 스토리지 상의 데이터를 SQL로 집계하기 위해 쿼리 엔진을 도입합니다.
- 하둡 컴포넌트인 Hive가 대표적인 예시입니다.
- 분산 스토리지의 데이터를 ETL 프로세스 를 통해 추출 및 가공한 뒤 외부의 데이터 웨어하우스 에 저장합니다. 이를 통해 SQL을 통한 데이터 집계가 가능하도록 합니다.
ETL 프로세스 : Extract - Transform - Load 프로세스로, 데이터를 추출하고, 가공한 뒤, (데이터 웨어하우스에) 로드하는 일련의 프로세스를 의미합니다.
- 분산 스토리지 상의 데이터를 SQL로 집계하기 위해 쿼리 엔진을 도입합니다.
-
워크플로 관리 : 전체 데이터 파이프라인의 동작을 관리하기 위한 기술로, 정해진 시간에 배치 처리를 스케줄대로 실행하고, 오류 발생 여부를 모니터링 하기 위해 사용됩니다.
데이터 파이프라인이 복잡해고 있기 때문에, 이를 제어하고 모니터링 하는 것이 더욱 중요해지고 있습니다. 그렇기 때문에 이를 관리하기 위한 기능은 필수적입니다.
데이터 마트
앞선 분산 데이터 처리 과정에서 살펴 본 것처럼, 데이터를 수집 한 뒤 사용자들이 편리하게 데이터를 집계하도록 하기 위해서 데이터를 추출하여 데이터 웨어하우스에 저장합니다. 그러나 데이터 웨어하우스는 대량의 데이터를 장기 보존하는 것에 최적화 된 저장소로, 아무때나 함부로 사용하여 시스템에 과부하를 주기에는 부담이 있습니다.
그렇기 때문에 데이터 웨어하우스에서 자주 사용하는 데이터를 중심으로 추출하여 데이터 마트 를 구성합니다. 사용자들은 SQL을 활용하여 데이터 마트로부터 데이터를 집계하게 됩니다.
데이터 레이크
데이터가 방대해질 수록 ETL 프로세스를 통해서 데이터 웨어하우스에 데이터를 저장하는 과정이 복잡해집니다. 수많은 데이터들이 데이터 웨어하우스에 저장될 것을 가정하고 만들어지지 않기 때문에, 데이터 웨어하우스에 넣을 수 있는 형태로 만드는 과정 자체가 복잡해지는 것입니다.
그렇기에 데이터를 원래의 형태로 축적해두고, 나중에 필요에 따라 이를 가공하는 구조인 데이터 레이크 를 사용하게 됩니다. 마치 여러 곳에서 흘러 들어오는 데이터들을 모아놓은 호수와 같다는 의미를 담고 있습니다.
이를 통해 수많은 곳에서 흘러오는 빅데이터를 저장할 수 있게됩니다. 데이터 레이크에 저장된 데이터들은 가공되어 있지 않기 때문에, 이를 가공하기 위해 MapReduce와 같은 분산 데이터 처리 기술을 활용합니다. 이렇게 처리된 데이터를 데이터 마트에 저장하고, 사용자들이 사용하게 됩니다.
데이터 엔지니어의 역할
위에서 살펴본 과정 중에서, 데이터 엔지니어는 데이터 파이프라인을 설계하여 데이터를 수집하고, 분산 스토리지에 저장한 뒤 분산 데이터 처리 기술을 활용하여 데이터 마트에 데이터를 저장하는 역할을 수행합니다. 시스템의 구축 및 운용, 자동화 등을 담당하는 것입니다.
이후 데이터 분석가는 데이터 마트에서 데이터를 집계하고, 검색, 가공, 시각화 등의 역할을 수행하게 됩니다.