%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0 %EB%B6%84%EC%84%9D %EA%B8%B0%EB%B0%98 %EC%A7%80%EC%8B%9D - jodnddus/data-engineering-knowledge-base GitHub Wiki

빅데이터를 가공해 나가는 구조

데이터 엔지니어는 여러 서브 시스템을 조합해서 데이터를 순차적으로 가공해 나가는 구조를 만든다.

데이터 파이프라인

차례대로 전달해나가는 데이터로 구성된 시스템을 데이터 파이프라인이라고 한다. 데이터 파이프라인은 각 회사마다 구조가 다르다. 데이터를 수집해서 무엇을 실현하고 싶은지 각기 다르기 때문이다.

데이터 수집

데이터 파이프라인은 당연하게도 데이터를 모으는 부분부터 시작하게 된다. 데이터를 전송하는 방법은 크게 두가지가 있다.

  • 벌크형
    • 벌크형은 어딘가 있는 데이터를 추출하는 방법으로, 정기적으로 데이터를 전송할 때 사용하는 방법이다.
  • 스트리밍형
    • 스트리밍형은 생성되고 있는 데이터를 끊임없이 계속해서 보내는 방법이다.

스트림 처리와 배치 처리

데이터 웨어하우스에서 다루는 데이터는 주로 벌크형으로 전송되었다. 하지만 빅데이터의 세계에서는 모바일 애플리케이션이 많아져 스트리밍형으로 데이터가 전송되는 경우가 많아졌으며, 실시간으로 전송받은 데이터를 처리하는 것을 스트림 처리라고 한다.

하지만 스트림 처리는 장기적인 데이터 분석에는 적합하지 않다. 만약 1년간의 데이터를 분석하려고 한다면 해당 데이터의 양은 엄청나게 많아질 것이다. 장기적인 데이터 분석을 위해서는 배치 처리가 적합하다.

분산 스토리지

수집된 데이터는 분산 스토리지에 저장된다. 대표적으로 객체 스토리지가 있으면 예를들면 Amazon S3가 있다. NoSQL 데이터베이스는 분산 스토리지로 사용될 수 있는데, 나중에 데이터가 많아졌을 때를 대비해 확장성이 높은 제품을 선택하여야 한다.

분산 데이터 처리

분산 스토리지에 저장된 데이터 처리에는 분산 데이터 처리 프레임워크가 필요하다. 많은 양의 데이터를 분산 처리하기 위해 많은 컴퓨터 자원이 필요하게 되는데 그것을 MapReduce를 이용해서 관리한다.

분산 스토리지 상의 데이터를 집계하기 위해 SQL 쿼리 엔진이라는 것을 쓰는데, Hive가 실제 예시이다. 최근에는 대화형 쿼리 엔진이 개발되었다고 한다.

분산 스토리지에서 추출한 데이터를 데이터 웨어하우스에 적당한 형식으로 변환하는데 이런 절차는 ETL 프로세스라고 한다. 데이터를 추출, 가공, 로드하는 과정이다.

워크플로우 관리

전체 데이터 파이프라인의 동작을 관리하기 위해서 워크플로우 관리 기술을 사용한다.

⚠️ **GitHub.com Fallback** ⚠️