기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
S3DistCp(s3-dist-cp)
Apache DistCp는 대량의 데이터를 복사하는 데 사용할 수 있는 오픈 소스 도구입니다. S3DistCp는 DistCp와 비슷하지만 AWS, 특히 Amazon S3에서 함께 작동하도록 최적화되었습니다. Amazon EMR 버전 4.0 및 이후에서 S3DistCp 명령은 s3-dist-cp
이며, 클러스터 단계로 혹은 명령줄에 추가됩니다. S3DistCp를 사용하여 Amazon S3의 대량 데이터를 HDFS로 효율적으로 복사할 수 있습니다. HDFS에서는 Amazon EMR 클러스터의 후속 단계를 통해 데이터를 처리할 수 있습니다. 또한 S3DistCp를 사용하여 Amazon S3 버킷 간에 또는 HDFS에서 Amazon S3로 데이터를 복사할 수도 있습니다. S3DistCp는 버킷과 AWS 계정 간에 많은 수의 객체를 병렬로 복사하는 데 더 확장 가능하고 효율적입니다.
실제 시나리오에서 S3DistCP의 유연성을 보여주는 특정 명령은 AWS 빅 데이터 블로그의 S3DistCp 사용에 대한 7가지 팁을
DistCp처럼 S3DistCp도 MapReduce를 사용하여 분산 방식으로 복사합니다. 여러 서버 간에 복사, 오류 처리, 복구 및 보고 작업을 공유합니다. Apache DistCp 오픈 소스 프로젝트에 대한 자세한 내용은 Apache Hadoop 설명서에서 DistCp guide
S3DistCp가 지정된 파일의 일부 또는 전체를 복사할 수 없는 경우 클러스터 단계가 실패하고 0 이외의 오류 코드를 반환합니다. 이러한 상황이 발생할 경우 S3DistCp는 부분적으로 복사된 파일을 지우지 않습니다.
중요
S3DistCp는 밑줄 문자를 포함하는 Amazon S3 버킷 이름을 지원하지 않습니다.
S3DistCp는 Parquet 파일의 연결을 지원하지 않습니다. 대신 PySpark를 사용하십시오. 자세한 내용은 Amazon EMR에서 parquet 파일 연결
S3DistCp를 사용하여 단일 파일(디렉터리 대신)을 S3에서 HDFS로 복사할 때 복사 오류를 방지하려면 Amazon EMR 버전 5.33.0 이상 또는 Amazon EMR 버전 6.3.0 이상을 사용합니다.
S3DistCp 옵션
S3DistCp는 DistCp와 비슷하지만 데이터를 복사하고 압축하는 방법을 변경하는 다양한 옵션 세트를 지원합니다.
S3DistCp를 직접 호출하면 다음 테이블에서 설명하는 옵션을 지정할 수 있습니다. 이 옵션은 인수 목록을 사용하여 단계에 추가됩니다. 다음 표에는 S3DistCp 인수 예가 나와 있습니다.
옵션 | 설명 | 필수 |
---|---|---|
‑‑src=LOCATION
|
복사할 데이터의 위치입니다. 이 위치는 HDFS 또는 Amazon S3 위치일 수 있습니다. 예제: 중요S3DistCp는 밑줄 문자를 포함하는 Amazon S3 버킷 이름을 지원하지 않습니다. |
예 |
‑‑dest=LOCATION
|
데이터의 대상입니다. 이 위치는 HDFS 또는 Amazon S3 위치일 수 있습니다. 예제: 중요S3DistCp는 밑줄 문자를 포함하는 Amazon S3 버킷 이름을 지원하지 않습니다. |
예 |
‑‑srcPattern=PATTERN
|
정규식 인수에 별표(*) 같은 특수 문자가 포함되어 있는 경우 정규식 또는 전체 예제: |
아니요 |
‑‑groupBy=PATTERN
|
S3DistCp에서 식과 일치하는 파일을 연결하는 정규식 괄호는 파일을 그룹화하는 방식을 나타내며, 괄호 안에 지정된 문과 일치하는 모든 항목이 단일 출력 파일로 결합됩니다. 괄호에 지정된 문이 정규식에 포함되지 않는 경우 S3DistCp 단계에 대해 클러스터가 실패하며 오류가 발생합니다. 정규식 인수에 별표(*) 같은 특수 문자가 포함되어 있는 경우 정규식 또는 전체
예제: |
아니요 |
‑‑targetSize=SIZE
|
예제: |
아니요 |
‑‑appendToLastFile |
이미 있는 파일을 Amazon S3에서 HDFS로 복사하는 경우 S3DistCp의 동작을 지정합니다. 이 옵션은 새 파일 데이터를 기존 파일에 추가합니다. |
아니요 |
‑‑outputCodec=CODEC
|
복사한 파일에 사용할 압축 코덱을 지정합니다. 이때 예제: |
아니요 |
‑‑s3ServerSideEncryption
|
SSL을 사용하여 대상 데이터가 전송되고 AWS 서비스 측 키를 사용하여 Amazon S3에서 자동으로 암호화되는지 확인합니다. S3DistCp를 사용하여 데이터를 검색할 때 객체가 자동으로 암호화 해제됩니다. 암호화되지 않은 객체를 암호화가 요구되는 Amazon S3 버킷으로 복사하려는 경우 작업이 실패합니다. 자세한 내용은 데이터 암호화 사용을 참조하세요. 예제: |
아니요 |
‑‑deleteOnSuccess
|
이 옵션을 지정한 경우 복사 작업이 성공적으로 수행되면 S3DistCp가 복사한 파일이 소스 위치에서 삭제됩니다. 이 옵션은 예약 작업으로서 로그 파일 같은 출력 파일을 한 위치에서 다른 위치로 복사하려 하며 동일한 파일을 두 번 복사하기를 원치 않는 경우에 유용합니다. 예제: |
아니요 |
‑‑disableMultipartUpload
|
멀티파트 업로드 사용을 비활성화합니다. 예제: |
아니요 |
‑‑multipartUploadChunkSize=SIZE
|
Amazon S3 멀티파트 업로드의 각 파트 크기(MiB). S3DistCp는 예제: |
아니요 |
‑‑numberFiles
|
출력 파일 앞에 순차 번호를 붙입니다. 예제: |
아니요 |
‑‑startingIndex=INDEX
|
예제: |
아니요 |
‑‑outputManifest=FILENAME
|
S3DistCp에서 복사한 모든 파일의 목록을 포함하는 텍스트 파일(Gzip으로 압축됨)을 생성합니다. 예제: |
아니요 |
‑‑previousManifest=PATH
|
예제: |
아니요 |
‑‑requirePreviousManifest |
이전 S3DistCp 호출 중에 생성된 이전 매니페스트가 필요합니다. false로 설정된 경우 이전 매니페스트가 지정되지 않았을 때 오류가 발생하지 않습니다. 기본값은 true입니다. |
아니요 |
‑‑copyFromManifest
|
S3DistCp에서 파일 목록을 복사에서 제외하는 것이 아니라 복사할 파일 목록으로서 지정한 매니페스트 파일을 사용하도록 예제: |
아니요 |
‑‑s3Endpoint=ENDPOINT |
파일 업로드 시 사용할 Amazon S3 엔드포인트를 지정합니다. 이 옵션은 소스 및 대상 모두의 엔드포인트를 설정합니다. 설정하지 않은 경우 기본 엔드포인트는 예제: |
아니요 |
‑‑storageClass=CLASS |
대상이 Amazon S3일 때 사용할 스토리지 클래스입니다. 유효한 값은 STANDARD 및 REDUCED_REDUNDANCY입니다. 이 옵션을 지정하지 않은 경우 S3DistCp에서 스토리지 클래스를 보존합니다. 예제: |
아니요 |
‑‑srcPrefixesFile=PATH |
Amazon S3(s3://), HDFS(hdfs:///) 또는 로컬 파일 시스템(file:/)에 있는
예제: |
아니요 |
위의 옵션 외에도, S3DistCp는 도구 인터페이스
S3DistCp를 클러스터에 단계로 추가
클러스터에서 단계로 추가하여 S3DistCp를 호출할 수 있습니다. 콘솔, CLI 또는 API를 사용하여 시작 시 클러스터에 또는 실행 중인 클러스터에 단계를 추가할 수 있습니다. 다음 예제에서는 S3DistCp를 사용하여 실행 중인 클러스터에 추가하는 방법을 보여 줍니다. 클러스터에 단계를 추가하는 방법에 대한 자세한 내용은 Amazon EMR 관리 안내서에서 클러스터에 작업 제출을 참조하세요.
를 사용하여 실행 중인 클러스터에 S3DistCp 단계를 추가하려면 AWS CLI
에서 Amazon EMR 명령을 사용하는 방법에 대한 자세한 내용은 AWS CLI 명령 참조를 AWS CLI참조하세요.
-
S3DistCp를 호출하는 클러스터에 단계를 추가하려면 S3DistCp에서 복사 작업을 수행하는 방식을 지정하는 파라미터를 인수로 전달합니다.
다음 예제에서는 Amazon S3에서
hdfs:///output
으로 대몬(daemon) 로그를 복사합니다. 다음 명령을 실행합니다.-
‑‑cluster-id
는 클러스터를 지정합니다. -
Jar
은 S3DistCp JAR 파일의 위치입니다. command-runner.jar을 사용하여 클러스터에서 명령을 실행하는 방법의 예제는 사용자 지정 JAR 단계를 제출하여 스크립트 또는 명령 실행을 참조하세요. -
Args
는 S3DistCp로 전달할 옵션 이름-값 페어의 쉼표로 구분된 목록입니다. 사용 가능한 옵션의 전체 목록은 S3DistCp 옵션 단원을 참조하십시오.
S3DistCp 복사 단계를 실행 중인 클러스터에 추가하려면 Amazon S3 또는 로컬 파일 시스템에 저장된 JSON 파일(이 예제의 경우
)에 다음을 추가합니다.myStep.json
j-3GYXXXXXX9IOK
를 클러스터 ID로 바꾸고amzn-s3-demo-bucket
을 Amazon S3 버킷 이름으로 바꿉니다.[ { "Name":"S3DistCp step", "Args":["s3-dist-cp","‑‑s3Endpoint=s3.amazonaws.com","‑‑src=s3://amzn-s3-demo-bucket/logs/j-3GYXXXXXX9IOJ/node/","‑‑dest=hdfs:///output","‑‑srcPattern=.*[a-zA-Z,]+"], "ActionOnFailure":"CONTINUE", "Type":"CUSTOM_JAR", "Jar":"command-runner.jar" } ]
aws emr add-steps ‑‑cluster-id
j-3GYXXXXXX9IOK
‑‑steps file://./myStep.json -
예 Amazon S3에서 HDFS로 로그 파일 복사
이 예제에서는 실행 중인 클러스터에 단계를 추가하여 Amazon S3 버킷에 저장된 로그 파일을 HDFS로 복사하는 방법을 보여줍니다. 이 예제에서 ‑‑srcPattern
옵션은 복사된 데이터를 데몬 로그로 제한하는 데 사용됩니다.
‑‑srcPattern
옵션을 사용하여 Amazon S3에서 HDFS로 로그 파일을 복사하려면 Amazon S3 또는 로컬 파일 시스템에 저장된 JSON 파일(이 예제의 경우
)에 다음을 추가합니다. myStep.json
j-3GYXXXXXX9IOK
를 클러스터 ID로 바꾸고 amzn-s3-demo-bucket
을 Amazon S3 버킷 이름으로 바꿉니다.
[
{
"Name":"S3DistCp step",
"Args":["s3-dist-cp","‑‑s3Endpoint=s3.amazonaws.com","‑‑src=s3://amzn-s3-demo-bucket/logs/j-3GYXXXXXX9IOJ/node/","‑‑dest=hdfs:///output","‑‑srcPattern=.*daemons.*-hadoop-.*"],
"ActionOnFailure":"CONTINUE",
"Type":"CUSTOM_JAR",
"Jar":"command-runner.jar"
}
]