워크플로 예약 및 오케스트레이션

Databricks 워크플로는 Azure Databricks에서 데이터 처리 태스크를 예약하고 오케스트레이션할 수 있는 도구 컬렉션을 제공합니다. Databricks 워크플로를 사용하여 Databricks 작업을 구성합니다.

이 문서에서는 Databricks 작업을 사용한 프로덕션 워크로드 관리와 관련된 개념을 소개합니다.

참고 항목

Delta Live Tables는 데이터 처리 파이프라인을 만들기 위한 선언적 구문을 제공합니다. Delta Live Tables이란?.

Databricks 작업이란?

Databricks 작업을 사용하면 지정된 일정에 따라 지정된 컴퓨팅 환경에서 실행되도록 태스크를 구성할 수 있습니다. Delta Live Tables 파이프라인과 함께 작업은 Azure Databricks에서 데이터 처리 및 ML 논리를 프로덕션에 배포하는 데 사용되는 기본 도구입니다.

작업은 Databricks Notebook을 실행하는 단일 태스크에서 조건부 논리 및 종속성을 사용하여 실행되는 수천 개의 태스크에 이르기까지 복잡성이 달라질 수 있습니다.

작업을 구성하고 실행하는 방법

작업 UI, Databricks CLI를 사용하거나 작업 API를 호출하여 작업을 만들고 실행할 수 있습니다. UI 또는 API를 사용하여 실패하거나 취소된 작업을 복구하고 다시 실행할 수 있습니다. UI, CLI, API 및 알림(예: 이메일, 웹후크 대상 또는 Slack 알림)을 사용하여 작업 실행 결과를 모니터링할 수 있습니다.

Databricks CLI 사용에 대한 자세한 내용은 Databricks CLI란?을 참조하세요. 작업 API 사용에 대한 자세한 내용은 작업 API를 참조하세요.

작업에 필요한 최소 구성은 무엇인가요?

Azure Databricks의 모든 작업에는 다음이 필요합니다.

  • 실행할 논리를 포함하는 소스 코드.
  • 논리를 실행할 컴퓨팅 리소스. 컴퓨팅 리소스는 서버리스 컴퓨팅, 클래식 작업 컴퓨팅 또는 다목적 컴퓨팅일 수 있습니다. 작업과 함께 Azure Databricks 컴퓨팅 사용을 참조하세요.
  • 작업을 실행해야 하는 경우 또는 수동 트리거에 대해 지정된 일정.
  • 고유한 이름

참고 항목

Databricks Notebooks에서 코드를 개발하는 경우 예약 단추를 사용하여 해당 Notebook을 작업으로 구성할 수 있습니다. 예약된 Notebook 작업 만들기 및 관리를 참조하세요.

태스크란?

태스크는 작업의 논리 단위를 나타냅니다. 태스크는 복잡성 범위가 다양하며 다음을 포함할 수 있습니다.

  • Notebook
  • A JAR
  • SQL 쿼리
  • A DLT 파이프라인
  • 다른 작업
  • 제어 흐름 태스크

태스크 간의 종속성을 지정하여 태스크의 실행 순서를 제어할 수 있습니다. 태스크를 순서대로 또는 병렬로 실행하도록 구성할 수 있습니다.

작업은 태스크의 상태 정보 및 메타데이터와 상호 작용하지만 태스크 범위는 격리됩니다. 태스크 값을 사용하여 예약된 태스크 간에 컨텍스트를 공유할 수 있습니다. Azure Databricks 작업의 작업 간 정보 공유를 참조하세요.

작업에 사용할 수 있는 제어 흐름 옵션은 무엇인가요?

작업 내에서 작업 및 태스크를 구성할 때 전체 작업 및 개별 태스크가 실행되는 방식을 제어하는 설정을 사용자 지정할 수 있습니다.

트리거 유형

작업을 구성할 때 트리거 유형을 지정해야 합니다. 다음과 같은 트리거 유형 중에서 선택할 수 있습니다.

작업을 수동으로 트리거하도록 선택할 수도 있지만, 주로 다음과 같은 특정 사용 사례에 대해 예약되어 있습니다.

  • REST API 호출을 사용하여 작업을 트리거하기 위해 외부 오케스트레이션 도구를 사용합니다.
  • 데이터 품질 문제를 확인하거나 해결하기 위해 휴먼 인 더 루프(human-in-the-loop)가 필요한 경우는 거의 실행하지 않는 작업이 있습니다.
  • 마이그레이션과 같이 한 번 또는 몇 번만 실행해야 하는 워크로드를 실행하고 있습니다.

새 파일이 도착하면 작업 트리거를 참조하세요.

재시도

다시 시도는 오류 메시지와 함께 작업이 실패할 경우 특정 작업 또는 태스크를 다시 실행해야 하는 횟수를 지정합니다. 오류는 일시적인 경우가 많고 다시 시작을 통해 해결되며, 구조적 스트리밍을 사용한 스키마 진화와 같은 Azure Databricks의 일부 기능은 환경을 재설정하고 워크플로를 계속 진행하기 위해 다시 시도로 작업을 실행한다고 가정합니다.

다시 시도 구성 옵션은 지원되는 컨텍스트에 대한 UI에 나타납니다. 여기에는 다음이 포함됩니다.

  • 전체 작업에 대한 다시 시도를 지정할 수 있습니다. 즉, 태스크가 실패하면 전체 작업이 다시 시작됩니다.
  • 태스크에 대한 다시 시도를 지정할 수 있습니다. 이 경우 오류가 발생할 때 지정된 횟수까지 태스크가 다시 시작됩니다.

연속 트리거 모드에서 실행하는 경우 Databricks는 지수 백오프를 사용하여 자동으로 다시 시도합니다. 연속 작업에 대한 오류 처리 방법을 참조하세요.

조건부 태스크인 경우 실행

실행 조건 태스크 유형을 사용하여 다른 태스크의 결과에 따라 이후 태스크에 대한 조건을 지정할 수 있습니다. 작업에 태스크를 추가하고 업스트림 종속 태스크를 지정합니다. 이러한 태스크의 상태에 따라 실행할 하나 이상의 다운스트림 태스크를 구성할 수 있습니다. 작업은 다음 종속성을 지원합니다.

  • 모두 성공함
  • 최소 한 번 성공함
  • 실패 없음
  • 모두 완료됨
  • 한 번 이상 실패함
  • 모두 실패함

Azure Databricks 작업에서 조건부로 태스크 실행을 참조하세요.

If/else 조건부 태스크

If/else 태스크 유형을 사용하여 일부 값을 기반으로 조건을 지정할 수 있습니다. If/else 조건 태스크를 사용하여 작업에 분기 논리 추가를 참조하세요.

작업은 논리 내에서 정의하고 태스크에서 작업 환경으로 일부 계산 또는 상태의 결과를 반환할 수 있도록 지원하는 taskValues를 지원합니다. taskValues, 작업 매개 변수 또는 동적 값에 대해 If/else 조건을 정의할 수 있습니다.

Azure Databricks는 조건부에 대해 다음 피연산자를 지원합니다.

  • ==
  • !=
  • >
  • >=
  • <
  • <=

다음을 참조하세요.

각 태스크의 경우

For each 태스크를 통해 다른 태스크를 루프에서 실행하여 태스크의 각 반복에 다른 매개 변수 집합을 전달합니다.

작업에 For each 태스크를 추가하려면 For each 태스크와 중첩된 태스크라는 두 가지 태스크를 정의해야 합니다. 중첩된 태스크는 For each 태스크의 각 반복에 대해 실행할 태스크이며 표준 Azure Databricks 작업 태스크 유형 중 하나입니다. 중첩된 태스크에 매개 변수를 전달하기 위해 여러 메서드가 지원됩니다.

루프에서 매개 변수화 Azure Databricks 작업 태스크 실행을 참조하세요.

기간 임계값

지정된 기간을 초과하는 경우 경고를 보내거나 태스크 또는 작업을 중지하도록 기간 임계값을 지정할 수 있습니다. 이 설정을 구성하려는 경우의 예는 다음과 같습니다.

  • 중단 상태에 갇히기 쉬운 태스크가 있습니다.
  • 워크플로에 대한 SLA를 초과하는 경우 엔지니어에게 경고해야 합니다.
  • 예기치 않은 비용을 방지하기 위해 대규모 클러스터로 구성된 작업을 실패하려고 합니다.

동시성

대부분의 작업은 1개의 동시 작업의 기본 동시성으로 구성됩니다. 즉, 새 작업이 트리거될 때까지 이전 작업 실행이 완료되지 않은 경우 다음 작업 실행을 건너뜁니다.

동시성을 높이기 위한 몇 가지 사용 사례가 있지만 대부분의 워크로드에서는 이 설정을 변경할 필요가 없습니다.

동시성 구성에 대한 자세한 내용은 최대 동시 실행 구성을 참조하세요.

작업을 모니터링하는 방법

작업 또는 태스크가 시작, 완료 또는 실패할 때 알림을 받을 수 있습니다. 하나 이상의 이메일 주소 또는 시스템 대상으로 알림을 보낼 수 있습니다. 작업 이벤트에 대한 이메일 및 시스템 알림 추가를 참조하세요.

시스템 테이블에는 계정의 작업 활동과 관련된 레코드를 볼 수 있는 lakeflow 스키마가 포함되어 있습니다. 작업 시스템 테이블 참조를 참조하세요.

작업 시스템 테이블을 청구 테이블과 조인하여 계정 전체에서 작업 비용을 모니터링할 수도 있습니다. 시스템 테이블을 사용하여 작업 비용 모니터링을 참조하세요.

제한 사항

다음 제한 사항이 존재합니다.

  • 작업 영역은 1000개의 동시 태스크 실행으로 제한됩니다. 즉시 시작할 수 없는 실행을 요청하면 429 Too Many Requests 응답이 반환됩니다.
  • 작업 영역에서 한 시간 내에 만들 수 있는 작업 수는 10000개로 제한됩니다("실행 제출" 포함). 이 제한은 REST API 및 Notebook 워크플로에 의해 만들어진 작업에도 영향을 줍니다.
  • 작업 영역에는 최대 12000개의 저장된 작업이 포함될 수 있습니다.
  • 작업에는 최대 100개의 태스크가 포함될 수 있습니다.

프로그래밍 방식으로 워크플로를 관리할 수 있나요?

Databricks는 다음을 포함하여 워크플로를 프로그래밍 방식으로 예약하고 오케스트레이션할 수 있는 도구와 API를 제공합니다.

개발자 도구에 대한 자세한 내용은 개발자 도구 및 지침을 참조하세요.

Apache AirFlow를 사용한 워크플로 오케스트레이션

Apache Airflow를 사용하여 데이터 워크플로를 관리하고 예약할 수 있습니다. Airflow를 사용하면 Python 파일에서 워크플로를 정의하고 Airflow는 워크플로 예약 및 실행을 관리합니다. Apache Airflow를 사용한 Azure Databricks 작업 오케스트레이션을 참조하세요.

Azure Data Factory를 사용한 워크플로 오케스트레이션

ADF(Azure Data Factory)는 데이터 스토리지, 이동 및 처리 서비스를 자동화된 데이터 파이프라인으로 구성할 수 있는 클라우드 데이터 통합 서비스입니다. ADF를 사용하여 ADF 파이프라인의 일부로 Azure Databricks 작업을 오케스트레이션할 수 있습니다.

ADF에서 Azure Databricks에 인증하는 방법을 포함하여 ADF 웹 활동을 사용하여 작업을 실행하는 방법을 알아보려면 Azure Data Factory에서 Azure Databricks 작업 오케스트레이션 활용을 참조하세요.

또한 ADF는 ADF 파이프라인에서 JAR로 패키지된 Databricks Notebooks, Python 스크립트 또는 코드를 실행하는 기본 제공 지원을 제공합니다.

ADF 파이프라인에서 Databricks Notebook을 실행하는 방법을 알아보려면 Azure Data Factory에서 Databricks Notebook 활동으로 Databricks Notebook 실행을 참조한 다음, Databricks Notebook을 실행하여 데이터 변환을 참조하세요.

ADF 파이프라인에서 Python 스크립트를 실행하는 방법을 알아보려면 Azure Databricks에서 Python 작업을 실행하여 데이터 변환을 참조하세요.

ADF 파이프라인의 JAR에 패키지된 코드를 실행하는 방법을 알아보려면 Azure Databricks에서 JAR 작업을 실행하여 데이터 변환을 참조하세요.