다음을 통해 공유


상태 저장 쿼리에 대한 비동기 상태 검사점

참고 항목

Databricks Runtime 10.4 LTS 이상에서 지원됩니다.

비동기 상태 검사점은 스트리밍 쿼리에 대해 정확히 한 번 보장을 유지하지만 상태 업데이트에서 병목 현상이 발생하는 일부 구조적 스트리밍 상태 저장 워크로드에 대한 전체 대기 시간을 줄일 수 있습니다. 이 작업은 상태 검사점이 완료될 때까지 기다리지 않고 이전 마이크로 일괄 처리의 계산이 완료되는 즉시 다음 마이크로 일괄 처리를 처리하기 시작하여 수행됩니다. 다음 table에서는 동기 및 비동기 체크포인팅의 장단점을 비교합니다.

특성 동기 검사점 비동기 검사점
대기 시간 각 마이크로 일괄 처리에 대한 대기 시간이 더 깁니다. 마이크로 일괄 처리가 겹칠 수 있으므로 대기 시간이 줄어듭니다.
다시 시작 마지막 일괄 처리로만 빠른 복구를 다시 실행해야 합니다. 마이크로 일괄 처리보다 더 높은 다시 시작 지연이 다시 실행되어야 할 수 있습니다.

다음은 비동기 상태 검사점 설정의 이점을 얻을 수 있는 스트리밍 작업 특성입니다.

  • 작업에 상태 저장 작업(예: 집계, flatMapGroupsWithState, mapGroupsWithState, 스트림-스트림 조인)이 하나 이상 있습니다.
  • 상태 검사점 대기 시간이 전체 일괄 처리 실행 대기 시간의 주요 원인 중 하나입니다. 이 정보는 StreamingQueryProgress 이벤트에서 찾을 수 있습니다. Spark 드라이버의 log4j 로그에도 해당 이벤트가 포함되어 있습니다. 다음은 상태 검사점이 전체 일괄 처리 실행 대기 시간에 미치는 영향을 찾는 방법과 스트리밍 쿼리 진행률의 예제입니다.
    • {
         "id" : "2e3495a2-de2c-4a6a-9a8e-f6d4c4796f19",
         "runId" : "e36e9d7e-d2b1-4a43-b0b3-e875e767e1fe",
         "...",
         "batchId" : 0,
         "durationMs" : {
           "...",
           "triggerExecution" : 547730,
           "..."
         },
         "stateOperators" : [ {
           "...",
           "commitTimeMs" : 3186626,
           "numShufflePartitions" : 64,
           "..."
         }]
      }
      
    • 위 쿼리 진행률 이벤트의 상태 검사점 대기 시간 분석

      • 일괄 처리 기간(durationMs.triggerDuration)은 약 547초입니다.
      • 상태 저장소 커밋 대기 시간(stateOperations[0].commitTimeMs)은 약 3,186초입니다. 커밋 대기 시간은 상태 저장소를 포함하는 작업에서 집계됩니다. 이 경우 해당 작업(stateOperators[0].numShufflePartitions)은 64개입니다.
      • 상태 연산자를 포함하는 각 작업의 검사점에 평균 50초(3,186/64)가 소요되었습니다. 일괄 처리 기간에 영향을 미친 추가 대기 시간입니다. 64개 작업이 모두 동시에 실행된다고 가정할 때 검사점 단계는 일괄 처리 기간의 약 9%(50초/547초)를 차지했습니다. 최대 동시 작업이 64개보다 작으면 백분율이 더 높아집니다.

비동기 상태 검사점 지정 사용

비동기 상태 검사점에는 RocksDB 기반 상태 저장소를 사용해야 합니다. Set 다음 구성을.


spark.conf.set(
  "spark.databricks.streaming.statefulOperator.asyncCheckpoint.enabled",
  "true"
)

spark.conf.set(
  "spark.sql.streaming.stateStore.providerClass",
  "com.databricks.sql.streaming.state.RocksDBStateStoreProvider"
)

비동기 검사점 설정의 제한 사항 및 요구 사항

참고 항목

구조화된 스트리밍 워크로드의 경우 컴퓨팅 자동 크기 조정에는 클러스터 크기를 스케일 다운하는 데 제한이 있습니다. Databricks는 스트리밍 워크로드에 대해 향상된 자동 크기 조정과 함께 Delta Live Tables 사용하는 것이 좋습니다. Delta Live Tables 파이프라인의 클러스터 사용률 Optimize을 향상된 자동 크기 조정과 함께 확인하세요.

  • 하나 이상 저장소의 비동기 검사점에서 오류가 발생하면 쿼리가 실패합니다. 동기 검사점 지정 모드에서는 검사점이 작업의 일부로 실행되며, 쿼리가 실패하기 전에 Spark에서 작업을 여러 번 다시 시도합니다. 비동기 상태 검사점 지정에서는 이 메커니즘이 없습니다. Databricks는 작업 실패에 대한 자동 재시도에 연속 작업을 사용하는 것이 좋습니다. 연속 실행 작업을 참조하세요.
  • 비동기 검사점 설정은 마이크로 일괄 처리 실행 간에 상태 저장소 위치가 변경되지 않을 때 가장 잘 작동합니다. 클러스터 크기 조정은 비동기 상태 검사점과 함께 작동하지 않을 수 있습니다. 클러스터 크기 조정 이벤트의 일부로 노드가 추가되거나 삭제될 때 상태 저장소 인스턴스가 다시 배포되지 get 수 있기 때문입니다.
  • 비동기 상태 검사점 지정은 RocksDB 상태 저장소 공급자 구현에서만 지원됩니다. 기본 메모리 내 상태 저장소 구현에서는 지원되지 않습니다.