다음을 통해 공유


Azure Storage 계정을 사용하여 Apache Spark 애플리케이션 로그 및 메트릭 수집

Synapse Apache Spark 진단 내보내기 확장은 Apache Spark 애플리케이션에서 로그, 이벤트 로그 및 메트릭을 Azure Log Analytics, Azure Storage 및 Azure Event Hubs를 포함한 하나 이상의 대상으로 내보낼 수 있도록 하는 라이브러리입니다.

이 자습서에서는 Synapse Apache Spark 진단 내보내기 확장을 사용하여 Apache Spark 애플리케이션의 로그, 이벤트 로그 및 메트릭을 Azure 스토리지 계정으로 내보내는 방법에 대해 알아봅니다.

스토리지 계정에 로그 및 메트릭 수집

1 단계: 스토리지 계정 만들기

진단 로그 및 메트릭을 스토리지 계정에 수집하려면 기존 Azure Storage 계정을 사용할 수 있습니다. 또는 계정이 없는 경우 Azure Blob 스토리지 계정을 만들거나Azure Data Lake Storage Gen2에서 사용할 스토리지 계정을 만들 수 있습니다.

2단계: Apache Spark 구성 파일 만들기

diagnostic-emitter-azure-storage-conf.txt를 만들고, 다음 내용을 이 파일에 복사합니다. 또는 Apache Spark 풀을 구성하기 위한 샘플 템플릿 파일을 다운로드합니다.

spark.synapse.diagnostic.emitters MyDestination1
spark.synapse.diagnostic.emitter.MyDestination1.type AzureStorage
spark.synapse.diagnostic.emitter.MyDestination1.categories Log,EventLog,Metrics
spark.synapse.diagnostic.emitter.MyDestination1.uri https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>
spark.synapse.diagnostic.emitter.MyDestination1.auth AccessKey
spark.synapse.diagnostic.emitter.MyDestination1.secret <storage-access-key>

구성 파일에서 <my-blob-storage>, <container-name>, <folder-name>, <storage-access-key>의 매개 변수를 입력합니다. 매개 변수에 대한 자세한 설명은 Azure Storage 구성을 참조하세요.

3단계: Apache Spark 구성 파일을 Synapse Studio에 업로드하고 Spark 풀에서 사용

  1. Apache Spark 구성 페이지(관리 -> Apache Spark 구성)를 엽니다.
  2. 가져오기 단추를 클릭하여 Apache Spark 구성 파일을 Synapse Studio에 업로드합니다.
  3. Synapse Studio에서 Apache Spark 풀로 이동합니다(관리 -> Apache Spark 풀).
  4. Apache Spark 풀의 오른쪽에 있는 "..." 단추를 클릭하고, Apache Spark 구성을 선택합니다.
  5. 드롭다운 메뉴에서 방금 업로드한 구성 파일을 선택할 수 있습니다.
  6. 구성 파일을 선택한 후 적용을 클릭합니다.

4단계: Azure 스토리지 계정에서 로그 파일 보기

작업을 구성된 Apache Spark 풀에 제출하면 대상 스토리지 계정의 로그 및 메트릭 파일을 볼 수 있습니다. 로그는 <workspaceName>.<sparkPoolName>.<livySessionId>의 다른 애플리케이션에 따라 해당 경로에 배치됩니다. 모든 로그 파일은 JSON 줄 형식(줄 바꿈으로 구분된 JSON, 즉 ndjson이라고도 함)으로 되어 있어 데이터 처리가 편리합니다.

사용 가능한 구성

구성 설명
spark.synapse.diagnostic.emitters 필수입니다. 쉼표로 구분된 진단 내보내기의 대상 이름입니다. 예를 들어 MyDest1,MyDest2
spark.synapse.diagnostic.emitter.<destination>.type 필수입니다. 기본 제공 대상 유형입니다. Azure 스토리지 대상을 사용하도록 설정하려면 이 필드에서 AzureStorage를 포함해야 합니다.
spark.synapse.diagnostic.emitter.<destination>.categories 선택 사항. 쉼표로 구분된 선택한 로그 범주입니다. 사용 가능한 값은 DriverLog, ExecutorLog, EventLog, Metrics입니다. 설정되지 않으면 기본값은 모두 범주입니다.
spark.synapse.diagnostic.emitter.<destination>.auth 필수입니다. AccessKey는 스토리지 계정 액세스 키 권한 부여를 사용하기 위한 것이며, SAS는 스토리지 계정 공유 액세스 서명키 권한 부여를 사용하기 위한 것입니다.
spark.synapse.diagnostic.emitter.<destination>.uri 필수입니다. 대상 Blob 컨테이너 폴더 URI입니다. https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name> 패턴과 일치해야 합니다.
spark.synapse.diagnostic.emitter.<destination>.secret 선택 사항. 비밀(AccessKey 또는 SAS) 콘텐츠입니다.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault .secret이 지정되지 않은 경우 필수 사항입니다. 비밀(AccessKey 또는 SAS)이 저장되는 Azure Key Vault 이름입니다.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName .secret.keyVault를 지정하는 경우 필요합니다. 비밀(AccessKey 또는 SAS)이 저장되는 Azure Key Vault 비밀입니다.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.linkedService 선택 사항. Azure Key Vault 연결된 서비스 이름입니다. Synapse 파이프라인에서 사용하도록 설정된 경우 AKV에서 비밀을 가져오는 데 필요합니다. (MSI에 AKV에 대한 읽기 권한이 있는지 확인하세요.)
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match 선택 사항. 쉼표로 구분된 Spark 이벤트 이름이며, 수집할 이벤트를 지정할 수 있습니다. 예: SparkListenerApplicationStart,SparkListenerApplicationEnd
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match 선택 사항. 쉼표로 구분된 log4j 로거 이름이며, 수집할 이벤트를 지정할 수 있습니다. 예: org.apache.spark.SparkContext,org.example.Logger
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match 선택 사항. 쉼표로 구분된 Spark 메트릭 이름 접미사이며, 수집할 메트릭을 지정할 수 있습니다. 예: jvm.heap.used

로그 데이터 샘플

JSON 형식의 샘플 로그 레코드는 다음과 같습니다.

{
    "timestamp": "2021-01-02T12:34:56.789Z",
    "category": "Log|EventLog|Metrics",
    "workspaceName": "<my-workspace-name>",
    "sparkPool": "<spark-pool-name>",
    "livyId": "<livy-session-id>",
    "applicationId": "<application-id>",
    "applicationName": "<application-name>",
    "executorId": "<driver-or-executor-id>",
    "properties": {
        // The message properties of logs, events and metrics.
        "timestamp": "2021-01-02T12:34:56.789Z",
        "message": "Registering signal handler for TERM",
        "logger_name": "org.apache.spark.util.SignalUtils",
        "level": "INFO",
        "thread_name": "main"
        // ...
    }
}

데이터 반출 보호가 사용하도록 설정된 Synapse 작업 영역

Azure Synapse Analytics 작업 영역에서는 작업 영역에 대한 데이터 반출 보호 사용을 지원합니다. 반출 보호를 사용하면 로그와 메트릭을 대상 엔드포인트로 직접 보낼 수 없습니다. 이 시나리오에서는 다른 대상 엔드포인트에 해당하는 관리형 프라이빗 엔드포인트를 만들거나 IP 방화벽 규칙을 만들 수 있습니다.

  1. Synapse Studio > 관리 > 관리형 프라이빗 엔드포인트로 차례로 이동하여 새로 만들기 단추를 클릭하고, Azure Blob Storage 또는 Azure Data Lake Storage Gen2를 선택하고, 계속을 선택합니다.

    관리형 프라이빗 엔드포인트 만들기 1

    참고 항목

    Azure Blob Storage와 Azure Data Lake Storage Gen2를 모두 지원할 수 있습니다. 그러나 abfss:// 형식을 파싱할 수 없습니다. Azure Data Lake Storage Gen2 엔드포인트는 Blob URL 형식으로 지정되어야 합니다.

    https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name> 
    
  2. 스토리지 계정 이름에서 Azure Storage 계정을 선택하고, 만들기 단추를 클릭합니다.

    관리형 프라이빗 엔드포인트 만들기 2

  3. 프라이빗 엔드포인트를 프로비전할 때까지 몇 분 정도 기다립니다.

  4. Azure Portal의 스토리지 계정으로 이동하여 네트워킹>프라이빗 엔드포인트 연결 페이지에서 프로비저닝된 연결을 선택하고, 승인을 선택합니다.