ㅡ. Dataflow 란?

Dataflow 란 무엇일까? 많은 데이터를 가져와서 (수 GB, 수 TB) 데이터와 결합 하여 의미 있는 데이터를 산출 하는 과정을 의미합니다.

배치 과정에서 위에서와 같이 말할 수 있지만 스트리밍 변환 과정도 존재합니다.

예를들어, 스트리밍 변환은 데이터가 도착할때 추가적인 데이터를 추가해서 반환한다던지, Filter 를 거쳐서 해당 데이터만 반환한다던지 특징이 있습니다. 

 

ㅡ. Apache Beam

이러한 로직들을 구현하게 도와주는것이 Apache Beam 에서 코드를 작성하면 됩니다.

그래서 Apache Beam으로 데이터 파이프라인을 구축하는 방법에 대해 알아야 합니다.

Apache Beam에서 파이프라인은 상위 컨테이너(파이프라인) 파이프라인을 통해 흘러가는 데이터(Pcollection) 이 존재하게 되는데 흘러가는 데이터를 조작하는 과정을 변환(PTransform) 을 수행하게 됩니다. 여기서 파이프라인은 DAG(Directed Acyclic Graph) 로 불리고, 노드와 에지가 서로 반복하거나 순환할 수 있는 방법이 존재하지 않는 상태를 의미합니다. 

 

조금더 살펴보면 PCollection은 한정되어 있을 수도 있지만 그렇지 않을 수도 있습니다. Streaming 데이터의 경우 한정되지 않습니다. publisher 가 topic에 message 를 계속 던져주게 되므로 또한 PCollection 자체는 변경할 수 없는 특성이 있습니다. PCollection을 생성하면 (원시 데이터를 읽고 처리한 청크 데이터 파일) 또한, 파이프라인에서 PCollection은 중간 부분만 따로 빼올 수도 있는 것이 아니기 때문에 개별 항목이 아닌 순차적인 흐름이라는 사실을 이해하고 있어야 합니다.

 

PTransform을 수행할때 입출력을 둘 이상을 가질 수 있습니다.

연산)

join 변환 -> 두 개의 PCollection을 입력으로 사용해 새로운 PCollection 출력

split 변환 -> 하나의 PCollection을 입력으로 취해 두 개의 개별 PCollection을 출력

 

PCollection 의 변형을 수행할 때 데이터 원본으로 사용된 것은 제거하지 않습니다. 

Runner 에서는 Apache Beam 을 동작시킬 수 있는 다양한 실행 엔진이 존재하게 됩니다. e.g) dataflow 

그외)

SQL 데이터베이스와 통신해야 하는 코드에서는 파이썬 SQL Alchemy 구현 그외 자바에도 제공해주는 Hibernate 가 존재합니다.

 

Apache Beam에는 몇 가지 파이프라인 러너가 존재하고, 가장 간단한 것은 DirectRunner 가 있습니다. (Local 작업)

로컬에서 파이프라인 실행하는 테스트 도구이며, 분산 실행을 통해 잠재적으로 많은 수의 시스템에 분산 작업을 요청할 수 있습니다.

 

실질적으로 실행시킬 때 네트워크를 통해 이동하는 데이터가 로컬 메모리에서 엑세스 하는것보다 훨씬 느리다.(+Learn) 는 사실을 알고있어야 합니다.

 

ㅡ. Memo

로컬에서 Cloud Dataflow 를 동작시키기 위해 다음 순서를 작성해 보았습니다.

pip install apache-beam[gcp] (pip3 인경우 apache-beam[gcp] 를 ' ' 로 감싸야함)

gcloud auth application-default login //자격증명

 

또, cloud 상에서 켜질 때 느려지는 이유는 VM 가 부팅되고 프로비저닝 디스크 설치 및 소프트웨어 업데이트를 진행하기 때문입니다.

아이오와가 가격이 젤 저렴한데

리소스 vCPU $0.056

GB Memory $0.003557

GB Standard disk $0.000054

GB SSD $0.000298

가격이 들게 됩니다.

*ref : http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791161753737&orderClick=LAG&Kc=(도서:구글 클라우드 플랫폼상의 데이터 과학)