본문 바로가기

Storage&CDN/S3

Amazon S3 Region 간 데이터 복제

금일은 S3 리전 간 데이터 복제에 관해서 포스팅 하도록 하겠습니다.


1. Overview

해당 내용은 2016년 1월 7일 발표된 김상필 솔루션 아키텍트의 발표 자료에서 발췌한 내용(Tokyo -> Sydney)으로

발표 자료를 기반으로 Tokyo에서 Seoul로 테스트를 진행해보겠습니다.

(참조 - https://aws.amazon.com/ko/events/aws-cloud-ondemand)


2. Getting Started

기본적으로 S3 리전 간 혹은 IDC에서 S3 간 데이터 복제는 CLI를 이용하면 됩니다.


예시 : 

Source 버킷 : leedoing-tokyo, 지역 : Tokyo, 크기 : 9GB, 갯수 : 90

Target 버킷 : leedoing-seoul, 지역: Seoul

$aws s3 sync s3://leedoing-tokyo/ s3://leedoing-seoul/tokyo-sync/ --source-region ap-northeast-1 --region ap-northeast-2

복사하는데 약 16분이 소요 됐습니다. EC2 성능에 따라 결과 오차가 발생할 수 있을 듯 합니다.

저는 돈이 없어서 T시리즈를 사용했습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
copy: s3://leedoing-tokyo/dummy80 to s3://leedoing-seoul/tokyo-sync/dummy80
copy: s3://leedoing-tokyo/dummy81 to s3://leedoing-seoul/tokyo-sync/dummy81
copy: s3://leedoing-tokyo/dummy82 to s3://leedoing-seoul/tokyo-sync/dummy82
copy: s3://leedoing-tokyo/dummy83 to s3://leedoing-seoul/tokyo-sync/dummy83
copy: s3://leedoing-tokyo/dummy84 to s3://leedoing-seoul/tokyo-sync/dummy84
copy: s3://leedoing-tokyo/dummy85 to s3://leedoing-seoul/tokyo-sync/dummy85
copy: s3://leedoing-tokyo/dummy86 to s3://leedoing-seoul/tokyo-sync/dummy86
copy: s3://leedoing-tokyo/dummy87 to s3://leedoing-seoul/tokyo-sync/dummy87
copy: s3://leedoing-tokyo/dummy88 to s3://leedoing-seoul/tokyo-sync/dummy88
copy: s3://leedoing-tokyo/dummy89 to s3://leedoing-seoul/tokyo-sync/dummy89
copy: s3://leedoing-tokyo/dummy9 to s3://leedoing-seoul/tokyo-sync/dummy9
 
real    16m34.758s
user    0m5.648s
sys     0m0.256s

cs

이번에는 EMR s3distcp를 이용해서 데이터 복제를 실시해보겠습니다. 

(참고 - http://docs.aws.amazon.com/ko_kr/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_s3distcp.html)

현재 Frankfurt, Seoul 등 새로 발표된 Region의 S3는 Signature Version 4만 지원합니다.


기존 emr-s3distcp-1.0.jar의 경우 Signature Version 2를 사용하기 때문에 사용이 불가하네요.

(참고 - http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/UsingAWSSDK.html)


참고 URL을 통해 몇몇 방법을 시도 했는데 Fail이 떨어집니다. 아무래도 s3distcp.java 소스코드 수정이 필요한 듯 합니다.

일단 Tokyo -> Sydney의 경우 2 min 정도 속도가 나왔습니다. 해당 방법을 이용하면 Tokyo -> Seoul은 좀 더 빠르게 업로드가 가능할 듯 합니다. 일단 이번 블로깅은 여기서 끝내도록 하겠습니다. 거의 반나절 넘게 삽질을 했네요. (AWS 사람이 발표 중 해당 내용은 언급을 안 했다.)

1
aws emr add-steps --cluster-id j-11470OY7OI6Z0 --steps Type=CUSTOM_JAR,Name="S3DistCp step",Jar=/home/hadoop/lib/emr-s3distcp-1.0.jar,Args=["--src,s3://leedoing-seoul/","--dest,s3://leedoing-tokyo/"]
cs