기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
EMRFS일관된 뷰 메타데이터
EMRFSconsistent view는 DynamoDB 테이블을 사용하여 일관성을 추적하여 Amazon S3와 동기화되거나 생성된 Amazon S3의 객체를 추적합니다. EMRFS 이 메타데이터는 모든 작업(읽기, 쓰기, 업데이트 및 복사)를 추적하는 데 사용되며, 실제 내용은 저장되지 않습니다. 이 메타데이터는 Amazon S3에서 수신된 객체나 메타데이터가 예상과 일치하는지 여부를 검증하는 데 사용됩니다. 이 확인을 통해 EMRFS Amazon S3에 새로 EMRFS 쓰는 객체 또는 동기화된 객체에 대한 목록 read-after-write 일관성과 일관성을 확인할 수 있습니다. EMRFS 여러 클러스터가 동일한 메타데이터를 공유할 수 있습니다.
메타데이터에 항목을 추가하는 방법
sync
또는 import
하위 명령을 사용하여 항목을 메타데이터에 추가할 수 있습니다. sync
는 경로에 Amazon S3 객체의 상태를 반영하지만 import
는 새 항목을 메타데이터에 추가하는 데에만 사용됩니다. 자세한 내용은 EMRFSCLI명령 참조 단원을 참조하십시오.
메타데이터와 Amazon S3 객체 간 차이를 확인하는 방법
메타데이터와 Amazon S3 간의 차이를 확인하려면 의 diff
EMRFS CLI 하위 명령을 사용하십시오. 자세한 내용은 EMRFSCLI명령 참조 단원을 참조하십시오.
메타데이터 작업이 제한되는지 여부를 알아보는 방법
EMRFS읽기 및 쓰기 작업에 대한 메타데이터의 기본 처리 용량 제한을 각각 500단위와 100단위로 설정합니다. 객체 또는 버킷 수가 많으면 작업이 이 용량을 초과하여 DynamoDB에서 작업을 제한합니다. 예를 들어, 이러한 용량 제한을 초과하는 작업을 수행하는 ProvisionedThroughputExceededException
경우 애플리케이션에서 a가 발생할 EMRFS 수 있습니다. 조절 시 EMRFS CLI 도구는 작업이 완료될 때까지 또는 Amazon에서 Amazon S3로 객체를 쓰기 위한 최대 재시도 값에 도달할 때까지 지수 백오프를 사용하여 DynamoDB 테이블에 쓰기를 재시도합니다. EMR
처리 용량 한도를 구성할 수 있습니다. 하지만 DynamoDB는 읽기 및 쓰기 작업에 대해 초당 읽기 용량 3000 단위 RCUs () 와 쓰기 용량 1000 단위 WCUs () 로 엄격한 파티션 제한을 두고 있습니다. 전송률 조절로 인한 sync
실패를 방지하려면 읽기 작업의 처리량을 RCUs 3000개 미만으로, 쓰기 작업의 처리량을 1000개 미만으로 제한하는 것이 좋습니다. WCUs 사용자 지정 처리량 용량 제한을 설정하는 방법에 대한 지침은 일관된 보기 구성 섹션을 참조하세요.
또한 DynamoDB 콘솔에서 EMRFS 메타데이터에 대한 Amazon CloudWatch 지표를 볼 수 있으며, 여기서 병목 현상이 발생한 읽기 및 쓰기 요청 수를 확인할 수 있습니다. 제한된 요청에 대해 0이 아닌 값을 지정한 읽기 또는 쓰기 작업에 대해 할당된 처리 용량을 높이는 것이 애플리케이션에 도움이 될 수 있습니다. 또한 애플리케이션이 장시간 읽기 또는 쓰기 작업에 대해 할당된 최대 처리 용량에 근접하는 경우에도 성능 이점을 얻을 수 있습니다.
주목할 만한 작업의 처리량 특성 EMRFS
읽기 및 쓰기 작업의 처리 용량 기본값은 각각 400단위 및 100단위입니다. 다음과 같은 성능 특성은 특정 작업에 필요한 처리량을 결정하는 데 도움이 됩니다. 이러한 테스트는 단일 노드 m3.large
클러스터를 사용하여 수행되었습니다. 모든 작업이 단일 스레드입니다. 성능은 특정 애플리케이션 특성에 따라 크게 달라지므로 파일 시스템 작업을 최적화하기 위해 실험이 필요할 수도 있습니다.
Operation | 평균 read-per-second | 평균 write-per-second |
---|---|---|
create(객체) | 26.79 | 6.70 |
delete(객체) | 10.79 | 10.79 |
delete(1000개 객체를 포함하는 디렉터리) | 21.79 | 338.40 |
getFileStatus(객체) | 34.70 | 0 |
getFileStatus(디렉터리) | 19.96 | 0 |
listStatus(객체 1개가 포함된 디렉터리) | 43.31 | 0 |
listStatus(객체 10개가 포함된 디렉터리) | 44.34 | 0 |
listStatus(100개의 개체가 포함된 디렉터리) | 84.44 | 0 |
listStatus(1,000개의 개체가 포함된 디렉터리) | 308.81 | 0 |
listStatus(10,000개의 개체가 포함된 디렉터리) | 416.05 | 0 |
listStatus(100,000개의 개체가 포함된 디렉터리) | 823.56 | 0 |
listStatus(1백만 개의 개체가 포함된 디렉터리) | 882.36 | 0 |
mkdir(120초 동안 지속) | 24.18 | 4.03 |
mkdir | 12.59 | 0 |
rename(객체) | 19.53 | 4.88 |
rename(1000개 객체를 포함하는 디렉터리) | 23.22 | 339.34 |
메타데이터 스토어에서 오래된 데이터를 삭제하는 단계를 제출하려면
사용자가 DynamoDB 기반 메타데이터에서 특정 항목을 제거해야 할 때가 있습니다. 이 작업을 수행하면 테이블 관련 스토리지 비용을 절감할 수 있습니다. 사용자는 하위 명령을 사용하여 수동 또는 프로그래밍 방식으로 특정 항목을 제거할 수 있습니다. EMRFS CLI delete
하지만 메타데이터에서 항목을 삭제하면 더 EMRFS 이상 일관성을 검사하지 않습니다.
작업이 완료된 후 프로그래밍 방식으로 제거를 수행하려면 클러스터에 최종 단계를 제출하면 클러스터에서 명령을 실행합니다. EMRFS CLI 예를 들어 다음 명령을 입력하여 클러스터에 2일 이상 지난 모든 항목을 삭제하도록 하는 단계를 클러스터에 제출합니다.
aws emr add-steps --cluster-id
j-2AL4XXXXXX5T9
--steps Name="emrfsCLI",Jar="command-runner.jar",Args=["emrfs","delete","--time","2","--time-unit","days"] { "StepIds": [ "s-B12345678902
" ] }
반환된 StepId 값을 사용하여 로그에서 작업 결과를 확인할 수 있습니다.