Amazon EMR 클러스터에 대한 클러스터 스케일 다운 옵션 - Amazon EMR

Amazon EMR 클러스터에 대한 클러스터 스케일 다운 옵션

참고

Amazon EMR 릴리스 5.10.0 이후 스케일 다운 동작 옵션은 더 이상 지원되지 않습니다. Amazon EC2에 초당 요금이 도입됨에 따라 Amazon EMR 클러스터의 기본 스케일 다운 동작은 이제 작업 완료 시 종료됩니다.

Amazon EMR 릴리스 버전 5.1.0~5.9.1에서는 스케일 다운 동작으로 두 가지 옵션, 즉 Amazon EC2 청구의 인스턴스 시간 경계에서 종료하거나 작업 완료 시 종료하는 옵션이 제공됩니다. Amazon EMR 릴리스 버전 5.10.0부터는 Amazon EC2에 초당 요금 부과가 도입되면서 인스턴스 시간 경계에서 종료하는 설정은 더 이상 사용되지 않습니다. 이 옵션이 제공되는 버전에서는 인스턴스 시간 경계에서 종료를 지정하지 않는 것이 좋습니다.

주의

AWS CLI를 사용하여 EC2InstanceIdsToTerminate와 함께 modify-instance-groups를 실행하는 경우 이러한 인스턴스는 설정에 대한 문제 및 실행 중인 애플리케이션의 상태에 관계없이 즉시 종료됩니다. 이 방법으로 인스턴스를 종료하면 데이터 손실과 예기치 않은 클러스터 동작이 발생할 위험이 있습니다.

작업 완료 시 종료가 지정되면 Amazon EMR은 Amazon EC2 인스턴스를 종료하기 전에 거부 목록을 생성하고 노드에서 작업을 빼냅니다. 어떤 동작이 지정되든 Amazon EMR은 HDFS 손상을 초래할 수 있는 경우 코어 인스턴스 그룹에서 Amazon EC2 인스턴스를 종료하지 않습니다.

작업 완료 시 종료

Amazon EMR에서는 워크로드에 영향을 주지 않고 클러스터를 스케일 다운할 수 있습니다. Amazon EMR은 크기 조정 작업 중에 데이터 손실이나 작업 중단 없이 코어 및 태스크 노드의 YARN, HDFS 및 기타 대몬(daemon)을 정상적으로 서비스 해제합니다. Amazon EMR은 그룹에 할당된 작업이 완료되고 유휴 상태인 경우에만 인스턴스 그룹 크기를 줄입니다. YARN NodeManager의 단계적 서비스 해제에서는 노드의 서비스 해제를 기다리는 시간을 수동으로 조정할 수 있습니다.

이 시간은 YARN-site 구성 분류의 속성으로 설정합니다. Amazon EMR 릴리스 5.12.0 이상에서는 YARN.resourcemanager.nodemanager-graceful-decommission-timeout-secs 속성을 지정합니다. 이전 Amazon EMR 릴리스를 사용할 경우 YARN.resourcemanager.decommissioning.timeout 속성을 지정합니다.

폐기 시간 제한이 지났을 때 컨테이너 또는 YARN 애플리케이션이 계속 실행 중이면 강제로 노드를 폐기하고 YARN이 다른 노드에서 해당 컨테이너를 다시 예약합니다. 기본 값은 3,600초(1시간)입니다. 이 제한 시간을 임의로 높은 값으로 설정하면 단계적으로 축소될 때까지 더 오래 기다릴 수 있습니다. 자세한 내용은 Apache Hadoop 설명서에서 Graceful Decommission of YARN nodes를 참조하세요.

태스크 노드 그룹

Amazon EMR은 모든 단계 또는 애플리케이션과 관련해 실행 중인 작업이 없는 인스턴스를 지능적으로 선택하여 클러스터에서 해당 인스턴스를 먼저 제거합니다. 클러스터의 모든 인스턴스가 사용 중이면 Amazon EMR은 인스턴스에서 작업이 완료될 때까지 기다린 후 클러스터에서 해당 인스턴스를 제거합니다. 기본 대기 시간은 1시간입니다. 이 값은 YARN.resourcemanager.decommissioning.timeout 설정을 사용하여 변경할 수 있습니다. Amazon EMR은 새 설정을 동적으로 사용합니다. 이 값을 임의로 큰 수로 설정하여 Amazon EMR이 클러스터 크기를 줄이는 동안 작업을 종료하지 않도록 할 수 있습니다.

코어 노드 그룹

코어 노드에서 인스턴스 그룹을 줄이려면 YARN NodeManager 및 HDFS DataNode 대몬(daemon)을 모두 해제해야 합니다. YARN의 경우 단계적 축소를 사용하면 보류 중이거나 미완료 상태의 컨테이너 또는 애플리케이션이 없는 경우 폐기용으로 표시된 노드만 DECOMMISSIONED 상태로 전환됩니다. 폐기가 시작될 때 노드에 실행 중인 컨테이너가 없으면 폐기가 즉시 완료됩니다.

HDFS의 경우 단계적 축소를 사용하면 HDFS의 대상 용량이 기존의 모든 블록에 맞도록 충분히 큰지 확인합니다. 대상 용량이 충분히 크지 않으면 나머지 노드가 HDFS에 있는 현재 데이터를 처리할 수 있도록 코어 인스턴스의 일부분만 폐기됩니다. 추가 폐기를 허용하려면 추가 HDFS 용량을 확보해야 합니다. 또한 인스턴스 그룹을 줄이기 전에 쓰기 I/O를 최소화해야 합니다. 쓰기 I/O가 너무 과도하면 크기 조정 작업 완료가 지연될 수 있습니다.

또 다른 한계로, dfs.replication 내부의 기본 복제 인수(/etc/hadoop/conf/hdfs-site)가 있습니다. 클러스터를 생성할 대 Amazon EMR은 클러스터의 인스턴스 수를 기반으로 값을 구성합니다. 인스턴스가 1~3개 있는 클러스터의 경우 1, 4~9개가 있는 클러스터의 경우 2, 10개 이상이 있는 클러스터의 경우 3입니다.

주의
  1. 노드 수가 4개 미만인 클러스터에서 dfs.replication을 1로 설정하면 단일 노드가 중단된 경우 HDFS 데이터가 손실될 수 있습니다. 프로덕션 워크로드에는 코어 노드가 4개 이상 있는 클러스터를 사용하는 것이 좋습니다.

  2. Amazon EMR은 클러스터에서 코어 노드를 dfs.replication 미만으로 조정하는 허용하지 않습니다. 예를 들어, dfs.replication = 2인 경우 최소 코어 노드 수가 2개입니다.

  3. Managed Scaling, Auto Scaling을 사용하거나 클러스터 크기를 수동으로 조정하는 경우 dfs.replication을 2 이상으로 설정하는 것이 좋습니다.

단계적 축소에서는 코어 노드를 HDFS 복제 인수 이하로 줄일 수 없습니다. 복제본이 충분하지 않으므로 HDFS에서 파일을 닫을 수 있도록 하기 위해서입니다. 이 제한을 피하려면 복제 인수를 낮추고 NameNode 대몬(daemon)을 다시 시작합니다.