Dataflow 스냅샷 사용

Dataflow 스냅샷은 스트리밍 파이프라인의 상태를 저장하므로 상태를 잃지 않고 Dataflow 작업의 새 버전을 시작할 수 있습니다. 이는 백업 및 복구, 업데이트를 스트리밍 파이프라인으로 롤백, 그리고 기타 유사한 시나리오에 유용합니다.

실행 중인 스트리밍 작업의 Dataflow 스냅샷을 만들 수 있습니다. 하지만 스냅샷에서 만드는 모든 새 작업은 스트리밍 엔진을 사용합니다. 이 요구 사항의 부작용은 기존 파이프 라인을보다 효율적이고 확장 가능한 스트리밍 엔진 실행 모델로 이전할 수 있다는 것입니다.

이 가이드에서는 스냅샷을 만들고 스냅샷을 관리하며 스냅샷에서 작업을 만드는 방법을 설명합니다.

시작하기 전에

  1. Google 계정으로 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기 페이지로 이동

  3. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  4. Cloud Dataflow, Compute Engine, Stackdriver Logging, Cloud Storage, Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager API를 사용 설정합니다.

    API 사용 설정

스냅샷 생성

콘솔

  1. Dataflow 모니터링 UI를 엽니다.
    Dataflow 웹 UI로 이동

    Dataflow 작업 목록이 상태와 함께 표시됩니다. 스트리밍 작업이 표시되지 않으면 새 스트리밍 작업을 실행해야 합니다. 스트리밍 작업의 예시는 템플릿 빠른 시작 사용을 참조하세요.

  2. 작업을 선택합니다.
  3. 작업 세부정보 페이지의 메뉴 바에서 스냅샷 만들기를 클릭합니다.
  4. 스냅샷 만들기 대화상자에서 데이터 소스 없음을 선택하여 Dataflow 작업 상태의 스냅샷만 만들거나 데이터 소스 사용을 선택하여 Pub/Sub 소스의 스냅샷과 Dataflow 작업 상태의 스냅샷을 모두 만듭니다.

CLI

스냅샷을 만들려면 create 명령어를 사용합니다.

gcloud alpha dataflow snapshots create \
    --job-id=job-id \
    --snapshot-ttl=duration \
    --snapshot-sources=true \
    --region=region

각 항목의 의미는 다음과 같습니다.

  • job-id는 스트리밍 작업 ID입니다.
  • duration는 스냅샷이 만료되고 스냅샷 목록에서 삭제되기까지 걸리는 시간(일)입니다. snapshot-ttl 플래그는 선택 사항이므로 지정하지 않으면 스냅샷이 7일 후에 만료됩니다. 값을 5d 형식으로 지정합니다. 지정할 수 있는 최대 기간은 30일입니다(30d).
  • snapshot-sources 플래그는 Dataflow 스냅샷과 함께 Pub/Sub 소스를 스냅샷할지 여부를 지정합니다. true이면 Pub/Sub 소스가 자동으로 스냅샷되고 Pub/Sub 스냅샷 ID가 출력 응답에 표시됩니다.
  • region은 작업이 실행되는 위치입니다.

create 명령어를 실행한 후 list 또는 describe 명령어를 실행하여 스냅샷 상태를 확인합니다.

Dataflow 스냅샷을 만들 때 다음 사항이 적용됩니다.

  • 스냅샷은 작업과 동일한 리전에 생성되며 us-central1, europe-west1, europe-west4 또는 asia-northeast1에서 실행되는 작업에만 적용됩니다.
  • 2020년 1월 1일 이후에 작업이 시작되거나 업데이트된 경우에만 비 스트리밍 엔진 작업의 스냅샷을 만들 수 있습니다.
  • Dataflow 스냅샷으로 만든 Pub/Sub 스냅샷은 Pub/Sub 서비스에서 관리됩니다.
  • Pub/Sub 스냅샷은 요금이 청구되고 스냅샷에서 가장 오래된 메시지가 7일 이상 지나면 만료됩니다.
  • 스냅샷 작업 중에 스냅샷이 준비되면 Dataflow 작업이 일시 중지되고 재개됩니다. 필요한 시간은 파이프라인 상태의 크기에 따라 다릅니다. 예를 들어 스트리밍 엔진 작업에서 스냅샷을 만드는 데 필요한 시간은 일반적으로 비 스트리밍 엔진 작업보다 짧습니다.
  • 스냅샷이 진행되는 동안 작업을 취소하면 스냅샷이 취소됩니다.
  • 스냅샷이 진행되는 동안 작업을 업데이트하거나 드레이닝할 수 없습니다. 작업을 업데이트하거나 드레이닝 하려면 먼저 스냅샷 프로세스에서 작업이 재개될 때까지 기다려야 합니다.

스냅샷 UI 사용

스냅샷을 만든 후에는 스냅샷 페이지를 사용하여 프로젝트의 스냅샷을 관리할 수 있습니다.

스냅샷을 클릭하면 스냅샷에 대한 추가 메타데이터와 소스 작업 및 모든 Pub/Sub 스냅샷에 대한 링크를 가져올 수 있는 스냅샷 세부정보 페이지가 열립니다.

스냅샷에 대한 자세한 정보를 볼 수 있는 Dataflow 스냅샷 세부정보 페이지

스냅샷 삭제

콘솔

  1. 스냅샷 또는 스냅샷 세부정보 페이지에서 삭제를 클릭합니다.
  2. 스냅샷 삭제 대화상자에서 삭제를 클릭하여 확인합니다.

CLI

스냅샷을 삭제하려면 delete 명령어를 사용합니다.

gcloud alpha dataflow snapshots delete snapshot-id \
    --region=region

각 항목의 의미는 다음과 같습니다.

  • snapshot-id는 스냅샷 ID입니다.
  • region은 스냅샷의 리전입니다.

스냅샷에서 작업 만들기

스냅샷을 만든 후 이 스냅샷에서 새 작업을 만들어 작업 상태를 복원할 수 있습니다.

콘솔

Cloud Console의 스냅샷에서는 작업을 만들 수 없습니다.

자바

스냅샷에서 새 작업을 만들려면 작업을 시작할 때 --createFromSnapshot
--enableStreamingEngine 플래그를 모두 사용합니다. 예:

mvn -Pdataflow-runner compile exec:java \
    -Dexec.mainClass=org.apache.beam.examples.WordCount \
    -Dexec.args=" --project=project-id \
    --stagingLocation=gs://storage-bucket/staging/ \
    --inputFile=gs://apache-beam-samples/shakespeare/* \
    --output=gs://storage-bucket/output \
    --runner=DataflowRunner"\
    --enableStreamingEngine \
    --createFromSnapshot=snapshot-id \
    --region=region

각 항목의 의미는 다음과 같습니다.

  • project-id는 프로젝트 ID입니다.
  • storage-bucket은 임시 작업 애셋 및 최종 출력에 사용하는 스토리지 버킷입니다.
  • snapshot-id는 새 작업을 만들 스냅샷 ID입니다.
  • region은 작업의 위치입니다.

Python

이 기능은 아직 Python용 Apache Beam SDK에서 지원되지 않습니다.

Dataflow 스냅샷에서 작업을 만들 때 다음 사항이 적용됩니다.

  • 스냅샷에서 생성된 작업은 스냅샷이 저장된 리전과 동일한 리전에서 실행되어야 합니다.
  • Dataflow 스냅샷에 Pub/Sub 소스의 스냅샷이 포함된 경우, Dataflow 스냅샷에서 생성된 작업은 해당 Pub / Sub 스냅샷을 소스로 자동 탐색(https://cloud.google.com/pubsub/docs/replay-overview)합니다. Dataflow 스냅샷에서 작업을 만들 때 소스 작업에서 사용하는 것과 동일한 Pub/Sub 주제를 지정해야 합니다.

  • 소스 작업이 Pub/Sub 소스를 사용하고 Dataflow 스냅샷이 Pub/Sub 소스의 스냅샷 없이 생성된 경우, 해당 Dataflow 스냅샷에서 작업을 만들 때 Pub/Sub 주제를 지정해야 합니다.

  • 스냅샷에서 생성된 새 작업에는 여전히 업데이트 호환성 검사가 적용됩니다.

제한 사항

Dataflow 스냅샷에는 다음 제한사항이 적용됩니다.

  • 템플릿 또는 Dataflow SQL 편집기를 사용하여 스냅샷에서 작업을 만들 수 없습니다.
  • 스냅샷 만료 기간은 gcloud 도구를 통해서만 설정할 수 있습니다.
  • 현재 Dataflow 스냅샷은 Pub/Sub 소스 스냅샷만 지원합니다.
  • 현재 싱크 스냅샷은 지원되지 않습니다. 예를 들어 Dataflow 스냅샷을 만들 때는 BigQuery 스냅샷을 만들 수 없습니다.
  • 각 프로젝트는 리전당 준비되거나 실행 중인 스냅샷 10개만 허용됩니다. 이 한도를 초과하는 추가 스냅샷을 만들려고 시도하면 오류가 발생합니다.