View a markdown version of this page

릴리스 버전 - Amazon Athena

릴리스 버전

Amazon Athena for Apache Spark에서는 다음과 같은 릴리스 버전을 제공합니다.

PySpark 엔진 버전 3

PySpark 버전 3에는 Apache Spark 버전 3.2.1이 포함되어 있습니다. 이 버전을 사용하면 Athena 콘솔 내 노트북에서 Spark 코드를 실행할 수 있습니다.

Apache Spark 버전 3.5

Apache Spark 버전 3.5는 Amazon EMR 7.12 및 패키지 Apache Spark 버전 3.5.6에 기반합니다. 이 버전을 사용하면 Amazon SageMaker AI Unified Studio 노트북 또는 호환되는 기본 Spark 클라이언트에서 Spark 코드를 실행할 수 있습니다. 이 버전에서는 대화형 워크로드에 대한 향상된 경험을 제공하는 주요 기능을 추가합니다.

  • 보안 Spark Connect - Spark Connect를 인증 및 권한 부여된 AWS 엔드포인트로 추가합니다.

  • 세션 수준 비용 어트리뷰션 - 사용자는 AWS Cost Explorer 또는 Cost and Usage Report에서 대화형 세션당 비용을 추적할 수 있습니다. 자세한 내용은 세션 수준 비용 어트리뷰션 섹션을 참조하세요.

  • 고급 디버깅 기능 - API 및 노트북 모두에서 워크로드를 디버깅하기 위한 라이브 Spark UI 및 Spark 기록 서버 지원을 추가합니다. 자세한 내용은 Spark UI에 액세스 섹션을 참조하세요.

  • 필터링되지 않은 액세스 지원 - 전체 테이블 권한이 있는 보호된 AWS Glue Data Catalog 카탈로그 테이블에 액세스합니다. 자세한 내용은 Athena Spark 작업 그룹에서 Lake Formation 사용 섹션을 참조하세요.

Spark 기본 속성

다음 표에서는 Athena SparkConnect 세션에 적용되는 Spark 속성 및 해당 기본값을 나열합니다.

기본값 설명

spark.app.id

<Athena SessionId>

수정할 수 없습니다.

spark.app.name

default

spark.driver.cores

4

코어 드라이버가 사용하는 코어 수. 처음 시작 중에는 수정할 수 없습니다.

spark.driver.memory

10g

각 드라이버가 사용하는 메모리의 양. 처음 시작 중에는 수정할 수 없습니다.

spark.driver.memoryOverhead

6g

드라이버에서 실행되는 Python 워크로드 및 기타 프로세스에 할당된 메모리 오버헤드의 양. 처음 시작 중에는 수정할 수 없습니다.

spark.cortex.driver.disk

64g

Spark 드라이버 디스크. 처음 시작 중에는 수정할 수 없습니다.

spark.executor.cores

4

각 실행기에서 사용할 코어 수. 처음 시작 중에는 수정할 수 없습니다.

spark.executor.memory

10g

각 드라이버가 사용하는 메모리의 양.

spark.executor.memoryOverhead

6g

실행기에서 실행되는 Python 워크로드 및 기타 프로세스에 할당된 메모리 오버헤드의 양. 처음 시작 중에는 수정할 수 없습니다.

spark.cortex.executor.disk

64g

Spark 실행기 디스크. 처음 시작 중에는 수정할 수 없습니다.

spark.cortex.executor.architecture

AARCH_64

실행기의 아키텍처.

spark.driver.extraJavaOptions

-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false

Spark 드라이버에 대한 추가 Java 옵션. 처음 시작 중에는 수정할 수 없습니다.

spark.executor.extraJavaOptions

-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false

Spark 실행기에 대한 추가 Java 옵션. 처음 시작 중에는 수정할 수 없습니다.

spark.executor.instances

1

할당할 Spark 실행기 컨테이너 수.

spark.dynamicAllocation.enabled

TRUE

동적 리소스 할당을 켜는 옵션. 이 옵션은 워크로드에 따라 애플리케이션에 등록된 실행기 수를 스케일 업 또는 스케일 다운합니다.

spark.dynamicAllocation.minExecutors

0

동적 할당을 켜는 경우 실행기 수의 하한.

spark.dynamicAllocation.maxExecutors

59

동적 할당을 켜는 경우 실행기 수의 상한.

spark.dynamicAllocation.initialExecutors

1

동적 할당을 켜는 경우 실행할 초기 실행기 수.

spark.dynamicAllocation.executorIdleTimeout

60s

Spark에서 제거하기 전에 실행기가 유휴 상태를 유지할 수 있는 시간. 이는 동적 할당을 켜는 경우에만 적용됩니다.

spark.dynamicAllocation.shuffleTracking.enabled

TRUE

DRA를 활성화하려면 셔플 추적을 활성화해야 합니다.

spark.dynamicAllocation.sustainedSchedulerBacklogTimeout

1s

제한 시간은 Spark 스케줄러가 클러스터 관리자에게 새 실행기를 시작하라는 요청을 트리거하기 전에 보류 중인 태스크의 지속되는 백로그를 관찰해야 하는 기간을 정의합니다.

spark.sql.catalogImplementation

hive

spark.hadoop.hive.metastore.client.factory.class

com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory

AWS Glue 메타스토어 구현 클래스.

spark.hadoop.hive.metastore.glue.catalogid

<accountId>

AWS Glue 카탈로그 accountId.

spark.sql.hive.metastore.sharedPrefixes

software.amazon.awssdk.services.dynamodb

속성은 Hive 메타스토어 클라이언트 코드에 대해 생성된 격리된 ClassLoader가 아닌 Application ClassLoader에서 로드해야 하는 클래스에 대한 패키지 접두사의 쉼표로 구분된 목록을 지정합니다.

spark.hadoop.fs.s3.impl

org.apache.hadoop.fs.s3a.S3AFileSystem

S3 클라이언트가 S3A를 사용하기 위한 구현을 정의합니다.

spark.hadoop.fs.s3a.impl

org.apache.hadoop.fs.s3a.S3AFileSystem

S3A 클라이언트(S3A)에 대한 구현을 정의합니다.

spark.hadoop.fs.s3n.impl

org.apache.hadoop.fs.s3a.S3AFileSystem

네이티브 S3 클라이언트(S3N)가 S3A를 사용하기 위한 구현을 정의합니다.

spark.hadoop.fs.AbstractFileSystem.s3.impl

org.apache.hadoop.fs.s3a.S3A

spark.hadoop.fs.s3a.aws.credentials.provider

software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider

spark.hadoop.fs.s3.customAWSCredentialsProvider

com.amazonaws.auth.DefaultAWSCredentialsProviderChain

spark.hadoop.mapreduce.output.fs.optimized.committer.enabled

TRUE

이 속성은 Amazon S3에 데이터를 쓸 때 Spark 작업에 대해 최적화된 커밋 프로토콜을 활성화합니다. true로 설정하면 Spark는 비용이 많이 드는 파일 이름 바꾸기 작업을 차단하므로 기본 Hadoop 커미터에 비해 더 빠르고 신뢰할 수 있는 원자성 쓰기를 지원합니다.

spark.hadoop.fs.s3a.endpoint.region

<REGION>

이 구성은 S3A 클라이언트를 통해 액세스되는 Amazon S3 버킷에 대해 AWS 리전을 명시적으로 설정합니다.

spark.hadoop.fs.s3.getObject.initialSocketTimeoutMilliseconds

2000

이는 소켓 연결 제한 시간(밀리초 단위)을 지정합니다.

spark.hadoop.fs.s3a.committer.magic.enabled

TRUE

이를 통해 성능이 뛰어나지만 특수 경로에 대한 기본 클러스터 관리자의 지원에 의존하는 특정 커밋 프로토콜인 S3A 'Magic' 커미터가 활성화됩니다.

spark.hadoop.fs.s3a.committer.magic.track.commits.in.memory.enabled

TRUE

Magic 커미터가 활성화된 경우에만 관련이 있으며, 태스크에서 커밋된 파일 목록을 임시 디스크 파일에 쓰는 대신 메모리에서 추적해야 하는지를 지정합니다.

spark.hadoop.fs.s3a.committer.name

magicv2

이 설정은 사용할 특정 S3A 출력 커미터 알고리즘(예: directory, partitioned 또는 magic)을 명시적으로 선택합니다. 이름을 지정하여 임시 데이터를 관리하고, 태스크 실패를 처리하며, 대상 Amazon S3 경로에 대한 최종 원자성 커밋을 수행하는 전략을 선택합니다.

spark.hadoop.fs.s3.s3AccessGrants.enabled

FALSE

속성은 Amazon S3A/EMRFS 파일 시스템 클라이언트를 통해 Amazon S3 데이터에 액세스할 때 Amazon S3 Access Grants에 대한 지원을 활성화합니다.

spark.hadoop.fs.s3.s3AccessGrants.fallbackToIAM

FALSE

Amazon S3 Access Grants가 활성화된 경우 이 속성은 Access Grants 조회가 실패하거나 충분한 권한을 제공하지 않으면 Amazon S3 클라이언트가 기존 IAM 자격 증명으로 대체되는지를 제어합니다.

spark.pyspark.driver.python

/usr/bin/python3.11

드라이버의 Python 경로.

spark.pyspark.python

/usr/bin/python3.11

실행기의 Python 경로.

spark.python.use.daemon

TRUE

이 구성은 Spark가 각 실행기에서 Python 작업자 대몬 프로세스를 활용하는지를 제어합니다. 활성화하면(기본값: true) 실행기는 모든 태스크에 대해 새 Python 인터프리터를 반복적으로 시작하고 초기화하는 오버헤드를 방지하기 위해 여러 태스크 사이에서 Python 작업자를 활성 상태로 유지하므로 PySpark 애플리케이션의 성능을 크게 개선합니다.

spark.sql.execution.arrow.pyspark.enabled

TRUE

Apache Arrow를 사용하여 PySpark에서 JVM 및 Python 프로세스 간 데이터 전송을 최적화할 수 있습니다.

spark.sql.execution.arrow.pyspark.fallback.enabled

TRUE

Apache Arrow 최적화를 사용하여 JVM 및 Python 사이에서 데이터를 전송하는 동안 오류가 발생할 때 Spark의 동작을 제어하는 구성 속성.

spark.sql.parquet.fs.optimized.committer.optimization-enabled

TRUE

특정 파일 시스템, 특히 Amazon S3와 같은 클라우드 스토리지 시스템에 Parquet 파일을 쓸 때 Spark가 최적화된 파일 커미터를 사용하는지를 제어하는 구성 속성.

spark.sql.parquet.output.committer.class

com.amazon.emr.committer.EmrOptimizedSparkSqlParquetOutputCommitter

Parquet 파일을 쓸 때 사용할 Hadoop OutputCommitter의 정규화된 클래스 이름을 지정하는 Spark 구성 속성.

spark.resourceManager.cleanupExpiredHost

TRUE

이 속성은 드라이버가 삭제되거나 만료된 노드에서 실행 중인 실행기와 연결된 Spark 애플리케이션 리소스를 적극적으로 정리하는지를 제어합니다.

spark.blacklist.decommissioning.enabled

TRUE

속성을 사용하면 Spark의 로직으로 클러스터 관리자가 현재 서비스 해제(유예 종료) 중인 실행기를 자동으로 블랙리스트에 등록할 수 있습니다. 그러면 스케줄러에서 종료에 임박한 실행기에 새 태스크를 보내지 못하므로 리소스 스케일 다운 중에 작업 안정성이 개선됩니다.

spark.blacklist.decommissioning.timeout

1h

호스트를 블랙리스트에 등록하기 전에 Spark가 서비스 해제 실행기에서 태스크를 성공적으로 마이그레이션할 때까지 기다리는 최대 시간.

spark.stage.attempt.ignoreOnDecommissionFetchFailure

TRUE

서비스 해제 실행기에서 셔플 데이터를 읽을 때 가져오기에 실패한 경우 Spark에 상황을 허용하고 전체 스테이지 시도에 실패하지 않도록 지시합니다. 가져오기 실패는 복구 가능한 상황으로 간주되며, Spark는 다른 위치에서 데이터를 다시 가져와서(재계산이 필요할 수 있음) 정상적인 종료 중에 엄격한 오류 처리보다 작업 완료를 우선합니다.

spark.decommissioning.timeout.threshold

20

이 속성은 보통 내부적으로 또는 특정 클러스터 관리자 설정에서 호스트의 서비스 해제 프로세스에 대해 Spark가 예상하는 최대 총 기간을 정의하는 데 사용됩니다. 실제 서비스 해제 시간이 이 임계치를 초과하는 경우 Spark는 호스트를 블랙리스트에 등록하거나 강제 종료를 요청하는 등의 적극적인 조치를 취하여 리소스를 확보할 수 있습니다.

spark.files.fetchFailure.unRegisterOutputOnHost

TRUE

태스크가 특정 호스트에서 셔플 또는 RDD 데이터를 가져오지 못하는 경우 이를 true로 설정하여 해당 호스트에서 실패한 애플리케이션과 연결된 모든 출력 블록의 등록을 취소하도록 Spark에 지시합니다. 그러면 향후 태스크가 신뢰할 수 없는 호스트에서 데이터를 가져오려고 시도하지 못하게 차단하여 Spark가 다른 곳에서 필요한 블록을 강제로 재계산하도록 하고 간헐적인 네트워크 문제에 대한 작업의 견고성을 강화할 수 있습니다.