for Amazon S3AWS PrivateLink 용 를 사용하여 온프레미스 Hadoop 환경에서 Amazon S3 DistCp 로 데이터 마이그레이션 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

for Amazon S3AWS PrivateLink 용 를 사용하여 온프레미스 Hadoop 환경에서 Amazon S3 DistCp 로 데이터 마이그레이션

작성자: Jason Owens(AWS), Andres Cantor(AWS), Jeff Klopfenstein(AWS), Bruno Rocha Oliveira(AWS) 및 Samuel Schmidt(AWS)

환경: 프로덕션

소스: Hadoop

대상: 전부

R 유형: 리플랫포밍

워크로드: 오픈 소스

기술: 스토리지 및 백업, 분석

AWS 서비스: Amazon S3, Amazon EMR

이 패턴은 Amazon Simple Storage Service(Amazon S3AWS)AWS PrivateLink 용 DistCp와 함께 Apache 오픈 소스 도구를 사용하여 온프레미스 Apache Hadoop 환경에서 Amazon Web Services() 클라우드로 거의 모든 양의 데이터를 마이그레이션하는 방법을 보여줍니다. 퍼블릭 인터넷 또는 프록시 솔루션을 사용하여 데이터를 마이그레이션하는 대신 를 사용하여 AWS PrivateLink Amazon S3에서 온프레미스 데이터 센터와 Amazon Virtual Private Cloud(Amazon) 간의 프라이빗 네트워크 연결을 통해 Amazon S3로 데이터를 마이그레이션할 수 있습니다VPC. Amazon Route 53의 DNS 항목을 사용하거나 온프레미스 Hadoop 클러스터의 모든 노드에 있는 /etc/hosts 파일의 항목을 추가하면 올바른 인터페이스 엔드포인트로 자동 연결됩니다.

이 가이드에서는 데이터를 AWS Cloud DistCp 로 마이그레이션하는 데 를 사용하는 방법을 설명합니다. DistCp 는 가장 일반적으로 사용되는 도구이지만 다른 마이그레이션 도구를 사용할 수 있습니다. 예를 들어 AWS Snowball 또는 SnowmobileAWS과 같은 오프라인 AWS 도구 또는 AWS Storage Gateway 또는 와 같은 온라인 AWS 도구를 사용할 수 있습니다AWS DataSync. 또한 Apache NiFi와 같은 다른 오픈 소스 도구를 사용할 수 있습니다.

사전 조건 

  • 온프레미스 데이터 센터와 AWS 클라우드 간에 프라이빗 네트워크가 연결된 활성 AWS 계정

  • Hadoop , 를 사용하여 온프레미스에 설치 DistCp

  • Hadoop 분산 파일 시스템(HDFS)의 마이그레이션 데이터에 액세스할 수 있는 Hadoop 사용자

  • AWS 명령줄 인터페이스(AWS CLI), 설치구성

  • 객체를 S3 버킷에 넣을 수 있는 권한

제한 사항

가상 프라이빗 클라우드(VPC) 제한은 Amazon S3에 대해 AWS PrivateLink 에 적용됩니다. 자세한 내용은 인터페이스 엔드포인트 속성, 제한AWS PrivateLink 할당량(AWS PrivateLink 문서)을 참조하세요.

AWS PrivateLink for Amazon S3는 다음을 지원하지 않습니다.

소스 기술 스택  

  • 가 DistCp 설치된 Hadoop 클러스터

대상 기술 스택

  • Amazon S3

  • Amazon VPC

대상 아키텍처 

Hadoop 클러스터는 Direct Connect를 통해 온프레미스 환경에서 S3로 데이터를 DistCp 복사합니다.

다이어그램은 Hadoop 관리자가 를 사용하여 AWS Direct Connect와 같은 프라이빗 네트워크 연결을 통해 온프레미스 환경에서 Amazon S3 인터페이스 엔드포인트를 통해 Amazon S3로 데이터를 DistCp 복사하는 방법을 보여줍니다.

AWS 서비스

  • AWS Identity and Access Management(IAM)는 AWS 리소스에 대한 액세스를 인증하고 사용할 수 있는 권한을 부여받은 사용자를 제어하여 리소스에 대한 액세스를 안전하게 관리하는 데 도움이 됩니다.

  • Amazon Simple Storage Service(S3)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.

  • Amazon Virtual Private Cloud(Amazon VPC)를 사용하면 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있습니다. 이 가상 네트워크는 자체 데이터 센터에서 운영할 기존 네트워크와 유사하며 확장 가능한 인프라를 사용하면 이점이 있습니다AWS.

기타 도구

  • Apache Hadoop DistCp(배포된 사본)은 클러스터 간 및 클러스터 내 대용량을 복사하는 데 사용되는 도구입니다. 는 Apache를 배포, 오류 처리 및 복구, 보고 MapReduce 에 DistCp 사용합니다.

작업설명필요한 기술

Amazon S3용 AWS PrivateLink 에 대한 엔드포인트를 생성합니다.

  1. AWS 관리 콘솔에 로그인하고 Amazon VPC 콘솔 을 엽니다.

  2. 탐색 창에서 엔드포인트를 선택하고 엔드포인트 생성을 선택합니다.

  3. 서비스 범주(Service category)에서 AWS 서비스를 선택합니다.

  4. 검색 상자에 s3을 입력하고 Enter를 누릅니다.

  5. 검색 결과에서 유형 열의 값이 인터페이스com.amazonaws.<your-aws-region>.s3 서비스 이름을 선택합니다.

  6. 에서 를 VPC선택합니다VPC. 서브넷에는 사용자의 서브넷을 선택합니다.

  7. 보안 그룹 에서 TCP 443을 허용하는 보안 그룹을 선택하거나 생성합니다.

  8. 요구 사항에 따라 태그를 추가한 다음, 엔드포인트 생성을 선택합니다.

AWS 관리자

엔드포인트를 확인하고 DNS 항목을 찾습니다.

  1. Amazon VPC 콘솔 을 열고 엔드포인트 를 선택한 다음 이전에 생성한 엔드포인트를 선택합니다.

  2. 세부 정보 탭에서 DNS 이름의 첫 번째 DNS 항목을 찾습니다. 이 항목은 리전 DNS 항목입니다. 이 DNS 이름을 사용하면 가 가용 영역에 해당하는 DNS 항목 간에 번갈아 요청합니다.

  3. 서브넷 탭을 선택합니다. 각 가용 영역에서 엔드포인트의 탄력적 네트워크 인터페이스 주소를 찾을 수 있습니다.

AWS 관리자

방화벽 규칙 및 라우팅 구성을 확인합니다.

방화벽 규칙이 열려 있고 네트워킹 구성이 올바르게 설정되었는지 확인하려면 텔넷을 사용하여 포트 443에서 엔드포인트를 테스트하십시오. 예:

$ telnet vpce-<your-VPC-endpoint-ID>.s3.us-east-2.vpce.amazonaws.com 443 Trying 10.104.88.6... Connected to vpce-<your-VPC-endpoint-ID>.s3.us-east-2.vpce.amazonaws.com. ... $ telnet vpce-<your-VPC-endpoint-ID>.s3.us-east-2.vpce.amazonaws.com 443 Trying 10.104.71.141... Connected to vpce-<your-VPC-endpoint-ID>.s3.us-east-2.vpce.amazonaws.com.

참고 : 리전 항목을 사용하는 경우 테스트에 성공하면 DNS가 Amazon VPC 콘솔에서 선택한 엔드포인트의 서브넷 탭에서 볼 수 있는 두 IP 주소 간에 번갈아가며 표시되는 것으로 나타납니다.

네트워크 관리자, AWS 관리자

이름 풀이를 구성합니다.

Hadoop이 Amazon S3 인터페이스 엔드포인트에 액세스할 수 있도록 이름 풀이를 구성해야 합니다. 엔드포인트 이름 자체는 사용할 수 없습니다. 대신, <your-bucket-name>.s3.<your-aws-region>.amazonaws.com 또는 *.s3.<your-aws-region>.amazonaws.com을 해결해야 합니다. 이 이름 지정 제한 사항에 대한 자세한 내용은 Hadoop S3A 클라이언트 소개(Hadoop 웹사이트)를 참고하십시오.

다음 구성 옵션 중 하나를 선택합니다.

  • 온프레미스DNS를 사용하여 엔드포인트의 프라이빗 IP 주소를 확인합니다. 모든 버킷 또는 선택한 버킷의 동작을 재정의할 수 있습니다. 자세한 내용은 (DNS 블로그 게시물)을 사용하여 Amazon S3에 대한 보안 하이브리드 액세스의 “옵션 2: 도메인 이름 시스템 응답 정책 영역(AWS RPZ)을 사용하여 Amazon S3에 액세스”를 참조하세요. Amazon S3 AWS PrivateLink

  • 의 해석기 인바운드 엔드포인트로 트래픽을 조건부로 전달DNS하도록 온프레미스를 구성합니다VPC. 트래픽은 Route 53으로 전달됩니다. 자세한 내용은 (AWS 블로그 게시물)을 사용하여 Amazon S3에 대한 보안 하이브리드 액세스의 “옵션 3: Amazon Route 53 Resolver 인바운드 엔드포인트를 사용하여 온프레미스에서 DNS 요청 전달”을 참조하세요. Amazon S3 AWS PrivateLink

  • Hadoop 클러스터의 모든 노드에서 /etc/hosts 파일을 편집합니다. 이는 테스트용 임시 솔루션이므로 프로덕션에는 권장되지 않습니다. /etc/hosts 파일을 편집하려면 <your-bucket-name>.s3.<your-aws-region>.amazonaws.com 또는 s3.<your-aws-region>.amazonaws.com에 대한 항목을 추가하십시오. /etc/hosts 파일은 한 항목에 대해 여러 IP 주소를 가질 수 없습니다. 가용 영역 중 하나에서 단일 IP 주소를 선택해야 하며, 이 경우 단일 장애 지점이 됩니다.

AWS 관리자

Amazon S3에 대한 인증을 구성합니다.

Hadoop을 통해 Amazon S3에 인증하려면 임시 역할 보안 인증 정보를 Hadoop 환경으로 내보내는 것을 권장합니다. 자세한 내용은 S3를 사용한 인증(Hadoop 웹사이트)을 참고하십시오. 장기 실행 작업의 경우, 사용자를 생성하고 S3 버킷에만 데이터를 넣을 권한이 있는 정책을 할당할 수 있습니다. 액세스 키와 보안 키는 Hadoop에 저장할 수 있으며 작업 DistCp 자체와 Hadoop 관리자만 액세스할 수 있습니다. 암호 저장에 대한 자세한 내용은 Hadoop 보안 인증 정보 공급자를 통한 암호 저장(Hadoop 웹사이트)을 참고하십시오. 다른 인증 방법에 대한 자세한 내용은 AWS IAM Identity Center 설명서(AWSSingle Sign-On 후속 버전)의 AWS 계정에 대한 CLI 액세스와 함께 사용할 IAM 역할의 자격 증명을 가져오는 방법을 참조하세요.

임시 보안 인증 정보를 사용하려면 보안 인증 정보 파일에 임시 보안 인증 정보를 추가하거나 다음 명령을 실행하여 보안 인증 정보를 사용자 환경으로 내보내십시오.

export AWS_SESSION_TOKEN=SECRET-SESSION-TOKEN export AWS_ACCESS_KEY_ID=SESSION-ACCESS-KEY export AWS_SECRET_ACCESS_KEY=SESSION-SECRET-KEY

기존 액세스 키와 비밀 키 조합을 사용하는 경우 다음 명령을 실행하십시오.

export AWS_ACCESS_KEY_ID=my.aws.key export AWS_SECRET_ACCESS_KEY=my.secret.key

참고: 액세스 키와 보안 키 조합을 사용하는 경우 DistCp 명령에서 자격 증명 공급자를 에서 "org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider"로 변경합니다"org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider".

AWS 관리자

를 사용하여 데이터를 전송합니다 DistCp.

DistCp 를 사용하여 데이터를 전송하려면 다음 명령을 실행합니다.

hadoop distcp -Dfs.s3a.aws.credentials.provider=\ "org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider" \ -Dfs.s3a.access.key="${AWS_ACCESS_KEY_ID}" \ -Dfs.s3a.secret.key="${AWS_SECRET_ACCESS_KEY}" \ -Dfs.s3a.session.token="${AWS_SESSION_TOKEN}" \ -Dfs.s3a.path.style.access=true \ -Dfs.s3a.connection.ssl.enabled=true \ -Dfs.s3a.endpoint=s3.<your-aws-region>.amazonaws.com \ hdfs:///user/root/ s3a://<your-bucket-name>

참고 : Amazon S3에 AWS PrivateLink 대해 와 함께 DistCp 명령을 사용하면 엔드포인트의 AWS 리전이 자동으로 검색되지 않습니다. Hadoop 3.3.2 이상 버전은 S3 버킷의 AWS 리전을 명시적으로 설정하는 옵션을 활성화하여 이 문제를 해결합니다. 자세한 내용은 S3A를 참조하여 fs.s3a.endpoint.region 옵션을 추가하여 AWS 리전을 설정합니다(Hadoop 웹 사이트).

추가 S3A 공급자에 대한 자세한 내용은 일반 S3A 클라이언트 구성(Hadoop 웹사이트)을 참고하십시오. 예를 들어, 암호화를 사용하는 경우 암호화 유형에 따라 위의 명령 시리즈에 다음 옵션을 추가할 수 있습니다.

-Dfs.s3a.server-side-encryption-algorithm=AES-256 [or SSE-C or SSE-KMS]

참고: S3A 에서 인터페이스 엔드포인트를 사용하려면 인터페이스 엔드포인트에 대한 S3 리전 이름(예: s3.<your-aws-region>.amazonaws.com)에 대한 DNS별칭 항목을 생성해야 합니다. 지침은 Amazon S3에 대한 인증 구성 섹션을 참고하십시오. 이 해결 방법은 Hadoop 3.3.2 이하 버전에 필요합니다. S3A의 이후 버전에서는 이 해결 방법이 필요하지 않습니다.

Amazon S3에 서명 문제가 있는 경우, Signature Version 4(SigV4) 서명을 사용하는 옵션을 추가합니다.

-Dmapreduce.map.java.opts="-Dcom.amazonaws.services.s3.enableV4=true"
마이그레이션 엔지니어, AWS 관리자