Presto와 함께 S3 셀렉트 푸시다운을 사용하여 성능 향상 - Amazon EMR

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

Presto와 함께 S3 셀렉트 푸시다운을 사용하여 성능 향상

Amazon EMR 릴리스 버전 5.18.0 이상에서는 Amazon EMR에서 Presto와 함께 S3 셀렉트 푸시다운을 사용할 수 있습니다. 이 기능을 통해 Presto는 프로젝션 연산 (예:SELECT) 및 술어 연산 (예:) 의 계산 작업을 Amazon S3로 “푸시 다운”할 수 있습니다.WHERE 이렇게 하면 쿼리가 Amazon S3에서 필요한 데이터만 검색할 수 있으므로 성능을 개선하고 일부 애플리케이션에서 Amazon EMR과 Amazon S3 간에 전송되는 데이터 양을 줄일 수 있습니다.

S3 Select 푸시다운이 내 애플리케이션에 적합한가요?

S3 Select Pushdown 사용 여부에 관계없이 애플리케이션을 벤치마킹하여 애플리케이션에 적합한지 여부를 확인하는 것이 좋습니다.

다음 지침을 사용하여 애플리케이션과 함께 S3 Select를 사용할 수 있는지 확인하십시오.

  • 쿼리가 원본 데이터 세트 중 반 이상을 필터링합니다.

  • 쿼리 필터 조건자는 Presto 및 S3 Select에서 지원하는 데이터 형식의 열을 사용합니다. 타임스탬프, real 및 double 데이터 형식은 S3 Select Pushdown에서 지원되지 않습니다. 숫자 데이터에는 10진수 데이터 형식을 사용하는 것이 좋습니다. S3 Select에 지원되는 데이터 유형에 대한 자세한 내용은 Amazon 심플 스토리지 서비스 사용 설명서의 데이터 유형을 참조하십시오.

  • Amazon S3와 Amazon EMR 클러스터 간의 네트워크 연결은 전송 속도와 사용 가능한 대역폭이 좋습니다. Amazon S3는 HTTP 응답을 압축하지 않으므로 압축된 입력 파일의 경우 응답 크기가 커질 수 있습니다.

고려 사항 및 제한

  • CSV 형식으로 저장된 개체만 지원됩니다. 객체는 압축 해제되거나 gzip 또는 bzip2로 선택적으로 압축될 수 있습니다.

  • AllowQuotedRecordDelimiters 속성이 지원되지 않습니다. 이 속성이 지정되면 쿼리가 실패합니다.

  • 고객 제공 암호화 키 (SSE-C) 를 사용한 Amazon S3 서버 측 암호화 및 클라이언트 측 암호화는 지원되지 않습니다.

  • S3 Select Pushdow은 ORC 또는 Parquet과 같은 열 또는 압축 파일 형식 대신 사용할 수 없습니다.

PrestoDB 또는 Trino를 사용하여 S3 셀렉트 푸시다운 활성화

Amazon EMR에서 PrestoDB에 대해 S3 Select 푸시다운을 활성화하려면presto-connector-hive 구성 분류를 사용하여 아래true 예와 같이 설정하십시오hive.s3select-pushdown.enabled. 자세한 정보는 애플리케이션 구성을 참조하세요. hive.s3select-pushdown.max-connections 값도 설정해야 합니다. 대부분의 애플리케이션에서는 기본 설정 500이 적합합니다. 자세한 내용은 아래 hive.s3select-pushdown.max-connections 이해 및 튜닝 섹션을 참조하세요.

EMR 버전 6.1.0 - 6.3.0의presto-connector-hive PrestoSQL의 경우 아래 예제를 로prestosql-connector-hive 바꾸십시오.

Amazon EMR 버전 6.4.0 이상에서는 PrestoSQL 대신 Trino라는 새 이름을 사용합니다. Trino를 사용하는presto-connector-hive 경우 아래 예제를 다음과 같이 바꾸십시오.trino-connector-hive

[ { "classification": "presto-connector-hive", "properties": { "hive.s3select-pushdown.enabled": "true", "hive.s3select-pushdown.max-connections": "500" } } ]

hive.s3select-pushdown.max-connections 이해 및 튜닝

기본적으로 Presto는 파일 시스템으로 EMRFS를 사용합니다. emrfs-site구성fs.s3.maxConnections 분류의 설정은 Presto용 EMRFS를 통해 Amazon S3에 허용되는 최대 클라이언트 연결을 지정합니다. 기본적으로 이 값은 500입니다. S3 선택 푸시다운은 술어 작업을 위해 Amazon S3에 액세스할 때 EMRFS를 우회합니다. 이 경우 hive.s3select-pushdown.max-connections 값은 작업자 노드에서 이러한 작업에 허용되는 최대 클라이언트 연결 수를 결정합니다. 그러나 Presto에서 시작하는 Amazon S3에 대한 요청 중 푸시다운되지 않은 모든 요청 (예: GET 작업) 은 계속해서 의 값에 의해 관리됩니다fs.s3.maxConnections.

애플리케이션에서 "풀에서의 연결 대기 시간이 초과되었습니다"라는 오류가 발생하면 hive.s3select-pushdown.max-connectionsfs.s3.maxConnections 값을 모두 늘립니다.