Chater 1 빅데이터의 기초 지식¶
딥러닝 모델은 많은 양의 데이터를 필요로 한다. Large model, Large dataset의 트렌드는 앞으로도 지속될 것이다. 그만큼 데이터를 효율적으로 축적하고 사용할 수 있는 시스템에 대한 이해가 중요하고 앞으로는 기본 소양이 되지 않을까 생각된다. 빅데이터를 지탱하는 기술 책은 데이터 엔지니어링 분야에서 호평을 받고 있기에 선택했다.
1-1 빅데이터의 정착¶
분산처리와 데이터 처리 시스템 고속화¶
- 글로벌 서비스에서 처리하는 데이터의 양이 커지면서 기존 RDB로는 감당이 어려워짐
- Hadoop
- 다수의 컴퓨터에서 대량의 데이터를 처리하기 위한 시스템
- 분산 처리를 하기 위해선 Java로 프로그래밍을 해야했기에 누구나 쉽게 쓸 수 없었음
- SQL 같은 쿼리문으로 하둡을 사용할 수 있도록 하기 위해 Hive가 도입됨
- NoSQL
- key-value store, document store, wide-column store 등이 존재
- RDB에 비해 고속의 read, write 가능, 분산처리 뛰어남
- 2011년 말까지 NoSQL DB에 기록하고, Hadoop으로 분산처리하는 방식이 많이 사용됨
- 현실적인 비용으로 데이터 처리 가능해짐
비즈니스에서 분산 시스템 이용¶
- 기업은 데이터 분석에 데이터 웨어 하우스(DWH)를 사용하고 있었음
- 데이터 양이 커졌을 때 DWH는 확장하기에 큰 비용이 들어감(SW, HW가 통합된 장비)
- Hadoop 시스템은 기존 하드웨어 교체 없이 새로 장비를 추가하는 것으로 확장이 가능하기 떄문에 업체에서 많이 도입하게 됨
- 대량의 데이터 처리는 Hadoop이 담당하는 형태로 DWH의 부하를 줄이는 방식으로 사용(현실적 비용으로 데이터 처리)
- DWH는 큰 기업의 IT 부서가 많은 공을 들여 구축해야하는 큰 인프라
- 작은 기업에서도 데이터 분석 인프라를 필요로 하는 경우가 많아짐
- 구글의 BigQuery, 아마존의 Redshift 등의 SaaS가 생겨서 저비용으로 인프라 사용 가능해짐
- 데이터 디스커버리
- DWH에 저장된 데이터를 대화형으로 시각화하는 방법
- 셀프 서비스용 BI(Business Intelligence) 도구라고도 함
- 경영 의사 결정에 사용됨
1-2 데이터 분석 기반¶
데이터 파이프라인¶
- 데이터 수집
- 벌크 : DB, 파일서버 등에서 정기적으로 데이터 수집하는 방식(DWH에서 주로 사용)
- 스트리밍 : 모바일 앱이나 센서에서 차례로 생성되는 데이터를 끊임없이 계속 보내는 방식
- 처리
- 배치 처리 : 어느정도 정리가 된 장기적인 데이터 분석(용량 매우 큼)에 용이한 분산 시스템에서 가능한 방식
- 스트림 처리 : 실시간으로 축적한 데이터를 바로 처리하는 방식. 예를 들어 최근 30분 간 취합한 데이터를 시계열 DB에 저장하여 그래프 형태로 시각화해서 보여주는 방식
- 분산 스토리지
- Object storage : 한 덩어리로 모인 데이터에 이름을 부여해서 파일로 저장하고, 해당 데이터에 대한 스토리지를 구성(Amzaon S3)
- NoSQL : RDB에 비해 성능 면에서 우수
- 분산 데이터 처리
- Query engine을 도입하여 데이터를 SQL로 집계(Hive)
- 외부 DWH 제품 사용 : ETL(extract-transform-load) 프로세스 진행. 하둡에서 데이터를 추출(extract)하여 DWH에 맞는 형식으로 변환(transform)하고 DWH에서 load해서 사용
- Workflow
- 정해진 시간에 필요한 작업에 대한 배치 처리 진행하도록 스케줄링 해놓는 방식
- 에러가 발생하는 경우가 잦아서 장애 발생 알림과, 처리 재실행 등의 기능을 자동화해두는 것이 필요함
- Data lake, Data mart
- Data lake는 원래의 row form으로 데이터를 축적해주는 장소(단순 스토리지)이고 대부분 csv, json 형태임
- Data lake에서 분산처리 시스템을 통해 데이터를 다듬고 Data mart로 보내서 분석 진행
팀과 역할 분담¶
- small start, 확장 중요
- 자동화는 나중 일이고, 초기엔 수작업으로 데이터 집계 및 분석 수행(Ad hoc analysis)
- Ad hoc은 Data mart를 거치지 않고 주로 data lake나 DWH에 직접 연결해서 바로 데이터 추출하고 분석함
- 데이터 수집의 큰 목적 : 검색, 가공, 시각화
데이터 분석¶
- 확증적 데이터 분석(Confirmatory data analysis) : 통계 모델링, 머신러닝 등
- 탐색적 데이터 분석(Exploratory data analysis) : 시각화하여 사람의 힘으로 의미를 찾음
1-3 스크립트 언어와 데이터프레임¶
pandas, dataframe, 스프레드시트 등에 대한 설명과 예제라서 정리를 스킵함