GCP의 DataFlow를 손쉽게 접해본 기록

Intro



Google Cloud Dataflow를 접하는 것이 있었기 때문에, 비망도 겸해 어떤 느낌이었는지 기록을 남긴다.

Google Cloud Dataflow란?



간단하게 말하면, 스트리밍 데이터나 조작·관리를 가져와 주는 GCP 서비스 입니다.
이번에는 PubSub에서 받은 데이터를 DataFlow를 통해 CloudStrage에 배치하려고 합니다.
로그나 트래킹 데이터와 같은 물건이 불특정 다수 post되어, 그것을 보관하거나 나중의 분석에 이용하는 경우를 상정하고 있습니다.

1.Pub/Sub에 주제 만들기



Pub/Sub는 또 스트레이트인 이름입니다만, 이쪽도 GCP의 서비스입니다. 소위 메시징이라고 할까 큐라고 할까.
이번 데이터의 시작점, 어떤 의미 트리거가 됩니다.
우선 보통 GUI 콘솔에서 이름을 붙이기만 하면 됩니다.

2. CloudStorage에 버킷 준비



이번 종점이 되는 장소를 준비해 둡니다.
새 버킷을 만들거나 기존의 모든 폴더를 준비하십시오.
임시 파일을 배치하는 폴더도 함께 준비해 둡시다(후술).

3.DataFlow를 템플릿에서 생성



여기까지 준비할 수 있으면, 나머지는 화면으로부터 포치포치 해 가는 것만으로 되어 버립니다.
DataFlow에는 이용 빈도가 높은 유스 케이스에 맞추어 템플릿이 준비되어 있으므로,
적당히 선택해, 필요한 설정을 하는 것만으로 어느 정도 움직이는 것이 생겨 버립니다.

템플리트에서 작업 작성 링크에서 작성 화면으로 이동하면 작업 이름, 리전을 선택하십시오.
그리고 템플릿을 선택.
이번에는 "Pub/Sub to Text Files on Cloud Strage"(그대로!)를 선택합니다.
그 외 필수 파라미터를 설정하는데 있어서의 포인트로서는,
  • Pub/Sub의 Topic명은 "projects~"로 시작하는 것으로 한다(토픽의 상세 페이지에서 카피할 수 있는 것).
  • Output Directory는 날짜 형식을 사용할 수 있습니다. "gs://foo-bucket/bar-folder/YYYY/MM/DD"라든가 해 두면 YMD는 날짜에 따라 자동으로 폴더를 할당해 준다.
  • "임시 위치"를 지정해야 합니다. (음, 모든 버킷에 적절하게/tmp를 만들면 괜찮을까요)



  • 4.Topic에 Publish 해 보자



    이상까지 일종의 설정은 완료.
    작업을 실행하고 PubSub에서 메시지를 게시한 후 잠시 후 CloudStorage에 파일이 있습니다.
    내용에는 퍼블리시한 메시지가!
    덧붙여서, 디폴트는 5분간에 쌓인 메시지가, 각각 개행된 후에 1파일로서 CloudStorage에 토해지는 모양.

    비고·감상


  • 그러고 보니 subscription을 만들지 않습니다. 통상, Topic에 대해서 Subscription이 있어 PubSub가 구성됩니다만, 이번은 작업을 작성한 시점에서 자동으로 subscription이 만들어지고 있었던 것 같습니다.
  • 기존 템플릿 이외의 구성은 적절하게 템플릿을 구현해야합니다. 다만, github에 템플릿 저장소 가 있으므로, 그것을 베이스에 커스터마이즈 하는 것이 가능 (소스는 Java 또는 Python).
  • 최종적으로는 BigQuery도 얽혀 보고 싶지만, 이번 감촉으로 그것도 어렵지 않을 것 같은 느낌.
  • 좋은 웹페이지 즐겨찾기