Amazon Simple Storage Service(Amazon S3)에서 Amazon EMR 클러스터로 대량의 데이터를 복사하고 싶습니다.
간략한 설명
S3DistCp를 사용하여 Amazon S3와 Amazon EMR 클러스터 간에 데이터를 복사하십시오. S3distCP는 기본적으로 Amazon EMR 클러스터에 설치됩니다. s3distCP를 호출하려면 시작 시 또는 클러스터 실행 후 단계로 추가하십시오.
해결 방법
AWS Command Line Interface(AWS CLI)를 사용하여 실행 중인 클러스터에 S3distCP 단계를 추가하려면 클러스터에 S3distCP를 단계로 추가를 참조하십시오.
참고: AWS CLI 명령을 실행할 때 오류가 발생하면 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
콘솔을 사용하여 S3distCP 단계를 추가하려면 다음과 같이 하십시오.
1. Amazon EMR 콘솔을 연 다음 클러스터를 선택합니다.
2. 목록에서 Amazon EMR 클러스터를 선택한 다음 단계를 선택합니다.
3. 단계 추가를 선택한 후 다음 옵션을 선택합니다.
단계 유형에서 사용자 지정 JAR을 선택합니다.
이름에 S3DistCP 단계의 이름을 입력합니다.
JAR 위치에 command-runner.jar을 입력합니다. 자세한 내용은 Amazon EMR 클러스터에서 명령 및 스크립트 실행을 참조하십시오.
인수에는 s3-dist-cp --src=s3://s3distcp-source/input-data --dest=hdfs:///output-folder1과 비슷한 옵션을 입력합니다.
실패 시 작업에서 계속을 선택합니다.
- 추가를 선택합니다.
5. 단계 상태가 완료됨으로 변경되면 파일이 클러스터에 복사되었는지 확인합니다.
$ hadoop fs -ls hdfs:///output-folder1/
참고: groupBy 옵션을 사용하여 작은 파일을 소수의 큰 파일로 집계한 다음 outputCodec 옵션을 사용하여 큰 파일을 압축하는 것이 좋습니다.
문제 해결
S3distcp 관련 문제를 해결하려면 단계 및 작업 로그를 확인하십시오.
1. Amazon EMR 콘솔을 연 다음 클러스터를 선택합니다.
2. 목록에서 EMR 클러스터를 선택한 다음 단계를 선택합니다.
3. 로그 파일 열에서 적절한 단계 로그를 선택합니다.
컨트롤러: 단계 처리에 대한 정보입니다. 로드하는 동안 단계가 실패하면 이 로그에서 단계 추적 정보를 찾을 수 있습니다.
syslog: Apache, Hadoop과 같은 Amazon 외 소프트웨어의 로그입니다.
stderr: 단계를 처리하는 동안 발생하는 Hadoop의 표준 오류 채널입니다.
stdout: 단계를 처리하는 동안 Hadoop의 표준 출력 채널입니다.
단계 로그에서 실패의 근본 원인을 찾을 수 없는 경우 S3distCP 작업 로그를 확인하십시오.
1. Amazon EMR 콘솔을 연 다음 클러스터를 선택합니다.
2. 목록에서 EMR 클러스터를 선택한 다음 단계를 선택합니다.
3. 로그 파일 열에서 작업 보기를 선택합니다.
4. **작업 ** 열에서 작업 보기를 선택합니다.
5. 실패한 작업이 있는 경우 시도 보기를 선택하여 작업 로그를 확인합니다.
일반적인 오류
메모리 부족으로 인한 Reducer 작업 실패:
단계의 stderr 로그에 다음과 비슷한 오류 메시지가 표시되면 Reducer 작업을 처리할 메모리가 부족하기 때문에 s3distcp 작업이 실패한 것입니다.
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
Container [pid=19135,containerID=container_1494287247949_0005_01_000003] is running beyond virtual memory limits. Current usage: 569.0 MB of 1.4 GB physical memory used; 3.0 GB of 3.0 GB virtual memory used. Killing container.
이 문제를 해결하려면 다음 옵션 중 하나를 사용하여 Reducer 작업에 필요한 메모리 리소스를 늘리십시오.
Amazon S3 권한 오류:
단계의 stderr 로그에 다음과 비슷한 오류 메시지가 표시되는 경우 권한 문제 때문에 s3distcp 작업이 Amazon S3에 액세스할 수 없는 것입니다.
Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: REQUEST_ID
이 문제를 해결하려면 권한 오류를 참조하십시오.
관련 정보
로그 파일 보기