ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [빅데이터의 기초 지식] 2. 빅데이터 시대의 데이터 분석 기반
    책/빅데이터를 지탱하는 기술 2022. 3. 22. 17:29
    반응형

    이 글은 빅데이터를 지탱하는 기술을 읽고 정리한 글입니다.


     

     

     

    1. 빅데이터의 기술


    빅데이터의 기술은 다수의 분산 시스템을 조합하여 기존의 데이터 웨어하우스에 비해 확장성이 뛰어난 데이터 처리 구조를 만든다는 점이다.

     

    - 데이터 파이프라인

    차례대로 전달해나가는 데이터로 구성된 시스템으로 데이터를 한 시스템에서 다른 시스템으로 옮기게 파이프 역할을 해주는 기능이다.

     

    - 데이터 수집, 스트림 처리와 배치 처리

    데이터 파이프라인은 데이터를 모으는 부분부터 시작하는데, 데이터들은 각각 서로 다른 기술들로 데이터를 전송한다. 이때 데이터 전송 방법은 크게 벌크형과 스트리밍형으로 두 가지로 나뉘게 된다.

    벌크형은 이미 어디가에 존재하는 데이터를 정리해 추출하는 방법으로, 데이터베이스와 파일 서버등에서 정기적으로 데이터를 수집하는데에 사용한다. 그러나 스트리밍형은 계속해서 생성되는 데이터를 끊임없이 보내는 방법으로 원래는 벌크형 방법이 이용되었다가, 최근에는 스트리밍형 방법이 주류가 되고 있다. 이때 스트리밍형 데이터를 실시간으로 처리하는 것을 스트림 처리라고 한다.

    하지만 스트림 처리로는 장기적인 데이터 분석에서 적합하지 않다. 왜냐하면 1년치의 스트리밍형 데이터만 모아두어도 데이터의 양이 엄청나게 많아지고, 이런 실시간 데이터 처리와 장기적인 데이터 분석 결과를 하나의 시스템으로 실현하는 것은 어려운 일이 때문인데, 그래서 장기적인 데이터 분석에서는 대량의 데이터를 저장하고 처리하는데 적합한 분산 시스템이 좋고, 여기서 필요한 것은 스트림 처리가 아닌 어느정도 정리된 데이터를 효율적으로 가공하기 위한 배치 처리 구조이다.

     

    - 분산 스토리지

    수집된 데이터는 여러 컴퓨터와 디스크로 구성된 분산 스토리지에 저장된다. 분산 스토리지에 데이터를 저장하는 방법에는 몇 가지 선택이 있는데, 대표적인 것이 객체 스토리지로 한 덩어리로 모인 데이터에 이름을 부여해서 파일로 저장하는 방법이다. 대표적으로 Amazon S3이 유명하다. NoSQL 데이터베이스를 분산 스토리지로 이용할 수도 있는데, 애플리케이션에서 많은 데이터를 읽고 쓰려면 NoSQL이 성능면에서는 유리하지만 확장성이 높은 제품을 선택해야 한다.

     

    - 분산 데이터 처리

    분산 스토리지에 저장된 데이터를 처리하는데 분산 데이터 처리의 프레임 워크가 필요하다. MapReduce가 여기서 사용된 것으로 분산 데이터 처리의 주 역할은 나중에 분석하기 쉽도록 데이터를 가공해서 그 결과를 외부 데이터베이스에 저장하는 것이다.

     

    - 데이터 집계 방법

    대다수의 사람들은 SQL을 사용하는 것에 익숙한데, 빅데이터에서 SQL로 데이터를 집계하는 것은 두 가지 방법이 있다. 하나는 분산 스토리지 상의 데이터를 SQL로 집계하기 위해 쿼리 엔진을 도입하는 것이다. (Hive가 대표적인 쿼리 엔진)

    다른 하나는 외부의 데이터 웨어하우스 제품을 이용하는 것이다. 이를 위해서는 분산 스토리지에서 추출한 데이터를 데이터 웨어하우스에 적합한 형식으로 변환하는데, 이 일련의 절차를 ETL 프로세스라고 한다. ETL 프로세스는 데이터를 추출(extract)하고 가공(transform)한 후, 데이터 웨어하우스에 로드(load)하는 과정이다.

     

    - 워크플로 관리

    전체 데이터 파이프라인의 동작을 관리하기 위해서는 워크플로 관리 기술을 사용한다. 현재 많이 쓰이는 Airflow가 대표적인 워크플로 관리 도구이다. 이것은 매일 정해진 시간에 배치 처리를 시케줄대로 실행하고, 이때 오류가 발생하면 관리자에게 통지하는 목적으로 사용된다. 데이터 파이프라인은 규모가 커질수록 복잡해지기 때문에 한 곳에서 제어하지 않으면 전체의 움직임을 파악하는 것이 곤란해진다.


     

     

     

    2. ETL 프로세스와 ELT 프로세스


    https://towardsdatascience.com/how-i-redesigned-over-100-etl-into-elt-data-pipelines-c58d3a3cb3c

    ETL 프로세스는 Extract-Transform-Load로 데이터베이스의 바깥에서 데이터를 가공한 다음 데이터 웨어하우스에 로드를 하는 과정이고,  ELT 프로세스는 Extract-Load-Transform으로 데이터를 먼저 읽어들인 후 데이터 웨어하우스에 로드를 한 뒤에 데이터를 가공하는 방법이다.

     

    ETL 프로세스는 데이터를 변환하는 과정에서 임시적으로 데이터를 저장하는 데이터 스테이징 영역이 존재한다. 그리고 데이터를 전처리하기 때문에 RDB 기반 구조를 가지고 있다.

    ELT 프로세스의 경우에는 로우 데이터를 데이터 웨어하우스에 바로 적재하기 때문에 데이터 스테이징 영역이 필요하지 않다.거기다가 데이터를 전처리하지 않기 때문에 모든 비정형, 정형 데이터를 가지고 올 수 있다.


     

     

    3. 데이터 웨어하우스와 데이터 마트


    https://panoply.io/data-warehouse-guide/data-mart-vs-data-warehouse/

     

    데이터 웨어하우스는 웹 서버나 업무 시스템에서 이용되는 일반적인 RDB와는 달리 대량의 데이터를 장기 보존하는 것에 최적화되어 있다. 그래서 정리된 데이터를 한 번에 전송하는 것은 뛰어나지만, 소량의 데이터를 자주 읽고 쓰는 데는 적합하지 않다.

     

    - 데이터 소스

    데이터 웨어하우스의 측면에서 봤을 때, 업무 시스템을 위한 RDB나 로그등을 저장한 파일 서버를 데이터 소스라고 부른다. 데이터 소스에 저장된 로우 데이터를 추출하고, 필요에 따라 가공한 후 데이터 웨어하우스에 저장하기까지의 흐름이 ETL 프로세스이며, 데이터 웨어하우스 구축에는 ETL 도구라는 전용 소프트웨어가 자주 이용된다.

     

    - 데이터 스테이징 영역

    데이터 소스에서 데이터를 얻은 후에 데이터 웨어하우스로 가기 전에 임시적으로 만든 테이블에 저장을 해두는 곳이다.

     

    - 데이터 마트

    데이터 분석과 같은 목적으로 데이터를 사용하는 경우에는 데이터 웨어하우스에서 필요한 데이터만을 추출하여 데이터 마트를 구축한다. 데이터 마트는 BI 도구와 조합시키는 형태로 데이터를 시각화하는 데에도 사용된다.

    데이터 웨어하우스와 데이터 마트 모두 SQL로 데이터를 집계하므로 테이블 설계가 중요하고, 데이터 웨어하우스에서 데이터 마트까지 보내주는 ETL 프로세스도 마찬가지로 중요하다.


     

     

     

    4. 데이터 레이크


    https://www.sap.com/cz/insights/what-is-a-data-lake.html

     

    빅데이터를 다루게 되면 ETL 프로세스는 복잡해진다. 거기다가 모든 데이터가 데이터 웨어하우스가 넣을 수 있는 것으로 만들어지지 않기 때문에 일단 모든 데이터를 원래의 형태로 축적해두고 나중에 필요에 따라 데이터를 가공하는 구조가 필요하다. 그래서 여러 곳에서 흘러들어 오는 데이터를 물로 비유하고, 저장하 곳을 호수에 비유하여 데이터를 축적하는 호수를 데이터 레이크라고 한다.

    데이터 레이크 역시 분산 스토리지를 사용한다. 데이터 형식은 자유겠지만 대부분 CSV나 JSON 형식이 사용된다.

    데이터 웨어하우스 대신 데이터 레이크를 사용하게 된다면 위에 있던 사진에 있는 데이터 웨어하우스의 자리를 데이터 레이크가 대체하게 되고, ETL 프로세스 없이 데이터 소스에 있는 로우 데이터를 그대로 보존하여 데이터 레이크로 넘기게 된다. 이후 데이터 레이크에서 데이터 마트로 보낼 원하는 데이터만 가공하여 추출하게 된다. 이때 데이터 레이크는 단순한 분산 스토리지라서 데이터 가공을 할 수 없기 때문에 MapReduce와 같은 분산 데이터 처리 기술을 이용하여 원하는 데이터를 가공, 집계하고, 데이터 마트로 추출한다.


     

     

     

    5. 데이터 엔지니어의 역할


    데이터 엔지니어는 시스템의 구축 및 운용, 자동화등을 담당하고, 데이터 분석가는 데이터에서 가치 있는 정보를 추출한다.

     

    - 애드 혹 분석 및 대시보드 도구

    처음 데이터 파이프라인은 자동화를 하지 못하고, 수작업으로 처리할 것이다. 이런 수작업으로 데이터를 집계하는 것을 일회성 데이터 분석이라는 의미로 애드 혹 분석이라고 한다. 애드 혹 분석은 개발 초창기에 사용하는 편이라 데이터 마트를 만들지 않은 채 데이터 레이크와 데이터 웨어하우스에 직접 연결하는 경우가 많다.

    정기적으로 그래프와 보고서를 만들고 싶을 때에는 대시보드 도구를 많이 도입하는 편이다. 일부 대시보드 도구는 데이터 마트가 없어도 작동하도록 설계되어 있어서 사용하는데 지장이 없지만, 데이터 마트가 만들어지게 되면 대시보드 도구대신 BI도구를 사용하는 편이다.

     

    - 데이터 마트와 워크플로 관리

    복잡한 데이터 분석에서는 먼저 데이터 마트를 구축한 후에 분석하거나 시각화하도록 한다. 특히 BI 도구를 사용한다면 집계 속도가 빨라야하므로 데이터 마트가 거의 필수적이고, 데이터 마트 구축은 배치 처리로 자동화되는 경우가 많기 때문에 그 실행 관리를 위해 워크플로 관리 도구를 사용한다.


     

     

     

    6. 데이터를 수집하는 목적


    - 데이터 검색

    대량의 데이터 중에서 조건에 맞는 것을 찾고 싶은 데이터 검색 기능이 필요한 경우가 있다. 데이터 검색은 언제 어떤 것이 필요할지 모르기 때문에 모든 데이터를 취득해 놓도록 한다. 그리고 신속하게 검색을 할 수 있어야 하기 때문에 실시간 데이터 처리나 검색 엔진을 사용하여 키워드를 찾는 기능이 필요하다.

     

    - 데이터 가공

    데이터 처리 결과를 이용하는 경우에는 목적이 명확하기 때문에 필요한 데이터를 모아 데이터 파이프라인을 설계한다. 데이터의 가공에는 자동화가 필수적이기 때문에 워크플로 관리를 도입하여 테스트를 꼼꼼하게 반복적으로 실행해서 시스템을 구축한다.

     

    - 데이터 시각화

    통계 분석 소프트웨어나 BI 도구 등으로 그래프를 만들고, 거기서 앞으로의 상황을 예측해 의사 결정에 도움이 되도록 한다. 분석 환경을 갖추고 여러 번 데이터 집계를 반복하여 시각화를 해주는데, 빠르게 시각화 결과를 보여주려면 데이터 마트가 필요하다.


    반응형

    댓글

Designed by Tistory.