기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
부트스트랩 작업을 생성하여 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-Hadoop
및 configure-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과 함께 사용하려는 사용자 지정 부트스트랩 작업, 스크립트 및 기타 파일을 저장하는 것이 좋습니다.
사용자 지정 부트스트랩 작업 추가
사용자 지정 부트스트랩 작업을 사용하여 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"