본 글은 빅데이터를 지탱하는 기술을 읽고 정리한 내용입니다.
1-1 빅데이터의 정착
분산 시스템에 의한 데이터 처리의 고속화
데이터의 취급이 어려웠던 이유
- 데이터의 분석 방법을 모름 (데이터로부터 가치를 찾을 수 없음)
- 데이터 처리에 수고와 시간이 걸림 (데이터 처리에 비용이 많이 듦)
빅데이터 기술 등장 - Hadoop과 NoSQL
- Hadoop : 다수의 컴퓨터에서 대량의 데이터를 처리하기 위한 시스템
- 원래 구글에서 개발된 분산 처리 프레임워크인 ‘MapReduce’를 참고하여 제작됨
- 초기에는 Hadoop에서 MapReduce를 동작시키기 위해 Java로 프로그래밍을 해야했음(누구나 간단히 사용하지 못함). 따라서 SQL과 같은 쿼리를 Hadoop에서 실행하기 위한 소프트웨어로 Hive가 개발되어 2009년에 출시됨
- Hive를 이용하여 프로그래밍 없이 데이터를 집계할 수 있게 됨
- NoSQL 데이터베이스 : 빈번한 읽기/쓰기 및 분산 처리가 강점
- NoSQL이란 : 전통적인 RDB의 제약을 제거하는 것을 목표로 한 데이터베이스의 총칭
- 기존의 RDB 대비 고속의 읽기, 쓰기가 가능하며, 분산 처리에 뛰어남
- NoSQL 데이터베이스의 종류
- key-value store(kvs) : 다수의 키와 값을 관련지어 저장하는 데이터베이스
- document store : JSON과 같은 복잡한 데이터 구조를 저장하는 데이터베이스
- wide-column store : 여러 키를 사용하여 높은 확장성을 제공하는 데이터베이스
- Hadoop + NoSQL : 현실적인 비용으로 대규모 데이터 처리 실현
- NoSQL에 기록 & Hadoop으로 분산 처리
분산 시스템의 비즈니스 이용 개척
- 일부 기업에서는 이전부터 데이터 분석을 기반으로 하는 엔터프라이즈 데이터 웨어하우스를 도입하여 운용했음.
- 대량의 데이터를 축적하고, 분석함으로써 업무 개선과 경영 판단의 근거로 활용함
- 분산 시스템의 발전에 따라, 기존에 데이터 웨어하우스가 사용되는 경우(case)에도 Hadoop(or Hive)을 사용하는 경우가 증가함 → “빅데이터” 키워드 대두
- 비교적 작은 데이터 또는 중요한 데이터는 데이터 웨어하우스를 사용하고, 확장성이 필요한 업무 등에는 Hadoop을 사용하는 등 데이터 웨어하우스의 부하를 줄임
- 빅데이터 기술이 기존의 데이터 웨어하우스와 다른 점은 다수의 분산 시스템을 조합하여 확장성이 뛰어난 데이터 처리 구조를 만든다는 점임
직접 할 수 있는 데이터 분석 폭 확대
- 비슷한 시기부터 클라우드 서비스에 의한 빅데이터 활용이 증가함
- “여러 컴퓨터를 분산”하는 환경과 클라우드는 잘 맞는 한 쌍임
- 클라우드 서비스 예시
- Amazon Elastic MapReduce (클라우드를 위한 Hadoop)
- 구글 BigQuery (데이터 웨어하우스)
- Azure HDInsight (클라우드를 위한 Hadoop)
- Amazon Redshift (데이터 웨어하우스)
- 비슷한 시기 데이터 디스커버리(BI 도구) 등장
- 데이터 디스커버리 : 데이터 웨어하우스에 저장된 데이터를 대화형으로 시각화하여 가치있는 정보를 찾고자 하는 프로세스
- BI(Business Intelligence) : 이전부터 데이터 웨어하우스와 조합되어 사용되던 경영자용 시각화 시스템
1-2 빅데이터 시대의 데이터 분석 기반
빅데이터 기술 - 서브 시스템들
데이터 파이프라인 - 데이터 수집부터 워크플로 관리까지
- 데이터 파이프라인 : 데이터가 흘러가는 시스템
- 파이프라인에 하고싶은 일이 증가됨에 따라 시스템은 점차 복잡해지고, 그것을 어떻게 조합시킬지가 문제가 됨
데이터 수집 - 벌크 형과 스트리밍 형의 데이터 전송
- 데이터 파이프라인은 데이터를 모으는 부분부터 시작됨
- 데이터는 여러 장소에서 발생하고 각기 다른 형태를 보일 수 있음
- 데이터 전송(data transfer)의 방법은 크게 두 가지가 있음
- 벌크(bulk) 형 : 어딘가에 존재하는 데이터를 정리해 추출하는 방법
- 데이터베이스와 파일 서버 등에서 정기적으로 데이터를 수집하는 데 사용됨.
- 스트리밍(streaming) 형 : 차례차례로 생성되는 데이터를 끊임없이 계속해서 보내는 방법.
- 모바일 앱, 임베디드 기계 등에서 발생하는 데이터를 수집하는 데 사용됨
스트림(stream) 처리와 배치(batch) 처리
- 스트림 프로세싱 : 스트림 처리는 데이터가 생성되는 즉시 실시간으로 데이터를 처리하는 것을 의미
- ex) 고객이 이전에 구매한 내역을 즉시 반영하여 상품 추천
- 배치 프로세싱 : 배치 처리는 특정 시간 범위 내에서 대량의 데이터를 일괄 처리하는 것을 말한다
- ex) 하루에 한 번씩 고객들의 구매 내역을 가져와서 ‘요즘 트렌드’ 상품을 추천한다.
분산 스토리지 - 객체 스토리지, NoSQL 데이터베이스
- 수집된 데이터는 분산 스토리지(distribute storage)에 저장됨
- 분산 스토리지(distribute storage) : 여러 컴퓨터와 디스크로부터 구성된 스토리지 시스템
- 분산 스토리지 저장 방법
- 객체 스토리지(object storage) : 한 덩어리로 모인 데이터에 이름을 부여해서 파일로 저장
- NoSQL 데이터베이스
분산 데이터 처리 - 쿼리 엔진, ETL 프로세스
- 분산 데이터 처리의 주 역할은 나중에 분석하기 쉽도록 데이터를 가공해서 그 결과를 외부 데이터베이스에 저장하는 것임
- 분산 스토리지에 저장된 데이터를 처리하는 데는 분산 데이터 처리 프레임워크가 필요함
- 빅데이터를 SQL로 집계하기 위한 두 가지 방법
- 쿼리 엔진(query engine) 도입 : ex) Hive, 대화형 쿼리 엔진(interactive query engine), …
- 외부의 데이터 웨어하우스 제품을 이용하는 것 : ex) AWS Redshift, Google BigQuery, …
- 이를 위해서는 분산 스토리지에서 추출한 데이터를 데이터 웨어하우스에 적합한 형식으로 변환해야 함.
- 이러한 절차를 ETL(Extract - Transform - Load)(or ELT) 프로세스라고 함.
워크플로 관리
- 전체 데이터 파이프라인의 동작을 관리하기 위해서 워크플로 관리 기술을 사용함
- ex) 매일 정해진 시간에 배치 처리를 실행
- ex) 특정한 순서대로 파이프라인을 동작
- ex) 오류가 발생한 경우, 관리자에게 통지
데이터 웨어하우스와 데이터 마트 - 데이터 파이프라인 기본형
- 데이터 웨어하우스는 웹 서버 등에 사용하는 일반적인 RDB와는 달리 ‘대량의 데이터를 장기 보존하는 것’에 최적화되어 있음. 따라서 정리된 대량의 데이터를 한 번에 전송하는 것은 뛰어나지만, 소량의 데이터를 자주 쓰고 읽는 데는 적합하지 않음.
- 데이터 마트(data mart) : 데이터 분석과 같은 목적에 사용하는 경우에는 데이터 웨어하우스에서 필요한 데이터만을 추출하여 ‘데이터 마트’를 구축함. (웨어하우스와 마찬가지로 SQL 형태)
- 데이터 웨어하우스를 중심으로 하는 데이터 파이프라인
- [저장소] 데이터 소스(source) : 업무 시스템을 위한 RDB나 로그 등을 저장하는 파일 서버들. (raw 데이터)
- [처리] ETL
- [저장소] 데이터 웨어하우스
- [처리] 필요한 데이터 추출(자주 읽고 쓰며 사용할 데이터)
- [저장소] 데이터 마트(data mart) → 분석
데이터 레이크 - 데이터를 그대로 축적
- 데이터 레이크 : 대규모의 다양한 원시 데이터(raw data)를 기본 형식으로 저장하는 데이터 저장소 (분산 스토리지)
- 정제되지 않은 데이터들을 있는 그대로 저장하는 공간임
- 대부분 CSV나 JSON 등으로 저장됨
- 데이터 웨어하우스를 데이터 레이크로 치환하면, ETL 프로세싱이 완료된 데이터들을 데이터 마트에 넣고 관리하게 된다.
- 데이터 레이크를 중심으로 하는 데이터 파이프라인
- [저장소] 데이터 소스(source) : 업무 시스템을 위한 RDB나 로그 등을 저장하는 파일 서버들. (raw 데이터)
- [저장소] 데이터 레이크 : 수집한 로우 데이터를 그대로 보존
- [처리] ETL
- [저장소] 데이터 마트(data mart) → 분석
데이터 분석 기반을 단계적으로 발전시키기 - 팀과 역할 분담, 스몰 스타트와 확장
애드 혹 분석(ad hoc analysis)
- 애드 혹 분석(ad hoc analysis) : 일회성 데이터 분석
- SQL 쿼리를 직접 작성하여 실행하거나 스프레드시트 등을 이용하여 그래프를 만드는 등의 수작업
- 애드 혹 분석은 데이터 마트를 만들지 않은 채 데이터 레이크나 웨어하우스에 직접 연결하는 경우가 많음
데이터 마트와 워크플로 관리
- 복잡한 데이터 분석에서는 먼저 데이터 마트를 구축한 후에 분석하거나 시각화하는 것이 효율적일 수 있음.
- 데이터 마트 구축은 배치 처리로 자동화되는 경우가 많기 떄문에 그 실행 관리를 위해 워크플로 관리 도구를 사용함
- 워크플로 관리가 도입되면, 데이터 분석보다는 엔지니어링 작업이 많아지기 때문에 이에 대한 비용이 발생함
- 그러나 데이터 처리를 자동화하여 장기적으로 운용하기 위해선 안정된 워크플로 관리가 필수적임
→ 머신러닝 파이프라인에서는 데이터 워크플로의 성숙한 자동화를 위해서 데이터 통계량의 변화 등을 잘 살피는 것도 중요한 이슈일 수 있음 (모니터링 도구 등)
확증적 데이터와 탐색적 데이터 분석
- 확증적 데이터 분석 (confirmatory data analysis) : 가설을 세우고 그것을 검증하는 분석
- 통계학적 모델링에 의한 분석 (통계 분석, 머신러닝 등)
- 탐색적 데이터 분석(exploratory data analysis) : 데이터를 먼저 보면서 그 의미를 읽어내려고 하는 분석
- 시각화 등을 활용하여 사람의 힘으로 의미를 읽는 것