Databricks의 오케스트레이션 개요
Azure Databricks는 더 큰 워크플로의 일부로 여러 작업을 조정하고 실행할 수 있도록 데이터 처리 워크로드를 오케스트레이션하기 위한 기본 제공 환경을 제공합니다. 복잡한 워크플로를 쉽게 관리할 수 있도록 반복 가능한 빈번한 작업의 실행을 간소화, 최적화 및 예약할 수 있습니다.
이 문서에서는 Databricks 작업을 사용하여 프로덕션 워크로드를 관리하는 데 관련된 개념과 선택 사항을 소개합니다.
직업이란?
Databricks에서 작업은 워크플로내에서 작업을 예약하고 오케스트레이션하는 데 사용됩니다. 일반적인 데이터 처리 워크플로에는 ETL 워크플로, Notebook 실행 및 ML(기계 학습) 워크플로뿐만 아니라 dbt 및 ADF(Azure Data Factory)와 같은 외부 시스템과 통합하는 것이 포함됩니다.
작업은 하나 이상의 태스크로 구성되며, 시각적 작성 UI를 사용하여 분기(if/else 문) 또는 반복(각 문에 대한)과 같은 사용자 지정 제어 흐름 논리를 지원합니다. 태스크는 ETL 워크플로에서 데이터를 로드하거나 변환하거나, 기계 학습 파이프라인의 일부로 제어되고 반복 가능한 방식으로 ML 모델을 빌드, 학습 및 배포할 수 있습니다.
예: 일일 데이터 처리 및 유효성 검사 작업
아래 예제에서는 Azure Databricks의 작업을 보여 줍니다.
이 예제 작업에는 다음과 같은 특성이 있습니다.
- 첫 번째 작업은 수익 데이터를 수집합니다.
- 두 번째 작업은 if/else에서 null을 확인하는 작업입니다.
- 그렇지 않은 경우 변환 작업이 실행됩니다.
- 그렇지 않으면 노트북 작업을 데이터 품질 검사를 동반하여 실행합니다.
- 매일 오전 11시 29분에 실행될 예정입니다.
고유한 작업 만들기에 대한 빠른 소개를 보려면 Azure Databricks 작업사용하여 첫 번째 워크플로 만들기를 참조하세요.
일반적인 사용 사례
기본 데이터 엔지니어링 원칙에서 고급 기계 학습 및 원활한 도구 통합에 이르기까지 이러한 일반적인 사용 사례는 최신 분석, 워크플로 자동화 및 인프라 확장성을 구동하는 다양한 기능을 보여줍니다.
오케스트레이션 개념
Azure Databricks에서 오케스트레이션을 사용할 때는 작업, 작업 및 트리거라는 세 가지 주요 개념이 있습니다.
작업 - 작업은 작업을 조정, 예약 및 실행하기 위한 기본 리소스입니다. 작업은 Azure Databricks Notebook을 실행하는 단일 작업에서 조건부 논리 및 종속성이 있는 수백 개의 작업에 이르기까지 복잡성이 달라질 수 있습니다. 작업은 DAG(방향성 비순환 그래프)로 시각적으로 표시됩니다. 다음을 포함하여 작업에 대한 속성을 지정할 수 있습니다.
- 트리거 - 작업을 실행할 시기를 정의합니다.
- 매개 변수 - 작업 내의 작업에 자동으로 푸시되는 런타임 매개 변수입니다.
- 알림 - 작업이 실패하거나 너무 오래 걸릴 때 보낼 이메일 또는 웹후크입니다.
- Git - 작업 작업에 대한 소스 제어 설정입니다.
작업 - 작업은 작업 내의 특정 작업 단위입니다. 각 태스크는 다음을 비롯한 다양한 작업을 수행할 수 있습니다.
- Notebook 작업은 Databricks 노트북을 실행합니다. Notebook의 경로와 필요한 매개 변수를 지정합니다.
- 파이프라인 태스크는 파이프라인을 실행합니다. 구체화된 뷰 또는 스트리밍 테이블과 같은 기존 DLT 파이프라인을 지정할 수 있습니다.
- Python 스크립트 작업은 Python 파일을 실행합니다. 파일의 경로와 필요한 매개 변수를 제공합니다.
많은 유형의 작업이 있습니다. 전체 목록은 작업 유형참조하세요. 태스크는 다른 작업에 대한 종속성을 가질 수 있으며, 조건부로 다른 작업을 실행하여 조건부 논리 및 종속성을 사용하여 복잡한 워크플로를 만들 수 있습니다.
트리거 - 트리거는 특정 조건 또는 이벤트에 따라 작업을 실행하기 시작하는 메커니즘입니다. 트리거는 예약된 시간에 작업 실행(예: 오전 2시에 작업 실행) 또는 새 데이터가 클라우드 스토리지에 도착할 때 작업 실행과 같은 이벤트 기반일 수 있습니다.
모니터링 및 관찰성
작업은 모니터링 및 관찰성을 기본적으로 지원합니다. 다음 항목에서는 이 지원에 대한 개요를 제공합니다. 작업 및 오케스트레이션 모니터링에 대한 자세한 내용은 databricks 작업 대한모니터링 및 관찰을 참조하세요.
UI 작업 모니터링 및 관찰 가능성 - Azure Databricks UI에서 작업 소유자 및 마지막 실행의 결과와 같은 세부 정보를 포함하여 작업을 보고 작업 속성을 기준으로 필터링할 수 있습니다. 작업 실행 기록을 보고 작업의 각 작업에 대한 자세한 정보를 가져올 수 있습니다.
작업 실행 상태 및 메트릭 - Databricks는 작업 실행 성공을 보고하고, 작업 실행 내의 각 태스크에 대한 로그 및 메트릭을 보고하여 문제를 진단하고 성능을 이해합니다.
알림 및 경고 - 이메일, Slack, 사용자 지정 웹후크 및 기타 다양한 옵션을 통해 작업 이벤트에 대한 알림을 설정할 수 있습니다.
시스템 테이블을 통한 사용자 지정 쿼리 - Azure Databricks는 계정 전체에서 작업 실행 및 작업을 기록하는 시스템 테이블을 제공합니다. 이러한 테이블을 사용하여 작업 성능 및 비용을 쿼리하고 분석할 수 있습니다. 작업 메트릭 및 추세를 시각화하는 대시보드를 만들어 워크플로의 상태 및 성능을 모니터링할 수 있습니다.
제한 사항
다음 제한 사항이 존재합니다.
- 작업 영역은 2000개의 동시 태스크 실행으로 제한됩니다. 즉시 시작할 수 없는 실행을 요청하면
429 Too Many Requests
응답이 반환됩니다. - 작업 영역에서 한 시간 내에 만들 수 있는 작업 수는 10000개로 제한됩니다("실행 제출" 포함). 이 제한은 REST API 및 Notebook 워크플로에 의해 만들어진 작업에도 영향을 줍니다.
- 작업 영역에는 최대 12000개의 저장된 작업이 포함될 수 있습니다.
- 작업에는 최대 100개의 태스크가 포함될 수 있습니다.
프로그래밍 방식으로 워크플로를 관리할 수 있나요?
Databricks는 다음을 포함하여 워크플로를 프로그래밍 방식으로 예약하고 오케스트레이션할 수 있는 도구와 API를 보유합니다.
도구 및 API를 사용하여 작업을 만들고 관리하는 예제는 작업 만들기 및 관리자동화를 참조하세요. 사용 가능한 모든 개발자 도구에 대한 설명서는 로컬 개발 도구참조하세요.
외부 도구는 Databricks 도구 및 API를 사용하여 프로그래밍 방식으로 워크플로를 예약합니다. Azure Data Factory 또는 Apache AirFlow와 같은 도구를 사용하여 작업을 예약할 수 있습니다.
Apache AirFlow를 사용한 워크플로 오케스트레이션
Apache Airflow를 사용하여 데이터 워크플로를 관리하고 예약할 수 있습니다. Airflow를 사용하면 Python 파일에서 워크플로를 정의하고 Airflow는 워크플로 예약 및 실행을 관리합니다. Apache Airflow를 사용한 Azure Databricks 작업 오케스트레이션을 참조하세요.
Azure Data Factory를 사용한 워크플로 오케스트레이션
ADF(Azure Data Factory)는 데이터 스토리지, 이동 및 처리 서비스를 자동화된 데이터 파이프라인으로 구성할 수 있는 클라우드 데이터 통합 서비스입니다. ADF를 사용하여 ADF 파이프라인의 일부로 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 작업을 실행하여 데이터 변환을 참조하세요.