구글 클라우드 빅데이터 머신러닝 스터디 1주차 정리!
이번에 구글 클라우드를 공부하게 되어 그 내용들을 한번 정리해 보고자 한다. 개념설명 부분과 실습이 있는데, 실습을 따라가는 과정에서 분명 하라는대로 했는데 안되는 경우가 많이 있어서 그 부분들을 위주로 정리해보려 한다!
이 스터디에서는 구글 클라우드의 전반적인 제공 기능과 그들만의 특화점인 다양한 머신러닝 API 들에는 어떤 것이 있고, 어떻게 사용하면 될지에 대해 배운다. 사실 머신러닝 api 에는 별 관심은 없지만 열심히 들어보고자 한다!!
Big Data and Machine Learning on Google Cloud
구글 Cloud 인프라는 3개의 계층으로 볼 수 있다.
이 교육과정에서는 맨 아래 계층의 Networking & Security 부분은 다루지 않는다.
먼저, Compute 계층을 보자
Compute
빅데이터 작업을 많이 하는 기업은 좋은 성능의 컴퓨터가 필요할 때가 많다. 구글은 위와 같은 4가지 종류의 연산 서비스를 제공한다. 하나하나씩 뭔지 알아보자!
1. Compute Engine : 물리적 데이터 센터와 유사한 리소스로 가상으로 구성된 IaaS 제품. (Infrastructure as a Service). 서버 인스턴스를 직접 관리하려는 사용자에게 최대한의 유연성을 제공한다.
2. Google kubernetes Engine : 클라우드 환경에서 컨테이너화된 애플리케이션을 실행한다.
3. App Engine : 완전 관리형 PaaS 서비스로 infra application 요구 사항에 대한 액세스를 제공하는 라이브러리에 코드를 바인딩 한다. 애플리케이션 로직에 더 많은 리소스를 집중할 수 있다.
4. Cloud Functons : 클라우드 저장공간에 새로운 파일이 업로드 될 때와 같은 이벤트에 대한 응답으로 코드를 실행하는 cloud function 기능도 제공한다. serverless한 실행 환경이다.
TPU : Tensor Precessing Unit : 기계 학습 워크로드를 가속화 하는데 사용되는 구글의 개발 ASIC. 연산 속도가 200배 이상 빨라진다!. 이 TPU를 구글 클라우드 서비스를 이용하면 사용할 수 있다.
다음으로 Storage를 살펴보자.
Storage
클라우드 컴퓨팅에서는 연산기능과 저장공간이 서로 분리 되어 있다. 이는 일반 데스크탑 컴퓨터와 클라우드 컴퓨터의 차이점이라 할 수 있다.
다음은 구글 클라우드에서 제공하는 데이터베이스, 저장공간 서비스들이다.
데이터를 비정형데이터와 정형 데이터(structured data)로 나누어 보자. Unstructured data 는 테이블로 정리가 되지 않은 문서,이미지,음성 파일과 같은 것으로 주로 Cloud Storage 에 저장이 된다.
Cloud Storage의 경우 4가지의 기본 스토리지 클래스가 존재하는데, 이는 해당 데이터에 얼마나 자주 접근하는 지에 따라 클래스가 나뉘어져 저장된다.
정형 데이터의 경우 테이블, 행, 열 등에 저장된 정보를 뜻한다.
정형 데이터는 transactional과 analytical workloads로 나뉘어 진다.
transactional workloads 는 빠른 데이터 삽입과 업데이트가 요구되는 온라인 트랜잭션 처리 시스템이다.
데이터가 트랜잭션이고 SQL을 사용하는 경우 -> Cloud SQL, Cloud Spanner
-> Cloud SQL 은 로컬에서 지역으로 확장할 때 가장 적합하지만 Cloud Spanner는 데이터베이스를 전역으로 확장하는데 가장 좋다.
데이터가 트랜잭션이고 SQL 없이 사용할 때 -> Firestrore
-> Firestore는 트랜잭션, No-SQL, 문서 지향 데이터베이스 이다.
Analytical workload 는 전체 데이터 세트를 읽을 때 사용되는 처리 시스템이다. 집계와 같은 쿼리가 필요한 경우가 많다.
SQL 문이 필요한 분석 워크로드가 있는 경우 -> BigQuery
-> 구글의 데이터 웨어하우스 솔루션 BigQuery 을 사용하면 큰 규모의 데이터셋을 분석할 수 있다.
SQL 문이 필요없는 경우 -> Cloud Bigtable
-> NoSQL 솔루션을 제공한다. 밀리세컨드의 대기 시간만 필요한 실시간 고처리량 애플리케이션에 적합하다.
마지막으로 big data and ML Products 부분을 살펴보자!
Big data and ML Products
다음이 구글 클라우드에서 제공하고 있는 빅데이터, ML 관련 서비스이다. 저 서비스들은 정말 간단하게 보고 넘어가려고 한다ㅎ
실습은 ML 서비스 Big Query 를 직접 이용해보는 것이다!
실습은 밥먹고와서 정리해야징!
Data Engineering for Streaming Data
이번에는 데이터 엔지니어링 분야에 대해서 알아보자. 구글 클라우드를 이용해 실시간 데이터 솔루션을 제공할 수 있도록 하는 것이 목표이다.
다음의 기능들을 구글 클라우드에서 실시간 데이터 처리를 위해 제공한다. 하나하나 간단하게 보자!
먼저, Batch process 와 Streaming dat 의 차이를 생각해보자.
Batch (일괄처리) 는 저장되어있는 데이터 집합에 대해 처리 및 분석이 필요한 경우 발생한다.
Streaming 데이터 처리의 경우 데이터가 시스템을 흐를때마다, 즉 어떤 이벤트가 발생할 때마다 분석하고 처리해야한다. 거의 실시간으로 일어나고 빨라야 한다.
4Vs
안정적인 파이프라인을 구축하는것이 데이터 엔지니어링에서 중요하다. 이의 4가지 주요과제를 4Vs 라고 하는데,
각각 다양성(variety), 볼륨(Volume), 속도(Velocity), 진실성(Veracity) 이다.
다양성(variety)
-> 데이터는 다양한 소스 , 다양한 형식으로 들어올 수 있다.
볼륨(Volume)
-> 기가바이트에서 페타바이트까지의 다양한, 대용량의 데이터 를 처리할 수 있어야 한다.
속도(Velocity)
-> 데이터가 시스템에 도달하는 즉시 거의 실시간으로 처리되어야 하는 경우도 있다.
진실성(Veracity)
-> 데이터의 품질. 빅데이터는 다양한 유형의 데이터 차원들이 포함되기 때문에 수집된 데이터는 정확해야한다는 것.
Message-oriented architecture
데이터 파이프라인의 초기 단계는 대량의 스트리밍 데이터가 수신되는 수집 단계이다. 그러나 수집되는 데이터들이 다 같은 모습이 아니다. 비동기적으로 발생하는 수많은 이벤트들에서 수신될 수 있다. 이렇게 다양한 방식으로 수신되고, 불량,지연된 데이터들이 수신되고, 서비스가 안정적으로 굴러가도록 하기 위해서 구글클라우드에서 제공하는건 다음과 같다.
Pub/Sub -> 분산된 메시지 지향 아키텍쳐를 대규모로 처리해주는 도구이다. (publisher/subscriber)
담에 자세히 알려준다고 하셨다ㅋㅋ
Apache Beam -> 아파치 빔은 파이프라인 설계를 도와준다. ETL, Batch process, streaming 데이터 들에 대한 데이터 처리 파이프라인을 정의, 실행하는 오픈 소스 통합 프로그래밍 모델이다. 기능은 다음과 같다.
Apache Beam 으로 데이터 처리 파이프라인을 만들 수 있다. 이제, 이 파이프라인 구현을 위한 실행 엔진을 선택하는 과정이있다!
이 선택 과정에서 고려할 사항은 다음과 같다.
1. 유지 오버헤드가 얼마나 큰가?
2. 인프라가 신뢰할만 한가?
3. 파이프라인 확장은 어떻게 하는가?
4. 파이프라인을 모니터링은 어떻게 하는가?
5. 파이프라인이 어떠한 특정 서비스 제공업체에 종속되어 있는가?
이걸 도와주는것이 바로 구글 클라우드 서비스에서 제공하는 Dataflow라는 애다. 구글 클라우드 생태계 내에서 아파치빔 파이프라인을 실행하기 위한 완전 관리형 서비스이다.
Dataflow의 특징은 NoOps, Serverless 하다는 것이다.
NoOps 환경은 유지관리, 모니터링과 확장이 자동화되기 때문에 관리가 필요하지 않다는 뜻이다.
Looker, Data Studio
looker, data studio 는 데이터 시각화 도구로 구글 클라우드에서 제공하는 시각화 API 인것 같다.써야할 때 공부하지 뭐!