AWS Glue를 사용하여 데이터 내보내기 - AWS 권장 가이드

AWS Glue를 사용하여 데이터 내보내기

빅 데이터 시나리오를 위한 서버리스 분석 서비스인 AWS Glue를 사용하여 MySQL 데이터를 Amazon S3에 아카이브할 수 있습니다. AWS Glue는 많은 데이터베이스 소스를 지원하는 널리 사용되는 분산 클러스터 컴퓨팅 프레임워크인 Apache Spark로 구동됩니다.

데이터베이스에서 Amazon S3로 아카이브된 데이터의 오프로드는 AWS Glue 작업에서 몇 줄의 코드로 수행할 수 있습니다. AWS Glue가 제공하는 가장 큰 이점은 수평 확장성과 종량제 모델로 운영 효율성과 비용 최적화를 제공한다는 점입니다.

다음 다이어그램에서는 데이터베이스 아카이빙을 위한 기본 아키텍처를 보여줍니다.

데이터 아카이브를 위한 5단계 프로세스.
  1. MySQL 데이터베이스는 Amazon S3에서 오프로드할 아카이브 또는 백업 테이블을 생성합니다.

  2. AWS Glue 작업은 다음 방법 중 하나에 의해 시작됩니다.

  3. DB 자격 증명은 AWS Secrets Manager에서 검색됩니다.

  4. AWS Glue 작업은 Java Database Connectivity(JDBC) 연결을 사용하여 데이터베이스에 액세스하고 테이블을 읽습니다.

  5. AWS Glue는 공간을 절약하는 개방형 열 기반 데이터 형식인 Parquet 형식으로 Amazon S3에 데이터를 씁니다.

AWS Glue 작업 구성

의도한 대로 작동하려면 AWS Glue 작업에 다음 구성 요소 및 구성이 필요합니다.

  • AWS Glue 연결 - 데이터베이스에 액세스하기 위해 작업에 연결하는 AWS Glue Data Catalog 객체입니다. 작업은 여러 데이터베이스에 대한 직접 호출을 위해 여러 연결을 보유할 수 있습니다. 연결에는 안전하게 저장된 데이터베이스 자격 증명이 포함됩니다.

  • GlueContext - SparkContext의 사용자 지정 래퍼입니다. GlueContext 클래스는 Amazon S3 및 데이터베이스 소스와 상호 작용하기 위해 고차 API 작업을 제공합니다. 이를 통해 Data Catalog와 통합할 수 있습니다. 그러면 Glue 연결 내에서 처리되는 데이터베이스 연결을 위해 드라이버에 의존하지 않아도 됩니다. 또한 GlueContext 클래스는 원래 SparkContext 클래스에서는 불가능한 Amazon S3 API 작업을 처리하는 방법도 제공합니다.

  • IAM 정책 및 역할 - AWS Glue는 다른 AWS 서비스와 상호 작용하므로 필요한 최소 권한으로 적절한 역할을 설정해야 합니다. AWS Glue와 상호 작용하기 위해 적절한 권한이 필요한 서비스는 다음과 같습니다.

    • Amazon S3

    • AWS Secrets Manager

    • AWS Key Management Service (AWS KMS)

모범 사례

  • 오프로드할 행 수가 많은 전체 테이블을 읽으려는 경우 기본 라이터 인스턴스의 성능을 저하시키지 않고 읽기 복제본 엔드포인트를 사용하여 읽기 처리량을 늘리는 것이 좋습니다.

  • 작업 처리에 사용되는 노드 수에서 효율성을 달성하려면 AWS Glue 3.0에서 오토 스케일링을 켭니다.

  • S3 버킷이 데이터 레이크 아키텍처의 일부인 경우 데이터를 물리적 파티션으로 구성하여 오프로드하는 것이 좋습니다. 파티션 스키마는 액세스 패턴을 기반으로 해야 합니다. 날짜 값에 기반한 분할이 가장 권장되는 사례 중 하나입니다.

  • 데이터를 Parquet 또는 Optimized Row Columnar(ORC)와 같은 개방형 형식으로 저장하면 Amazon Athena 및 Amazon Redshift와 같은 다른 분석 서비스에서 데이터를 사용할 수 있습니다.

  • 다른 분산 서비스에서 오프로드된 데이터 읽기를 최적화하려면 출력 파일 수를 제어해야 합니다. 많은 수의 작은 파일보다 적은 수의 더 큰 파일을 갖는 것이 대부분 항상 유용합니다. Spark에는 파트 파일 생성을 제어하는 기본 제공 구성 파일 및 메서드가 있습니다.

  • 정의에 따라 아카이브된 데이터는 자주 액세스하는 데이터세트입니다. 스토리지의 비용 효율성을 달성하려면 Amazon S3 클래스를 보다 저렴한 계층으로 이전해야 합니다. 두 가지 접근 방식을 사용하여 수행할 수 있습니다.

    • 오프로드 중 계층의 동기식 이전 - 오프로드된 데이터를 프로세스 중에 이전해야 한다는 점을 미리 알고 있는 경우 Amazon S3에 데이터를 쓰는 동일한 AWS Glue 작업 내에서 GlueContext 메커니즘 transition_s3_path를 사용할 수 있습니다.

    • S3 수명 주기를 사용하여 비동기식 이전 - Amazon S3 스토리지 클래스 이전 및 만료에 적합한 파라미터를 사용하여 S3 수명 주기 규칙을 설정합니다. 버킷에서 이를 구성하면 영구적으로 유지됩니다.

  • 데이터베이스가 배포되는 가상 프라이빗 클라우드(VPC) 내에서 충분한 IP 주소 범위의 서브넷을 생성하고 구성합니다. 그러면 많은 데이터 처리 장치(DPU)가 구성될 때 네트워크 주소 수가 부족하여 AWS Glue 작업이 실패하는 것을 방지할 수 있습니다.