본문 바로가기

AWS

AWS EMR 클러스터 생성 시 Advanced Options 상세설명

반응형

EMR Cluster 를 Advanced Options 로 생성하면 아래와 같이 총 4단계의 과정을 거치게 됩니다.

  • Step 1 : Software and Steps
  • Step 2 : Hardware
  • Step 3 : General Cluster Settings
  • Step 4 : Security

아래는 각 단계별 옵션 값들에 대한 상세설명 내용입니다.


EMR 서비스 검색

  • AWS Console 에서 “EMR” 로 검색
  • EMR 클릭

 

  • 좌측 Clusters 메뉴 클릭
  • Create cluster 클릭

  • Go to advanced options 클릭


Step 1: Software and Steps

첫번째 단계에서는 EMR 클러스터의 S/W 버전과 클러스터 생성 후 실행할 Application 에 대한 설정(Optional)을 합니다.

Software Configuration

  • ‘22년 7월 기준 emr-6.7.0 이 가장 최신 버전 릴리즈
  • Hadoop 3.2.1 과 Spark 3.2.1 선택 (추가적으로 필요한 Software 선택)
  • Multiple master nodes (optional) 은 3개의 Master node 로 가용성을 높일 수 있는 클러스터 구성인데, EMR 클러스터의 특성 상 Compute 와 Storage 레이어가 분리되어 있으므로 굳이 체크하지 않습니다. (비용절약 측면)
  • AWS Glue Data Catalog settings (optional) 은 hive metastore 로 AWS Glue Data Catalog 를 사용할 것인지를 선택하는 것이다. AWS 에서는 Glue Data Catalog 에 통합된 메타데이터를 여러개의 EMR 클러스터나 QuickSight 와 같은 다양한 서비스에서 활용할 수 있으므로 사용하게된다면 여러가지 장점이 있습니다. 체크를 합니다.
  • Edit software settings 는 EMR 클러스터의 설정값 세팅을 하는 부분인데, 사전에 설정 파일을 S3 에 넣어두고 해당 경로의 json 파일을 선택합니다. 어떤 S/W 를 선택했느냐에 따라서 추가해 주어야할 설정이 달라집니다.

아래는 Hadoop 과 Spark 만 선택한 경우의 예제 입니다.

외부 데이터베이스 구성이 필요한 서비스

  • Software 선택을 하게되는 경우 외부 데이터베이스 구성이 필요한 서비스는 아래와 같습니다. 
    • Hive - 외부 Metastore 필요, Glue Data Catalog 를 사용할 수도 있음
    • Hue - 외부 Database 필요, Hue 를 선택하면 Oozie 를 내장하고 있기 때문에, 별도로 Oozie 를 선택할 필요가 없음
    • Oozie - 외부 Database 필요
    • Presto - 외부 Hive metastore 필요, Presto 를 선택하면 YARN 의 컨트롤을 받지 않는 쿼리 엔진이 구동되기 때문에 전체 메모리를 반반씩 나눠쓰게 됩니다. Presto 엔진이 필요하다면, 별도의 EMR 클러스터를 Presto 전용으로 띄우는 것이 좋습니다.

Step (Optional)

  • 클러스터가 실행되고 바로 실행하고자 하는 Step 을 옵션으로 추가할 수 있습니다. (주로 Transient Cluster 에서 사용하며, Persistent Cluster 는 사용하지 않습니다.)
  • 클러스터가 실행된 뒤 여러개의 Job 을 동시에 실행하려면 Concurrency 체크
  • After last step completes
    • Clusters enters waiting state : 모든 Step 이 완료되면 Cluster 는 Waiting 상태가 됩니다.
    • Cluster auto-terminates : 모든 Step 이 완료되면 자동으로 Cluster 를 종료합니다.
  • 실제 클러스터 구현에서는 CLI 를 사용할 예정이기 때문에, 여기서는 그냥 Next 버튼을 클릭합니다.


Step 2: Hardware

두번째 단계에서는 EMR 클러스터의 인스턴스 유형 등 하드웨어에 대한 설정을 합니다.

Cluster Composition

  • 클러스터 구성은 아래 두가지 옵션 중 하나를 선택해야 합니다.
    • Uniform instance group
    • Instance fleets
일반적인 프로덕션 환경에서는 Instance fleets 유형으로 생성을 하는 것이 유리하다고 판단하기 때문에 아래의 옵션 설명은 Instance fleets 유형으로 진행합니다. (이 부분은 필자의 개인적인 의견 입니다.)

Networking

  • VPC 와 적절한 Subnet 을 선택합니다.
  • 선택한 subnet 에 생성되는 EMR Cluster 에서 인터넷을 경유하지 않고, S3 에 접근하는 것이 좋기 때문에 S3 endpoint 가 추가되어 있지 않은 경우 아래와 같이 추가하라는 문구가 뜹니다. (사전에 EMR 을 띄우는 서브넷에 S3 endpoint 를 만들어 두었으면 그냥 진행할 수 있습니다.)
  • Add S3 endpoint 클릭

  • Add S3 endpoint 를 클릭하면 아래와 같이 서브넷 설정을 할 수 있습니다.
  • NAT instance 가 필요하다면 아래와 같이 설정 후 Configure 클릭, 필요 없다면 Proceed without NAT instance 선택합니다.

 

Allocation Strategy

  • 클러스터를 실행하는 단계에서 가장 비용 효율적인 인스턴스를 추천합니다.

Cluster Nodes and Instances

  • EMR 클러스터의 비용 관리에서 가장 중요한 부분이 Node Type 선정 관련 부분입니다.
  • 선택할 수 있는 Node type 은 아래와 같이 3가지 유형이 있습니다.
    • Master
      마스터 데몬들이 뜨는 노드이며 On-Demand 로 띄워야하고, Fleet instance type 인 경우 하나의 노드만 구동됩니다.
    • Core
      EBS 에 HDFS 를 가지는 노드입니다. Application 을 수행하면서 생성되는 temporary files 들이 EBS 에 write 되는 노드이며, 클러스터 구성 시 반드시 필요한 노드 유형 입니다. EMR 6.0 이후 부터는 YARN 에 새로운 Job 이 제출되었을 때 실행되는 Application Master 가 Core 노드유형과 Task 노드유형 두가지 모두에 실행될 수 있도록 변경이 되었습니다. 
    • Task
      EBS 에 HDFS 를 가지지 않는 노드 입니다. Task 수행만 하는 노드이며 비용 효율적으로 운영하기 위해서 가능하면 Spot 인스턴스 유형으로 생성하는 것이 좋습니다.
  • 클러스터를 구동하면, MasterCoreTask 노드 순으로 프로비저닝 됩니다.
  • Core Node 구동이 완료된 순간 부터 제출된 Application 이 있다면 Job 을 처리하기 시작합니다.
  • Task 노드는 Job 을 처리하는 과정에서 클러스터의 멤버로 추가되어도 무방합니다. 

  • 위 설정의 경우, Core 노드의 Target capacityOn-demand units 240 개Spot units 240 개를 설정했기 때문에, 선택한 instance type 2개 (r5a.12xlarge, r5.12xlarge) 중에서 가격이 더 싼 instance 부터 조합하여, 총 480 units 을 구성하게 됩니다.
  • Core 노드의 경우에는 Spot units 으로만 전체 units 을 구성할 수 없습니다. 반드시 On-demand units 을 설정해야 합니다.
  • Task 노드의 경우에는 Spot units 으로만 240개를 설정했기 때문에, 선택한 instance type 4개 (m5a.24xlarge, m5.24xlarge, r5a.12xlarge, r5.12xlarge) 중 가격이 더 싼 instance 부터, 총 240개의 units을 조합하여 노드를 구성하게 됩니다.
  • Task 노드의 경우에도 On-demand units 을 필수적으로 구성을 해야하기 때문에 위 화면캡처 그대로 클러스터 구성을 실행할 수는 없습니다.

Advanced Spot options

  • 2개의 Advanced Spot options 중 Defined duration 은 예전에 지원되던 옵션이며, Spot 유형으로 확보된 인스턴스를 일정 시간동안 뺏기지 않을 수 있는 설정이었는데, 현재는 더이상 지원하지 않는 옵션입니다. (지원되던 시점에 이 옵션으로 생성된 클러스터만 해당 옵션이 유효)
  • Provisioning timeout 은 Spot 인스턴스로 클러스터 생성 시, 프로비저닝에 실패하고 클러스터가 구성되지 않았을 경우 선택할 수 있는 후속 액션이며, 다음과 같은 2개의 옵션이 있습니다.
    • Terminate Cluster : 클러스터를 종료해버리는 옵션입니다.
    • Switch to On-Demand Instances : 온디멘드 인스턴스로 전환하여 클러스터를 구동하는 옵션입니다.’
  • 위 설정에서는 Spot 인스턴스로 노드가 구성되지 않은 경우, 20분 뒤에 온디맨드 인스턴스로 노드를 구성하게 된다.

Cluster scaling

  • Cluster scaling 을 체크하면 정해둔 최소값과 최대값 사이에서 자동으로 Auto scaling 이 적용된다.

 

  • 아래 화면에서 우측 편집 버튼을 클릭

  • 아래와 같은 팝업 윈도우가 뜹니다.

  • 위 화면에서의 Default-scale-out-1 조건은, 5분(300초) 동안 YARN 의 메모리 가용비율(YARNMemoryAvailablePercentage)이 15% 이하로 떨어지면 1개의 인스턴스가 추가됩니다.
  • 두번째 Default-scale-out-2 조건은, 5분(300초)컨테이너의 Pending 비율(ContainerPendingRatio)이 75% 이상 유지되는 경우 1개의 인스턴스가 추가됩니다.
  • 아래쪽 + Add rule 을 통해 원하는 조건을 더 추가할 수 있습니다.

EBS Root Volume

  • EBS root volume 에는 OS 가 설치되는 영역입니다.
  • 디폴트값은 10 GiB
  • Next 클릭

Step 3: General Cluster Settings

3번째 단계에서는 클러스터 이름과 태그 정보 등 일반적인 설정을 합니다.

General Options

  • Cluster name : 생성하게될 클러스터 이름을 지정합니다.
  • Logging : 체크하면 클러스터 로그를 저장할 S3 위치를 지정하여 로그를 남길 수 있습니다.
  • Log encription : 체크하면 S3 에 저장되는 로그에 암호화 알고리즘을 적용하여 로그를 남길 수 있습니다.
  • Debugging : 로그를 저장한 경우 체크를 할 수 있습니다. 디버깅을 체크하면 콘솔 디버깅 기능이 활성화 됩니다.
  • Termination Protection : EMR 클러스터가 실수로 종료되지 않도록 종료 기능을 끄는 기능입니다. 클러스터를 종료 시키고자 할 때는 이 기능을 해제하고나서 EMR 클러스터를 종료해야 합니다.

Tags

  • 원하는 Key 와 Value 값을 태그로 입력합니다.

Additional Options

  • EMRFS consistent view : 예전에는 S3 가 Strong Consistency 를 지원하지 않았기 때문에 필요했던 옵션입니다. 하지만 지금은 모든 AWS EMR 클러스터에서 Strong Consistency 를 지원하기 때문에 더이상 필요하지 않는 옵션입니다. (곧 UI 에서 사라질 것으로 예상)

Operationg System Options

  • Amazon Linux Release : OS 릴리즈 버전을 선택합니다.
  • Custom AMI ID : 클러스터 생성 시 사용할 Custom AMI 가 있다면 선택하는 옵션입니다.

Bootstap Options

  • Add bootstrap action : 클러스터 구동 후 실행할 스크립트 등을 지정하는 옵션입니다.

 


Step 4: Security

4번째 단계에서는 키페어와 권한 설정 등, EMR 클러스터의 보안과 관련된 설정을 합니다.

Security Options

  • EC2 key pair : EMR 클러스터로 구동된 EC2 인스턴스에서 사용할 키페어를 선택합니다.
  • EMR role : EMR 클러스터에 부여할 IAM role 을 선택합니다. 필요에 따라 Custom role 을 설정해 줄 수 있으며, 기본값은 EMR_DefaultRole 입니다.
  • EC2 instance profile : EMR 클러스터의 EC2 인스턴스가 S3 나 DynamoDB 와 같은 서비스에 접근할 수 있도록 설정해주는 프로파일 입니다.
  • Auto Scaling role : 오토 스케일링 룰이 트리거 되었을 때, EC2 를 추가하거나 종료할 수 있는 롤 입니다.

Security Configuration

  • Security configuration : EMR 클러스터의 인증이나 암호화 관련된 설정을 선택하는 옵션입니다.

EC2 security groups

  • Master, Core & Task, Service Access(Subnet) 에서 사용할 Security Group 을 설정하는 옵션입니다.

마치며...

AWS Console 에서 EMR 클러스터를 생성할 때 알아야할 옵션에 대해서 정리해 보았습니다. 워크로드에 맞는 적합한 EMR Cluster 생성에 도움이 되셨으면 좋겠습니다. 부족하거나 틀린 부분이 있다면 댓글로 남겨주시길 부탁드립니다.

긴 글 읽어주셔서 감사합니다.

반응형