본문 바로가기
Book & Lesson

[책정리] 빅데이터를 지탱하는 기술 1-2. 빅데이터시대 데이터분석기반

by 카프리썬_ 2021. 6. 16.
728x90
728x90

6월 선정도서 - 빅데이터를 지탱하는 기술

선정계기 - 데이터가 쌓이고 흐르는 전체적인 구조를 깊이 있게 이해할 수 있고,

미래의 데이터엔지니어로써 해야하는 업무들의 전반적인 흐름을 파악할 수 있을 것 같아 선정(기대가 된다)

 

 

목차 

챕터1. 빅데이터의 기초지식

1-1. 빅데이터의 정착

1-2. 빅데이터시대의 데이터분석기반

1-3.스크립트 언어에 의한 특별분석과 데이터프레임

1-4. BI도구와 모니터링

 


 

 

 

빅데이터의 기술

빅데이터의 기술이란 분산시스템을 활용하면서 데이터를 순차적으로 가공해나가는 일련의 구조

빅데이터기술이 기존의 데이터웨어하우스와 다른점은

다수의 분산 시스템을 조합하여 확장성이 뛰어난 데이터 처리구조를 만든다는 점.

 

데이터파이프라인

차례대로 전달해나가는 데이터로 구성된 시스템

어디에서 데이터를 수집하고, 무엇을 실현하고 싶은지에 따라 데이터파이프라인이 변한다. 

간단한 구성으로 끝날수도 있지만, 하고싶은일이 증가함에 따라 시스템에 복잡해지고 어떻게 조합시킬지가 문제

빅데이터를 위한 데이터파이프라인

데이터수집

데이터는 파일서버에서 생성된 로그파일, 데이터베이스에 저장된 데이터, 서비스에 모여진 이벤트 데이터 등

데이터를 수집할 수 있는 방법은 다양하다. 데이터파이프라인은 데이터를 모으는 부분부터 시작한다. 

추가 : 데이터수집 관련 https://pearlluck.tistory.com/385

 

데이터전송

이렇게 수집한 데이터를 아래와 같은 두가지 방식으로 데이터를 전송한다. 

  • 스트리밍형 : 차례로 생성되는 데이터를 끊임없이 계속해서 보내는 방식 -> 앱이나 IoT에서 데이터를 수집할때 사용
  • 벌크형 : 이미 이낙 존재하는 데이터를 정리해 추출하는 방식 -> db나 서버에서 정기적으로 데이터 수집할때 사용

데이터처리
데이터를 전송받은 두가지 형태에 따라 아래의 방법으로 데이터를 처리한다. 

  • 스트림처리 : 실시간으로 데이터를 처리하기 위해 스트림형으로 수집한 결과를 시계열DB에 저장
    • 장점-지금 무슨일이 일어나고 있는지 알 수 있다.
    • 단점-장기적인 데이터분석에는 적합하지 않다.
    • 예를 들어 과거 30분간 취합한 데이터를 집계하여 그래프를 만들때 시계열DB를 만들고 저장해둔다.
      이때 스트림처리를 통해 지금 무슨 일이 일어나고 있느지 즉시 알 수 있지만,
      지난 1년간 데이터를 분석하려고 한다면 데이터의 양이 엄청나게 늘어나는 문제가 있다.
  • 배치처리 : 장기적인 데이터 분석을 위해 벌크형으로 수집한 결과를 분산스토리지에 저장
    • 장점-스트림처리보다 대량의 데이터를 저장하고 처리할 수 있다. 
    • 단점-실시간 처리불가, 장기적인 데이터분석에 용
    • 분산스토리지?
      여러 컴퓨터와 디스크로부터 구성된 스토리지 시스템.
      예시1. 대표적으로 한 덩어리로 모인 데이터에 이름을 부여해서 파일로 저장하는 객체스토리지 (Ex: AWS S3) 
      에시2. 많은 데이터를 읽고 쓸 수 있는 NoSQL을 분산스토리지로 사용할 수 있음.다만 확장성 고려필요 
    • 분산데이터 처리?
      분산 스토리지에 저장된 데이터를 처리하는 프레임워크.
      MapReduce가 사용되어진 부분으로 데이터를 가공해서 그 결과를 외부 데이터베이스에 저장하는 작업.

데이터가공

이제 분산스토리지에 저장된 데이터를 나중에 분석하기 쉽도록 가공해야한다.

  • Hive사용 : 분산스토리지 상의 데이터를 SQL로 집계하기 위해 대화형 쿼리엔진 등을 도입한 방식.
  • ETL작업 : 외부의 데이터웨어하우스 제품을 이용하기 위해 필요한 작업이다.
    분산스토리지에서 추출한 데이터를 데이터웨어하우스에 적합한 형식으로 변환한다.
    데이터를 '추출'(Extract)하고, 그것을 가공(Transform)한뒤, 데이터웨어하우스에 로드(Load)하는 과정이다. 

* ETL프로세스

ETL : 데이터베이스 바깥에서 데이터를 가공하는 경우

ELT : 데이터를 읽어들인 후 가공하는 경우 

 

워크플로 관리

마지막으로 전체적인 파이프라인의 동작과정을 관리한다. 

매일 정해진 시간에 배치처리를 스케쥴대로 실해앟고, 오류가 발생한 경우에 관리자에게 통지하는게 목적이다. 

 

이처럼 데이터 파이프라인이 복잡해지면서 한곳에서 제어하지 않으면 전체의 움직임을 파악하는게 곤란해진다. 

빅데이터의 처리에는 크건 작건간에 시스템장애가 발생하므로 오류발생시 처리와 다시처리하는 기능이 중요하다. 


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

 

기존 데이터웨어하우스를 구축하는 프로세스 

데이터웨어하우스대량의 데이터를 장기보존하는 것에 최적화되어 있음.

정리된 데이터를 한번에 전송하는 것은 뛰어나지만, 소량의 데이터를 자주 쓰고 읽는데는 적합하지 않다. 

업무시스템을 위한 RDB나 로그 등을 저장하는 파일서버를 '데이터소스'

여기에서 보존된 Raw 데이터를 추출하고,

필요에 따라 가공한뒤 데이터웨어하우스에 저장 // ETL프로세스

또한, 분석용으로 필요한 데이터만 추출하는 '데이터마트'를 구축한다. 

(데이터웨어하우스와 데이터마트 모두 SQL로 데이터집계)

 

데이터웨어하우스를 중심으로 하는 파이프라인은 테이블 설계와  ETL프로세스가 중요하다.


데이터레이크와 데이터마트 

빅데이터의 시대가 되면서 ETL프로세스 자체가 복잡해졌다. 

모든 데이터가 데이터웨어하우스에서 오는 것이 아니라 데이터웨어하우스에 넣지 못하는 데이터들도 필요해졌다.

그래서 데이터를 축적하는 호수처럼 '데이터레이크' 필요해졌다.

모든 데이터를 원래의 형태로 축적해두고, 나중에 그것을 필요에 따라 가공하기 위한 저장소이다.

 

임의의 데이터를 저장할 수 있는 분산스토리지를 데이터레이크로 사용

데이터형식은 자유지만, 대부분 CSV나 JSON같은 텍스트형식사용 

 

데이터레이크는 단순한 스토리지이며, 그것만으로 데이터를 가공할 수 없다. 

그래서 MapReduce 등의 분산 데이터처리기술이 필요하다. 

데이터분석에 필요한 데이터를 가공,집계하고, 이것을 데이터마트로 추출해야

데이터웨어하우스처럼 데이터분석을 진행할 수 있다.


데이터엔지니어와 데이터분석가

데이터엔지니어 : 시스템의 구축 및 운용, 자동화 담당

데이터분석가 : 데이터에서 가치 있는 정보를 추출 담당 

 

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

애드 혹 분석은 일회성 데이터 분석이라는 의미로,

SQL쿼리를 직접 작성해서 실행하거나 스프레드시트에서 그래프를 만드는것까지 포함한 모든 수작업

 

분석 초기에는 데이터마트 없이 하나하나 수동으로 애드 혹 분석을 하고,

데이터 레이크에서 직접 뽑아 대시보드를 만들기도 했다.

그런데 데이터가 복잡하고 커질수록 집계 속도를 높이기 위해 데이터마트를 구축하는 것이 거의 필수적이다. 

데이터 마트 구축은 배치 처리로 자동화 되는 경우가 많기 때문에 워크플로 관리 도구를 사용한다.


데이터를 모은 후에는 무엇을 할까? 

데이터를 수집하는 목적은 무엇을 실시할지에 따라 달라진다. 

 

데이터검색 : 대량의 데이터 중에서 조건에 맞는 것을 찾고 싶을 경우 

예를 들어 장애발생원인을 찾기 위한 로그를 확인할 경우, 언제 무엇이 필요할지 몰라 발생하는 모든 데이터를 취득.

필요할때 신속하게 검색할 수 있게 하기 위해 실시간 데이터 처리나 검색엔진을 사용

 

데이터가공 : 업무시스템의 일부로서 데이터처리결과를 이용하고 싶을 경우 

목적이 명확하기 떄문에 필요한 데이터를 계획적으로 모아 데이터파이프라인을 설계한다. 

데이터가공에 자동화가 필수적. 워크플로 관리를 도입하여 꼼꼼하게 테스트를 반복적으로 실행해서 시스템 구축/개발

 

데이터시각화 : 데이터를 시각적으로 봄으로써 알고싶은 정보를 얻는 경우

통계분석SW나 BI도구로 그래프를 만들고, 거기에서 앞으로 상황을 예측해 의사결정을 하는 경우

임의의 분석환경을 갖추고 데이터집계를 반복, 시각화를 고속화하려면 데이터마트 필요, 집계결과를 대시보드에 정리

 

데이터분석 

  • 확증적 데이터분석 : 가설을 세우고 그것을 검증하는 방법 -> 통계학적 모델링에 의한 데이터분석
  • 탐색적 데이터분석 : 데이터를 시각화하여 그 의미를 읽어내려고 하는 방법 -> 사람의 힘으로 의미를 읽는다. 

 

 

728x90
반응형