Jigar 씨가 Amazon S3에서
EMR 클러스터의 HDFS로 대량의
데이터를 복사하는 방법을 시연

Jigar_SEA

Amazon Simple Storage Service(Amazon S3)에서 Amazon EMR 클러스터로 대량의 데이터를 복사하고 싶습니다. 가장 좋은 방법은 무엇입니까?

S3DistCp를 사용하여 Amazon S3와 Amazon EMR 클러스터 간에 데이터를 복사합니다. S3DistCp는 Amazon EMR 클러스터에 기본적으로 설치되어 있습니다. S3DistCp를 호출하려면 클러스터를 시작할 때나 클러스터가 실행된 이후에 Amazon EMR 클러스터의 한 단계로 추가하십시오.

실행 중인 클러스터에 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 S3DistCp 단계를 추가하는 방법은 S3DistCp를 클러스터에 단계로 추가를 참조하십시오. 콘솔을 사용하여 S3DistCp 단계를 추가하려면:

1.    Amazon EMR 콘솔을 열고 클러스터를 선택합니다.

2.    목록에서 Amazon EMR 클러스터를 선택한 다음 단계를 선택합니다.

3.    Add step(단계 추가)을 선택하고 다음 옵션을 선택합니다.
[Step type]에서 [Custom JAR]를 선택합니다.
이름에 S3DistCp 단계의 이름을 입력합니다.
JAR location(JAR 위치)command-runner.jar을 입력합니다. 자세한 내용은 Command Runner를 참조하십시오.
인수에는 s3-dist-cp --src=s3://s3distcp-source/input-data --dest=hdfs://output-folder1과 유사한 옵션을 입력합니다.
실패 시 작업으로 계속을 선택합니다.

4.    [추가]를 선택합니다.

5.    단계 상태완료됨으로 바뀌면 다음과 유사한 명령을 실행하여 파일이 클러스터로 복사되었는지 확인합니다.

$ hadoop fs -ls hdfs://output-folder1/

참고: 모범 사례는 groupBy 옵션을 사용하여 작은 파일을 큰 파일 몇 개로 압축한 다음 outputCodec 옵션으로​큰 파일을 압축​하는 것입니다.

문제 해결

S3DistCp와 관련된 문제를 해결하려면 해당 단계 및 작업 로그를 점검하십시오.

단계 로그:

1.    Amazon EMR 콘솔을 열고 클러스터를 선택합니다.

2.    목록에서 Amazon EMR 클러스터를 선택한 다음 단계를 선택합니다.

3.    로그 파일 열에서 해당하는 단계 로그를 선택합니다.

  • controller: 단계 처리에 대한 정보입니다. 단계를 로드하는 동안 장애가 발생하면 이 로그에서 스택 트레이스를 볼 수 있습니다.
  • syslog: 해당 단계의 하둡 작업 실행을 설명합니다.
  • stderr - 하둡이 단계를 처리하는 동안의 표준 오류 채널입니다.
  • stdout - 하둡이 단계를 처리하는 동안의 표준 출력 채널입니다.

단계 로그에서 결함의 원인을 찾을 수 없는 경우, S3DistCp 작업 로그를 확인하십시오.

1.    Amazon EMR 콘솔을 열고 클러스터를 선택합니다.

2.    목록에서 Amazon 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 작업의 메모리 리소스를 늘리십시오.

S3 권한 오류:

해당 단계의 stderr 로그에 다음과 비슷한 오류 메시지가 있는 경우, 권한 문제로 인해 S3DistCp 작업이 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

이 문제를 해결하는 방법은 권한 오류를 참조하십시오.


페이지 내용이 도움이 되었습니까? | 아니요

AWS 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시 날짜: 2018-09-27