부트스트랩 작업을 생성하여 Amazon EMR 클러스터에 추가 소프트웨어 설치 - Amazon EMR

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

부트스트랩 작업을 생성하여 Amazon EMR 클러스터에 추가 소프트웨어 설치

부트스트랩 작업을 사용하여 추가 소프트웨어를 설치하거나 클러스터 인스턴스의 구성을 사용자 지정할 수 있습니다. 부트스트랩 작업은 Amazon Linux Amazon Machine Image()를 사용하여 Amazon이 인스턴스를 EMR 시작한 후 클러스터에서 실행되는 스크립트입니다AMI. 부트스트랩 작업은 클러스터를 생성할 때 지정한 애플리케이션을 Amazon이 EMR 설치하기 전과 클러스터 노드가 데이터 처리를 시작하기 전에 실행됩니다. 실행 중인 클러스터에 노드를 추가하는 경우, 부트스트랩 작업은 해당 노드에서도 같은 방식으로 실행됩니다. 사용자 지정 부트스트랩 작업을 생성한 다음 클러스터를 생성할 때 해당 작업을 지정할 수 있습니다.

Amazon EMR AMI 버전 2.x 및 3.x에 대해 사전 정의된 대부분의 부트스트랩 작업은 Amazon EMR 릴리스 4.x에서 지원되지 않습니다. 예를 들어 Amazon EMR 릴리스 4.x에서는 configure-Hadoopconfigure-daemons가 지원되지 않습니다. 대신 Amazon EMR 릴리스 4.x는 기본적으로 이 기능을 제공합니다. 부트스트랩 작업을 Amazon EMR AMI 버전 2.x 및 3.x에서 Amazon EMR 릴리스 4.x로 마이그레이션하는 방법에 대한 자세한 내용은 Amazon EMR 릴리스 가이드의 이전 AMI 버전의 Amazon으로 클러스터 및 애플리케이션 구성 사용자 지정EMR을 참조하세요.

부트스트랩 작업 기본 사항

부트스트랩 작업은 기본적으로 하둡 사용자로 실행됩니다. sudo를 사용하여 루트 권한으로 부트스트랩 작업을 실행할 수 있습니다.

모든 Amazon EMR 관리 인터페이스는 부트스트랩 작업을 지원합니다. 콘솔 AWS CLI또는 에서 여러 bootstrap-actions 파라미터를 제공하여 클러스터당 최대 16개의 부트스트랩 작업을 지정할 수 있습니다API.

Amazon EMR 콘솔에서 클러스터를 생성하는 동안 부트스트랩 작업을 선택적으로 지정할 수 있습니다.

를 사용하는 경우 create-cluster 명령을 사용하여 클러스터를 생성할 때 --bootstrap-actions 파라미터를 EMR 추가하여 부트스트랩 작업 스크립트에 대한 참조를 Amazon에 전달할 CLI수 있습니다.

--bootstrap-actions Path="s3://amzn-s3-demo-bucket/filename",Args=[arg1,arg2]

부트스트랩 작업이 0이 아닌 오류 코드를 반환하면 Amazon은 이를 실패로 EMR 처리하고 인스턴스를 종료합니다. 부트스트랩 작업에 실패한 인스턴스가 너무 많으면 Amazon은 클러스터를 EMR 종료합니다. 몇 개의 인스턴스만 실패하면 Amazon은 실패한 인스턴스를 재할당하고 계속하려고 EMR 시도합니다. 클러스터 lastStateChangeReason 오류 코드를 사용하여 부트스트랩 작업으로 인한 실패를 식별합니다.

조건부로 부트스트랩 작업을 실행합니다.

프라이머리 노드에서만 부트스트랩 작업을 실행하려면 일부 로직이 포함된 사용자 지정 부트스트랩 작업을 사용하여 프라이머리 노드인지 확인할 수 있습니다.

#!/bin/bash if grep isMaster /mnt/var/lib/info/instance.json | grep false; then echo "This is not master node, do nothing,exiting" exit 0 fi echo "This is master, continuing to execute script" # continue with code logic for master node below

다음 출력은 코어 노드에서 인쇄됩니다.

This is not master node, do nothing, exiting

다음 출력은 프라이머리 노드에서 인쇄됩니다.

This is master, continuing to execute script

이 로직을 사용하려면 위 코드를 포함한 부트스트랩 작업을 Amazon S3 버킷에 업로드합니다. 에서 aws emr create-cluster API 호출에 --bootstrap-actions 파라미터를 AWS CLI추가하고 부트스트랩 스크립트 위치를 값으로 지정합니다Path.

종료 작업

부트스트랩 작업 스크립트는 /mnt/var/lib/instance-controller/public/shutdown-actions/ 디렉터리에 스크립트를 작성하여 하나 이상의 종료 작업을 생성할 수 있습니다. 클러스터가 종료되면 이 디렉터리에 있는 모든 스크립트는 병렬로 실행됩니다. 각 스크립트는 60초 내에 실행하고 완료해야 합니다.

노드가 오류로 종료되는 경우 종료 작업 스크립트 실행이 보장되지 않습니다.

참고

Amazon EMR 버전 4.0 이상을 사용하는 경우 마스터 노드에서 /mnt/var/lib/instance-controller/public/shutdown-actions/ 디렉터리를 수동으로 생성해야 합니다. 이 디렉터리는 기본적으로 존재하지 않지만 생성된 후에는 종료 전에 이 디렉터리의 스크립트가 실행됩니다. 마스터 노드에 연결하여 디렉터리를 생성하는 방법에 대한 자세한 내용은 를 사용하여 Amazon EMR 클러스터 기본 노드에 연결 SSH 단원을 참조하십시오.

사용자 지정 부트스트랩 작업 사용

사용자 지정 스크립트를 생성하여 사용자 지정 부트스트랩 작업을 수행할 수 있습니다. 모든 Amazon EMR 인터페이스는 사용자 지정 부트스트랩 작업을 참조할 수 있습니다.

참고

최상의 성능을 위해 AWS 리전 클러스터와 동일한 EMR Amazon S3 버킷에 Amazon과 함께 사용하려는 사용자 지정 부트스트랩 작업, 스크립트 및 기타 파일을 저장하는 것이 좋습니다.

사용자 지정 부트스트랩 작업 추가

Console
콘솔을 사용하여 부트스트랩 작업을 사용하여 클러스터를 생성하려면
  1. 에 로그인 AWS Management Console하고 https://console.aws.amazon.com/emr 에서 Amazon EMR 콘솔을 엽니다.

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

  3. 부트스트랩 작업에서 추가를 선택하여 작업의 이름, 스크립트 위치, 선택적 인수를 지정합니다. 부트스트랩 작업 추가를 선택합니다.

  4. 선택적으로 부트스트랩 작업을 더 추가합니다.

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

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

CLI
를 사용하여 사용자 지정 부트스트랩 작업을 사용하여 클러스터를 생성하려면 AWS CLI

AWS CLI 를 사용하여 부트스트랩 작업을 포함할 때 Path 및 를 쉼표로 구분된 목록Args으로 지정합니다. 다음 예제는 인수 목록을 사용하지 않습니다.

  • 사용자 지정 부트스트랩 작업을 사용하여 클러스터를 시작하려면 다음 명령을 입력하고 myKey EC2 키 페어의 이름을 사용합니다. --bootstrap-actions를 파라미터로 포함하고 부트스트랩 스크립트 위치를 Path의 값으로 지정합니다.

    • Linux, UNIX및 Mac OS X 사용자:

      aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 \ --use-default-roles --ec2-attributes KeyName=myKey \ --applications Name=Hive Name=Pig \ --instance-count 3 --instance-type m5.xlarge \ --bootstrap-actions Path="s3://elasticmapreduce/bootstrap-actions/download.sh"
    • Windows 사용자:

      aws emr create-cluster --name "Test cluster" --release-label emr-4.2.0 --use-default-roles --ec2-attributes KeyName=myKey --applications Name=Hive Name=Pig --instance-count 3 --instance-type m5.xlarge --bootstrap-actions Path="s3://elasticmapreduce/bootstrap-actions/download.sh"

    --instance-groups 파라미터를 사용하지 않고 인스턴스 수를 지정하면 단일 프라이머리 노드가 시작되고 나머지 인스턴스는 코어 노드로 시작됩니다. 모든 노드는 이 명령에 지정된 인스턴스 유형을 사용합니다.

    참고

    이전에 기본 Amazon EMR 서비스 역할 및 EC2 인스턴스 프로파일을 생성하지 않은 경우 create-cluster 하위 명령을 입력하기 전에 aws emr create-default-roles를 입력하여 생성합니다.

    에서 Amazon EMR 명령을 사용하는 방법에 대한 자세한 내용은 섹션을 AWS CLI참조하세요https://docs.aws.amazon.com/cli/latest/reference/emr.

사용자 지정 부트스트랩 작업을 사용하여 Amazon S3에서 각 노드로 객체 복사

애플리케이션이 설치되기 전에 부트스트랩 작업을 사용하여 Amazon S3에서 클러스터의 각 노드로 객체를 복사할 수 있습니다. AWS CLI 는 클러스터의 각 노드에 설치되어 부트스트랩 작업이 AWS CLI 명령을 호출할 수 있습니다.

다음 예제는 Amazon S3에서 myfile.jar 파일을 각 클러스터 노드의 /mnt1/myfolder 로컬 폴더로 복사하는 간단한 부트스트랩 작업 스크립트를 보여줍니다. 이 스크립트는 다음 콘텐츠를 포함하여 Amazon S3에서 이름이 copymyfile.sh인 파일에 저장됩니다.

#!/bin/bash aws s3 cp s3://amzn-s3-demo-bucket/myfilefolder/myfile.jar /mnt1/myfolder

클러스터를 시작할 때 스크립트를 지정해야 합니다. 다음 AWS CLI 예제에서는 이를 보여줍니다.

aws emr create-cluster --name "Test cluster" --release-label emr-7.3.0 \ --use-default-roles --ec2-attributes KeyName=myKey \ --applications Name=Hive Name=Pig \ --instance-count 3 --instance-type m5.xlarge \ --bootstrap-actions Path="s3://amzn-s3-demo-bucket/myscriptfolder/copymyfile.sh"