Amazon EMR 클러스터의 EMRFS 메타데이터 테이블에 레코드가 너무 많은 이유는 무엇입니까?

최종 업데이트 날짜: 2020년 11월 17일

Amazon EMR 클러스터의 EMRFS 메타데이터 테이블은 계속 증가하고 있습니다. 이 문제가 발생하는 원인은 무엇이고 어떻게 해결합니까?

간략한 설명

EMRFS를 사용하여 Amazon Simple Storage Service(Amazon S3)에서 파일이나 디렉터리를 삭제하면 EMRFS는 메타데이터 테이블의 해당 레코드에 삭제 마커를 추가합니다. 그러나 EMRFS는 메타데이터 테이블에서 레코드를 제거하지 않습니다. 시간이 지남에 따라 Amazon DynamoDB 테이블의 레코드 수가 늘어납니다. 이로 인해 다음과 같은 문제가 발생할 수 있습니다.

  • 메타데이터 테이블에 대한 조절 때문에 EMR 클러스터의 Amazon S3 읽기/쓰기 작업이 실패할 수 있습니다.
  • EMRFS 동기화 명령을 완료하는 데 시간이 오래 걸립니다.

삭제된 레코드를 지우려면 메타데이터 테이블에서 TTL(Time to Live)을 활성화하고 deletionTTLTTL 특성으로 지정합니다. 그런 다음 특성을 채워 삭제된 객체에 대한 레코드를 찾아 제거합니다.

참고: TTL은 Amazon S3에서 직접 삭제하는 객체에는 적용되지 않습니다. TTL은 EMRFS로 삭제하는 객체에만 적용됩니다.

해결 방법

1.    메타데이터 테이블(기본적으로 EmrFSMetadata라고 이름 지정)에서 TTL을 활성화합니다. TTL 특성에 대해 deletionTTL을 입력합니다. 또는 다음 AWS 명령줄 인터페이스(AWS CLI) 명령을 실행합니다. example-EmrFSMetadata를 테이블 이름으로 바꿉니다.

$ aws dynamodb update-time-to-live --table-name example-EmrFSMetadata --time-to-live-specification "Enabled=true, AttributeName=deletionTTL"

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우, 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

2.    테이블에서 deletionTTL 특성을 채우려면 emrfs popullate-ttl 명령을 실행합니다. 이 명령은 메타데이터 테이블의 각 레코드를 확인합니다. 레코드에 삭제 마커가 있는 경우 EMRFS는 deletionTTL 특성을 설정한 다음 24시간 후에 레코드를 삭제합니다.

$ emrfs populate-ttl

3.    populate-ttl 명령은 이미 삭제 마커가 있는 파일에 대한 레코드를 찾습니다. 나중에 삭제하는 파일에 대한 레코드를 자동으로 제거하려면 emrfs-site.xml를 열고 fs.s3.consistent.metadata.delete.ttl.enabledtrue로 설정합니다.

4.    (선택 사항) 만료 시간(기본적으로 24시간)을 변경하려면 emrfs-site.xml에서 fs.s3.consistent.metadata.delete.ttl.expiration.seconds 속성을 설정합니다. 예를 들어 만료 시간을 2시간으로 설정하려면 다음을 수행하세요.

"fs.s3.consistent.metadata.delete.ttl.expiration.seconds":"7200"

새 클러스터에서 이러한 모든 속성을 설정하려면 클러스터를 생성할 때 다음과 같은 구성을 제공합니다.

[
    {
      "Classification": "emrfs-site",
      "Properties": {
        "fs.s3.consistent.retryPeriodSeconds":"10",
        "fs.s3.consistent":"true",
        "fs.s3.consistent.retryCount": "5",
        "fs.s3.consistent.metadata.tableName":"EmrFSMetadata",
        "fs.s3.consistent.metadata.delete.ttl.enabled":"true",
        "fs.s3.consistent.metadata.delete.ttl.expiration.seconds":"7200"
      }
    }
]

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?