Amazon EMR에서 비정상 노드 교체 - Amazon EMR

Amazon EMR에서 비정상 노드 교체

Amazon EMR은 주기적으로 Apache Hadoop의 NodeManager 상태 확인 서비스를 사용하여 Amazon EMR on Amazon EC2 클러스터에서 코어 노드 상태를 모니터링합니다. 노드가 최적 상태로 작동하지 않을 경우, 해당 노드는 비정상 상태로 표시되며 상태 검사기는 해당 노드를 Amazon EMR 컨트롤러에 보고합니다. Amazon EMR 컨트롤러는 노드를 거부 목록에 추가하여 노드 상태가 개선될 때까지 노드가 새 YARN 애플리케이션을 수신하지 못하도록 합니다.

참고

노드가 비정상인 일반적인 이유는 디스크 공간이 부족하기 때문입니다. 코어 노드의 디스크 공간이 거의 부족한 경우에 대한 자세한 내용은 다음 re:Post Knowledge Center 문서를 참조하세요. Amazon EMR 클러스터의 코어 노드에 디스크 공간이 부족한 이유는 무엇입니까?

참고

Hadoop은 사용자 지정 노드 상태 확인을 실행할 수 있는 기능을 제공합니다. 이는 NodeManager의 Apache Hadoop 설명서에 자세히 설명되어 있습니다.

Amazon EMR이 비정상 노드를 종료할지 또는 클러스터에서 유지할지 선택할 수 있습니다. 비정상 노드 교체를 끄면 비정상 노드가 거부 목록에 남아 있고 클러스터 용량에 계속 포함됩니다. 구성 및 복구를 위해 Amazon EC2 코어 인스턴스에 계속 연결할 수 있으므로 용량을 추가하고자 하는 경우 클러스터 크기를 조정할 수 있습니다. 노드 교체 및 종료 작동 방식에 대한 자세한 내용은 종료 방지 사용을 참조하세요.

비정상 노드 교체가 켜져 있는 경우 Amazon EMR은 비정상 코어 노드를 종료하고 인스턴스 그룹의 인스턴스 수 또는 인스턴스 플릿의 목표 용량에 따라 새 인스턴스를 프로비저닝합니다. 어떤 노드라도 45분 이상 비정상 상태인 경우 Amazon EMR은 노드를 정상적으로 교체합니다. 노드의 정상 해제가 1시간 이내에 완료되지 않으면 노드가 강제로 종료됩니다. 단, 노드를 종료하면 클러스터가 복제 인수 또는 HDFS 용량 제약 조건 미만으로 감소합니다.

중요

노드가 정상적으로 해제되거나 종료되기까지 걸리는 시간은 변경될 수 있습니다.

비정상 노드 교체는 데이터 손실 가능성을 크게 완화하지만 위험을 완전히 제거하는 것은 아닙니다. 비정상 코어 인스턴스를 정상적으로 교체하는 동안 HDFS 데이터가 영구적으로 손실될 수 있습니다. 항상 데이터를 백업하는 것이 좋습니다.

비정상 노드 식별 및 복구에 대한 자세한 내용은 리소스 오류를 참조하세요. 또한 클러스터의 상태를 유지하기 위해 따를 수 있는 모범 사례는 다음 설명서에서 리소스 오류 Amazon EMR 클러스터가 NO_SLAVE_LEFT로 종료되고 코어 노드가 FAILED_BY_MASTER로 종료됨을 참조하세요.

Amazon EMR은 비정상 노드 교체를 위해 Amazon CloudWatch Events를 게시하므로 비정상 코어 인스턴스에서의 상황을 추적할 수 있습니다. 자세한 내용은 비정상 노드 교체 이벤트를 참조하세요.

기본 노드 교체 및 종료 방지 설정

비정상 노드 교체는 모든 Amazon EMR 릴리스에서 사용할 수 있지만 기본 설정은 선택한 릴리스 레이블에 따라 달라집니다. 새 클러스터를 생성하는 경우 비정상 노드 교체를 구성하거나 언제든지 클러스터 구성으로 이동하여 이러한 설정을 변경할 수 있습니다.

Amazon EMR 릴리스 7.0 이하를 실행하는 단일 노드 클러스터 또는 고가용성 클러스터를 생성하는 경우 비정상 노드 교체의 기본 설정은 종료 방지에 따라 달라집니다.

  • 종료 방지를 활성화하면 비정상 노드 교체가 비활성화됩니다.

  • 종료 방지를 비활성화하면 비정상 노드 교체가 활성화됩니다.

클러스터를 시작하는 경우 비정상 노드 교체 구성

콘솔, AWS CLI 또는 API를 사용하여 클러스터를 시작할 때 비정상 노드 교체를 활성화 또는 비활성화할 수 있습니다.

비정상 노드 교체의 기본 설정은 클러스터를 시작하는 방법에 따라 달라집니다.

  • Amazon EMR 콘솔 - 비정상 노드 교체는 기본적으로 활성화됩니다.

  • AWS CLI aws emr create-cluster - --no-unhealthy-node-replacement를 지정하지 않는 한, 기본적으로 비정상 노드 교체는 활성화됩니다.

  • Amazon EMR RunJobFlow API 명령 - UnhealthyNodeReplacement 부울 값을 True 또는 False로 설정하지 않는 한 비정상 노드 교체는 기본적으로 활성화됩니다.

Console
콘솔을 사용하여 클러스터를 생성하는 경우 비정상 노드 교체를 켜거나 끄는 방법
  1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/emr에서 Amazon EMR 콘솔을 엽니다.

  2. 왼쪽 탐색 창의 EMR on EC2에서 클러스터를 선택하고 클러스터 생성을 선택합니다.

  3. EMR 릴리스 버전에서 원하는 Amazon EMR 릴리스 레이블을 선택합니다.

  4. 클러스터 종료 및 노드 교체에서 비정상 노드 교체(권장)이 미리 선택되어 있는지 확인하거나 선택을 취소하여 기능을 끕니다.

  5. 클러스터에 적용할 다른 옵션을 선택합니다.

  6. 클러스터를 시작하려면 클러스터 생성을 선택합니다.

AWS CLI
AWS CLI를 사용하여 클러스터를 생성하는 경우 비정상 노드 교체를 켜거나 끄는 방법
  • AWS CLI를 사용하면 --unhealthy-node-replacement 파라미터와 함께 create-cluster 명령을 사용해 비정상 노드 교체가 활성화된 상태로 클러스터를 시작할 수 있습니다. 비정상 노드 교체는 기본적으로 켜져 있습니다.

    다음 예제에서는 비정상 노드 교체가 활성화된 클러스터를 생성합니다.

    참고

    가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.

    aws emr create-cluster --name "SampleCluster" --release-label emr-7.10.0 \ --applications Name=Hadoop Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge \ --instance-count 3 --unhealthy-node-replacement

    AWS CLI에서 Amazon EMR 명령 사용에 대한 자세한 내용은 Amazon EMR AWS CLI commands를 참조하세요.

실행 중인 클러스터에서 비정상 노드 교체 구성

콘솔, AWS CLI 또는 API를 사용하여 실행 중인 클러스터에 대해 비정상 노드 교체를 켜거나 끌 수 있습니다.

Console
콘솔을 사용하여 실행 중인 클러스터에 대한 비정상 노드 교체를 켜거나 끄는 방법
  1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/emr에서 Amazon EMR 콘솔을 엽니다.

  2. 왼쪽 탐색 창의 EMR on EC2에서 클러스터를 선택하고 업데이트할 클러스터를 선택합니다.

  3. 클러스터 세부 정보 페이지의 속성 탭에서 클러스터 종료 및 노드 교체를 찾아 편집을 선택합니다.

  4. 비정상 노드 교체 확인란을 선택하거나 선택 취소하여 기능을 켜거나 끕니다. 그런 다음 변경 사항 저장을 선택하여 확인합니다.

AWS CLI
AWS CLI를 사용하여 실행 중인 클러스터에 대한 비정상 노드 교체를 켜거나 끄는 방법
  • AWS CLI를 사용하여 실행 중인 클러스터에서 비정상 노드 교체를 켜려면 --unhealthy-node-replacement 파라미터와 함께 modify-cluster-attributes 명령을 사용합니다. 이 기능을 비활성화하려면 --no-unhealthy-node-replacement 파라미터를 사용합니다.

    다음 예제에서는 ID가 j-3KVTXXXXXX7UG인 클러스터에서 비정상 노드 교체를 켭니다.

    aws emr modify-cluster-attributes --cluster-id j-3KVTXXXXXX7UG --unhealthy-node-replacement

    다음 예제에서는 동일한 클러스터에서 비정상 노드 교체를 끕니다.

    aws emr modify-cluster-attributes --cluster-id j-3KVTXXXXXX7UG --no-unhealthy-node-replacement