데이터 샘플링을 사용하면 Dataflow 파이프라인의 각 단계에서 데이터를 관찰할 수 있습니다. 이 정보는 실행 중이거나 완료된 작업의 실제 입력과 출력을 보여주므로 파이프라인 문제를 디버깅하는 데 도움이 될 수 있습니다.
데이터 샘플링 용도에는 다음이 포함됩니다.
개발 중에 파이프라인 전체에서 생성되는 요소를 확인합니다.
파이프라인에서 예외가 발생하면 해당 예외와 관련된 요소를 확인합니다.
디버깅할 때 변환의 출력을 확인하여 출력이 올바른지 확인합니다.
파이프라인 코드를 조사하지 않고도 파이프라인의 동작을 이해합니다.
나중에 작업이 끝난 후 샘플링된 요소를 확인하거나 샘플링된 데이터를 이전 실행과 비교합니다.
개요
Dataflow는 다음과 같은 방법으로 파이프라인 데이터를 샘플링할 수 있습니다.
주기적 샘플링. 이 유형의 샘플링에서 Dataflow는 작업이 실행될 때 샘플을 수집합니다. 샘플링된 데이터를 사용하여 파이프라인이 예상대로 요소를 처리하는지 확인하고 핫 키 또는 잘못된 출력과 같은 런타임 문제를 진단할 수 있습니다. 자세한 내용은 이 문서의 주기적인 데이터 샘플링 사용을 참조하세요.
예외 샘플링. 이 유형의 샘플링에서 Dataflow는 파이프라인에서 예외가 발생하는 경우 샘플을 수집합니다. 샘플을 사용하면 예외가 발생할 때 처리 중인 데이터를 볼 수 있습니다. 예외 샘플링은 기본적으로 사용 설정되며 사용 중지할 수 있습니다. 자세한 내용은 이 문서의 예외 샘플링 사용을 참조하세요.
Dataflow는 샘플링된 요소를 temp_location
파이프라인 옵션으로 지정된 Cloud Storage 경로에 씁니다. Google Cloud 콘솔에서 샘플링된 데이터를 보거나 Cloud Storage에서 원시 데이터 파일을 조사할 수 있습니다. 파일은 삭제될 때까지 Cloud Storage에 유지됩니다.
Dataflow 작업자가 데이터 샘플링을 실행합니다. 샘플링은 최선의 방식으로 실행됩니다. 일시적인 오류가 발생하면 샘플이 누락될 수 있습니다.
요구사항
데이터 샘플링을 사용하려면 Runner v2를 사용 설정해야 합니다. 자세한 내용은 Dataflow Runner v2 사용 설정을 참조하세요.
Google Cloud 콘솔에서 샘플링된 데이터를 보려면 다음 Identity and Access Management 권한이 필요합니다.
storage.buckets.get
storage.objects.get
storage.objects.list
정기적 샘플링을 사용하려면 다음 Apache Beam SDK가 필요합니다.
- Apache Beam Java SDK 2.47.0 이상
- Apache Beam Python SDK 2.46.0 이상
- Apache Beam Go SDK 2.53.0 이상
예외 샘플링에는 다음 Apache Beam SDK가 필요합니다.
- Apache Beam Java SDK 2.51.0 이상
- Apache Beam Python SDK 2.51.0 이상
- Apache Beam Go SDK는 예외 샘플링을 지원하지 않습니다.
이러한 SDK부터 Dataflow는 기본적으로 모든 작업에 예외 샘플링을 사용 설정합니다.
주기적 데이터 샘플링 사용
이 섹션에서는 작업이 실행될 때 파이프라인 데이터를 지속적으로 샘플링하는 방법을 설명합니다.
주기적 데이터 샘플링 사용 설정
주기적 샘플링은 기본적으로 사용 중지되어 있습니다. 이를 사용 설정하려면 다음 파이프라인 옵션을 설정합니다.
자바
--experiments=enable_data_sampling
Python
--experiments=enable_data_sampling
Go
--experiments=enable_data_sampling
프로그래매틱 방식 또는 명령줄을 사용하여 옵션을 설정할 수 있습니다. 자세한 내용은 실험용 파이프라인 옵션 설정을 참조하세요.
Dataflow 템플릿을 실행할 때 additional-experiments
플래그를 사용하여 데이터 샘플링을 사용 설정합니다.
--additional-experiments=enable_data_sampling
주기적 샘플링이 사용 설정된 경우 Dataflow가 작업 그래프의 각 PCollection
에서 샘플을 수집합니다. 샘플링 레이트는 대략 30초마다 1개의 샘플입니다.
데이터 볼륨에 따라서는 주기적 데이터 샘플링으로 인해 상당한 성능 오버헤드가 추가될 수 있습니다. 따라서 테스트 중에만 주기적 샘플링을 사용 설정하고 프로덕션 워크로드에서는 사용 중지하는 것이 좋습니다.
샘플 데이터 보기
Google Cloud 콘솔에서 샘플링된 데이터를 보려면 다음 단계를 수행합니다.
Google Cloud 콘솔에서 Dataflow 작업 페이지로 이동합니다.
작업을 선택합니다.
하단 패널의 keyboard_capslock을 클릭하여 로그 패널을 확장하세요.
데이터 샘플링 탭을 클릭합니다.
단계 필드에서 파이프라인 단계를 선택합니다. 작업 그래프에서 단계를 선택할 수도 있습니다.
컬렉션 필드에서
PCollection
을 선택합니다.
해당 PCollection
에 대해 Dataflow에서 샘플을 수집한 경우 샘플링된 데이터가 탭에 표시됩니다. 탭에 각 샘플의 생성일과 출력 요소가 표시됩니다. 출력 요소는 컬렉션 요소의 직렬화된 표현이며 요소 데이터, 타임스탬프, 기간 및 창 정보를 포함합니다.
다음 예시에서는 샘플링된 요소를 보여줍니다.
Java
TimestampedValueInGlobalWindow{value=KV{way, [21]},
timestamp=294247-01-09T04:00:54.775Z, pane=PaneInfo{isFirst=true, isLast=true,
timing=ON_TIME, index=0, onTimeIndex=0}}
Python
(('THE', 1), MIN_TIMESTAMP, (GloblWindow,), PaneInfo(first: True, last: True,
timing: UNKNOWN, index: 0, nonspeculative_index: 0))
Go
KV<THE,1> [@1708122738999:[[*]]:{3 true true 0 0}]
다음 이미지는 샘플링된 데이터가 Google Cloud 콘솔에 표시되는 모습입니다.
예외 샘플링 사용
파이프라인에서 처리되지 않은 예외가 발생하면 해당 예외와 상관 관계가 있는 입력 요소 및 예외를 모두 볼 수 있습니다. 예외 샘플링은 지원되는 Apache Beam SDK를 사용할 때 기본적으로 사용 설정됩니다.
예외사항 보기
예외사항을 보려면 다음 단계를 수행합니다.
Google Cloud 콘솔에서 Dataflow 작업 페이지로 이동합니다.
작업을 선택합니다.
로그 패널을 확장하려면 로그 패널에서 keyboard_capslock 패널 전환을 클릭합니다.
데이터 샘플링 탭을 클릭합니다.
단계 필드에서 파이프라인 단계를 선택합니다. 작업 그래프에서 단계를 선택할 수도 있습니다.
컬렉션 필드에서
PCollection
을 선택합니다.예외 열에 예외 세부정보가 포함됩니다. 예외에는 출력 요소가 없습니다. 대신 출력 요소 열에
Failed to process input element: INPUT_ELEMENT
메시지가 포함됩니다. 여기서 INPUT_ELEMENT는 상관관계인 입력 요소입니다.새 창에서 입력 샘플과 예외 세부정보를 보려면
새로 열기를 클릭합니다.
다음 이미지는 Google Cloud 콘솔에서 예외가 표시되는 방식을 보여줍니다.
예외 샘플링 사용 중지
예외 샘플링을 사용 중지하려면 다음 파이프라인 옵션을 설정합니다.
자바
--experiments=disable_always_on_exception_sampling
Python
--experiments=disable_always_on_exception_sampling
프로그래매틱 방식 또는 명령줄을 사용하여 옵션을 설정할 수 있습니다. 자세한 내용은 실험용 파이프라인 옵션 설정을 참조하세요.
Dataflow 템플릿을 실행할 때 additional-experiments
플래그를 사용하여 예외 샘플링을 사용 중지합니다.
--additional-experiments=disable_always_on_exception_sampling
보안 고려사항
Dataflow는 샘플링된 데이터를 사용자가 만들고 관리하는 Cloud Storage 버킷에 기록합니다. Cloud Storage의 보안 기능을 사용하여 데이터의 보안을 강화하세요. 특히 다음과 같은 추가 보안 조치를 고려하세요.
- 고객 관리 암호화 키(CMEK)를 사용하여 Cloud Storage 버킷을 암호화합니다. 암호화 옵션 선택에 대한 자세한 내용은 니즈에 맞는 암호화 선택을 참조하세요.
- 데이터 파일이 일정 기간 후에 자동으로 삭제되도록 Cloud Storage 버킷에 TTL(수명)을 설정합니다. 자세한 내용은 버킷의 수명 주기 구성 설정을 참조하세요.
- Cloud Storage 버킷에 IAM 권한을 할당할 때 최소 권한의 원칙을 사용합니다.
샘플링된 데이터에 원시 값이 표시되지 않도록 PCollection
데이터 유형의 개별 필드를 난독화할 수도 있습니다.
- Python:
__repr__
또는__str__
메서드를 재정의합니다. - Java:
toString
메서드를 재정의합니다.
그러나 I/O 커넥터의 입력과 출력을 난독화하려면 커넥터 소스 코드를 수정해야 합니다.
청구
Dataflow가 데이터 샘플링을 수행하면 Cloud Storage 데이터 스토리지 및 Cloud Storage에서 읽기 및 쓰기 작업에 대한 요금이 청구됩니다. 자세한 내용은 Cloud Storage 가격 책정을 참조하세요.
각 Dataflow 작업자는 샘플을 일괄 기록하며 배치당 하나의 읽기 및 쓰기 작업이 발생합니다.
문제 해결
이 섹션에는 데이터 샘플링을 사용할 때 발생하는 일반적인 문제에 대한 정보가 포함되어 있습니다.
권한 오류
샘플을 볼 권한이 없으면 Google Cloud 콘솔에 다음 오류가 표시됩니다.
You don't have permission to view a data sample.
이 오류를 해결하려면 필요한 IAM 권한이 있는지 확인합니다. 오류가 계속 발생하면 IAM 거부 정책이 적용되는 상황일 수 있습니다.
샘플이 표시되지 않음
샘플이 표시되지 않으면 다음 사항을 확인하세요.
enable_data_sampling
옵션을 설정하여 데이터 샘플링을 사용 설정했는지 확인합니다. 데이터 샘플링 사용 설정을 참조하세요.- Runner v2를 사용 중인지 확인합니다.
- 작업자가 시작되었는지 확인합니다. 작업자가 시작되어야 샘플링이 시작됩니다.
- 작업과 작업자가 정상 상태인지 확인합니다.
- 프로젝트의 Cloud Storage 할당량을 다시 확인합니다. Cloud Storage 할당량 한도를 초과하면 Dataflow가 샘플 데이터를 쓸 수 없습니다.
- 데이터 샘플링은 반복 가능 항목에서 샘플링할 수 없습니다. 이러한 유형의 스트림의 샘플은 제공되지 않습니다.