EMR 파일 시스템(EMRFS) - Amazon EMR

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

EMR 파일 시스템(EMRFS)

EMR 파일 시스템(EMRFS)은 모든 Amazon EMR 클러스터가 Amazon EMR에서 Amazon S3로 직접 일반 파일을 읽고 쓸 수 있도록 하는 HDFS 구현입니다. EMRFS는 Hadoop과 함께 사용하기 위해 Amazon S3에 영구 데이터를 저장하는 편리한 기능을 제공하면서 동시에 데이터 암호화 같은 기능도 제공합니다.

데이터 암호화는 EMRFS가 Amazon S3에 기록하는 객체를 암호화하여 EMRFS가 Amazon S3에서 암호화된 객체를 사용할 수 있도록 해줍니다. Amazon EMR 릴리스 버전 4.8.0 이상을 사용하고 있는 경우에는 보안 구성을 사용하여 다른 암호화 설정과 더불어 Amazon S3에서 EMRFS 객체에 대한 암호화를 설정할 수 있습니다. 자세한 내용은 암호화 옵션을 참조하세요. 이전 버전의 Amazon EMR을 사용하는 경우에는 수동으로 암호화 설정을 구성할 수 있습니다. 자세한 내용은 EMRFS 속성을 사용하여 Amazon S3 암호화 지정 단원을 참조하십시오.

Amazon S3는 모든 AWS 리전에서 모든 GET, PUT 및 LIST 작업에 대해 강력한 읽기 후 쓰기 일관성을 제공합니다. 즉, EMRFS를 사용하여 작성한 내용은 성능에 영향을 주지 ㅇ낳고 Amazon S3에서 읽을 수 있습니다. 자세한 내용은 Amazon S3 데이터 일관성 모델을 참조하십시오.

Amazon EMR 릴리스 버전 5.10.0 이상을 사용하는 경우에는 Amazon S3에서 EMRFS 데이터의 위치, 그룹 또는 클러스터 사용자에 따라 Amazon S3에 대한 EMRFS 요청에 다른 IAM 역할을 사용할 수 있습니다. 자세한 내용은 Amazon S3에 대한 EMRFS 요청의 IAM 역할 구성을 참조하세요.

주의

Apache Spark 작업을 실행하는 Amazon EMR 클러스터의 추론적 실행을 활성화하기 전에 다음 정보를 검토합니다.

EMRFS에는 EMRFS를 사용할 때 Amazon S3에 파일을 쓰는 데 최적화된 대체 OutputCommitter 구현인 EMRFS S3 최적화된 커미터가 포함되어 있습니다. EMRFS S3 최적화 커미터를 사용하지 않고 Amazon S3에 데이터를 쓰는 애플리케이션에서 Apache Spark 추론적 실행 기능을 켜면 SPARK-10063 설명에 설명된 데이터 정확성 문제가 발생할 수 있습니다. 이는 Amazon EMR 릴리스 5.19 이전의 Amazon EMR 버전을 사용하거나 ORC 및 CSV와 같은 형식으로 Amazon S3에 파일을 쓰는 경우 발생할 수 있습니다. 이러한 형식은 EMRFS S3 최적화 커미터에서 지원되지 않습니다. EMRFS S3 최적화된 커미터를 사용하기 위한 전체 요구 사항 목록은 EMRFS S3 최적화 커미터 요구 사항을 참조하세요.

EMRFS 직접 쓰기는 일반적으로 다음과 같이 EMRFS S3 최적화 커미터가 지원되지 않는 경우에 사용됩니다.

  • Parquet 외 다른 출력 형식(예: ORC 또는 텍스트 등).

  • Spark RDD API를 사용하는 Hadoop 파일.

  • Hive Serde를 사용하는 Parquet. Hive metastore Parquet table conversion을 참조하세요.

다음 시나리오에서는 EMRFS 직접 쓰기가 사용되지 않습니다.

  • EMRFS S3 최적화 커미터를 활성화하는 경우. EMRFS S3 최적화 커미터의 요구 사항을 참조하세요.

  • partitionOverwriteMode를 dynamic으로 설정한 상태로 동적 파티션을 작성하는 경우

  • 사용자 지정 파티션 위치에 쓸 때(예: Hive 기본 파티션 위치 규칙을 따르지 않는 위치).

  • EMRFS 이외의 파일 시스템을 사용하는 경우(예: HDFS에 쓰기 또는 S3A 파일 시스템 사용).

애플리케이션이 Amazon EMR 5.14.0 이상에서 직접 쓰기를 사용하는지 여부를 확인하려면 Spark INFO 로깅을 활성화합니다. Spark 드라이버 로그나 Spark 실행기 컨테이너 로그에 'Direct Write: ENABLED'라는 텍스트가 포함된 로그 줄이 있는 경우 Spark 애플리케이션이 직접 쓰기를 사용하여 기록한 것입니다.

기본적으로 Amazon EMR 클러스터에서 추론적 실행은 OFF 상태입니다. 다음 두 가지 조건에 모두 해당하는 경우 추론적 실행을 켜지 않는 것이 좋습니다.

  • Amazon S3에 데이터를 씁니다.

  • 데이터는 Apache Parquet 이외의 형식 또는 EMRFS S3 최적화 커미터를 사용하지 않는 Apache Parquet 형식으로 작성됩니다.

Spark 추론적 실행을 켜고 EMRFS 직접 쓰기를 사용하여 Amazon S3에 데이터를 쓰는 경우 간헐적으로 데이터 손실이 발생할 수 있습니다. HDFS에 데이터를 쓰거나 EMRFS S3 최적화 커미터를 사용하여 Parquet에 데이터를 쓸 때 Amazon EMR은 직접 쓰기를 사용하지 않으므로 이 문제가 발생하지 않습니다.

Spark에서 Amazon S3로 직접 쓰는 EMRFS를 사용하는 형식으로 데이터를 쓰고 추론적 실행을 사용해야 하는 경우 HDFS에 쓴 다음, S3DistCP를 사용하여 출력 파일을 Amazon S3로 전송하는 것이 좋습니다.