Amazon Managed Service for Prometheus를 사용하여 Spark 지표 모니터링 - Amazon EMR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Managed Service for Prometheus를 사용하여 Spark 지표 모니터링

Amazon EMR 릴리스 7.1.0 이상을 사용하면 EMR Serverless를 Amazon Managed Service for Prometheus와 통합하여 EMR Serverless 작업 및 애플리케이션에 대한 Apache Spark 지표를 수집할 수 있습니다. 이 통합은 AWS 콘솔, EMR 서버리스 또는 를 사용하여 작업을 제출API하거나 애플리케이션을 생성할 때 사용할 수 있습니다 AWS CLI.

사전 조건

Amazon Managed Service for Prometheus에 Spark 지표를 전달하려면 먼저 다음 사전 조건을 완료해야 합니다.

  • Amazon Managed Service for Prometheus 워크스페이스를 생성합니다. 이 Workspace는 수집 엔드포인트 역할을 합니다. 엔드포인트 - 원격 쓰기 URL에 대해 URL 표시된 를 기록해 둡니다. EMR Serverless 애플리케이션을 생성할 URL 때 를 지정해야 합니다.

  • 모니터링 목적으로 Amazon Managed Service for Prometheus에 작업에 대한 액세스 권한을 부여하려면 작업 실행 역할에 다음 정책을 추가합니다.

    { "Sid": "AccessToPrometheus", "Effect": "Allow", "Action": ["aps:RemoteWrite"], "Resource": "arn:aws:aps:<AWS_REGION>:<AWS_ACCOUNT_ID>:workspace/<WORKSPACE_ID>" }

설정

AWS 콘솔을 사용하여 Amazon Managed Service for Prometheus와 통합된 애플리케이션을 생성하려면
  1. 애플리케이션을 생성하려면 Amazon EMR Serverless 시작하기를 참조하세요.

  2. 애플리케이션을 생성하는 동안 사용자 지정 설정 사용을 선택한 다음 구성하려는 필드에 정보를 지정하여 애플리케이션을 구성합니다.

  3. 애플리케이션 로그 및 지표 에서 Amazon Managed Service for Prometheus 에 엔진 지표 전송을 선택한 다음 원격 쓰기 를 지정합니다URL.

  4. 원하는 다른 구성 설정을 지정한 다음 애플리케이션 생성 및 시작을 선택합니다.

AWS CLI 또는 EMR Serverless 사용 API

AWS CLI 또는 create-application start-job-run 명령을 실행할 때 또는 EMR ServerlessAPI를 사용하여 EMR Serverless 애플리케이션을 Amazon Managed Service for Prometheus와 통합할 수도 있습니다.

create-application
aws emr-serverless create-application \ --release-label emr-7.1.0 \ --type "SPARK" \ --monitoring-configuration '{ "prometheusMonitoringConfiguration": { "remoteWriteUrl": "https://aps-workspaces.<AWS_REGION>.amazonaws.com/workspaces/<WORKSPACE_ID>/api/v1/remote_write" } }'
start-job-run
aws emr-serverless start-job-run \ --application-id <APPPLICATION_ID> \ --execution-role-arn <JOB_EXECUTION_ROLE> \ --job-driver '{ "sparkSubmit": { "entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py", "entryPointArguments": ["10000"], "sparkSubmitParameters": "--conf spark.dynamicAllocation.maxExecutors=10" } }' \ --configuration-overrides '{ "monitoringConfiguration": { "prometheusMonitoringConfiguration": { "remoteWriteUrl": "https://aps-workspaces.<AWS_REGION>.amazonaws.com/workspaces/<WORKSPACE_ID>/api/v1/remote_write" } } }'

prometheusMonitoringConfiguration 명령을 포함하면 EMR Serverless는 Spark 지표를 수집하고 Amazon Managed Service for Prometheus의 remoteWriteUrl 엔드포인트에 기록하는 에이전트를 사용하여 Spark 작업을 실행해야 합니다. 그런 다음 Amazon Managed Service for Prometheus의 Spark 지표를 사용하여 시각화, 알림 및 분석을 수행할 수 있습니다.

고급 구성 속성

EMR Serverless는 Spark 내의 구성 요소를 사용하여 Spark 지표PrometheusServlet를 수집하고 성능 데이터를 Amazon Managed Service for Prometheus와 호환되는 데이터로 변환합니다. 기본적으로 EMR Serverless는 Spark에서 기본값을 설정하고 를 사용하여 작업을 제출할 때 드라이버 및 실행기 지표를 구문 분석합니다PrometheusMonitoringConfiguration.

다음 표에서는 Amazon Managed Service for Prometheus로 지표를 보내는 Spark 작업을 제출할 때 구성할 수 있는 모든 속성을 설명합니다.

Spark 속성 기본값 설명
spark.metrics.conf.*.sink.prometheusServlet.class

org.apache.spark.metrics.sink.PrometheusServlet

Spark가 Amazon Managed Service for Prometheus로 지표를 보내는 데 사용하는 클래스입니다. 기본 동작을 재정의하려면 사용자 지정 클래스를 지정합니다.

spark.metrics.conf.*.source.jvm.class

org.apache.spark.metrics.source.JvmSource

Spark 클래스는 를 사용하여 기본 Java 가상 머신에서 중요한 지표를 수집하고 전송합니다. JVM 지표 수집을 중지하려면 와 같은 빈 문자열로 설정하여 이 속성을 비활성화합니다"". 기본 동작을 재정의하려면 사용자 지정 클래스를 지정합니다.

spark.metrics.conf.driver.sink.prometheusServlet.path

/metrics/prometheus

Amazon Managed Service for PrometheusURL가 드라이버에서 지표를 수집하는 데 사용하는 고유한 입니다. 기본 동작을 재정의하려면 자체 경로를 지정합니다. 드라이버 지표 수집을 중지하려면 와 같은 빈 문자열로 설정하여 이 속성을 비활성화합니다"".

spark.metrics.conf.executor.sink.prometheusServlet.path

/metrics/executor/prometheus

Amazon Managed Service for PrometheusURL가 실행기에서 지표를 수집하는 데 사용하는 고유한 입니다. 기본 동작을 재정의하려면 자체 경로를 지정합니다. 실행기 지표 수집을 중지하려면 와 같은 빈 문자열로 설정하여 이 속성을 비활성화합니다"".

Spark 지표에 대한 자세한 내용은 Apache Spark 지표를 참조하세요.

고려 사항 및 제한

Amazon Managed Service for Prometheus를 사용하여 EMR Serverless에서 지표를 수집할 때는 다음 고려 사항과 제한 사항을 고려하세요.

  • Amazon Managed Service for Prometheus를 EMR Serverless와 함께 사용하는 것에 대한 지원은 AWS 리전 Amazon Managed Service for Prometheus를 일반적으로 사용할 수 있는 에서만 사용할 수 있습니다.

  • 에이전트를 실행하여 Amazon Managed Service for Prometheus에서 Spark 지표를 수집하려면 작업자의 리소스가 더 필요합니다. 한 명의 vCPU 워커와 같이 더 작은 워커 크기를 선택하면 작업 실행 시간이 늘어날 수 있습니다.

  • Amazon Managed Service for Prometheus with EMR Serverless 사용에 대한 지원은 Amazon EMR 릴리스 7.1.0 이상에서만 사용할 수 있습니다.