기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon EMR 클러스터에서 명령 및 스크립트 실행
이 주제에서는 클러스터에서 명령 또는 스크립트를 단계별로 실행하는 방법을 다룹니다. 명령이나 스크립트를 단계별로 실행하는 방법은 클러스터에 작업을 제출할 수 있는 여러 방법 중 하나이며 다음과 같은 상황에서 유용합니다.
-
Amazon EMR 클러스터에 대한 SSH 액세스 권한이 없는 경우
-
bash 또는 shell 명령을 실행하여 클러스터 문제를 해결하려는 경우
클러스터를 생성하거나 클러스터가 WAITING
상태일 때 스크립트를 실행할 수 있습니다. 단계 처리가 시작되기 전에 스크립트를 실행하려면 부트스트랩 작업을 대신 사용합니다. 부트스트랩 작업에 대한 자세한 내용은 Amazon EMR 관리 안내서에서 부트스트랩 작업을 생성하여 추가 소프트웨어 설치를 참조하세요.
Amazon EMR은 스크립트, 명령 및 기타 클러스터 내 프로그램을 실행하는 데 도움이 되는 다음과 같은 도구를 제공합니다. Amazon EMR 관리 콘솔 또는 AWS CLI를 사용하여 두 도구를 모두 간접 호출할 수 있습니다.
command-runner.jar
-
클러스터의 Amazon EMR AMI에 있습니다.
command-runner.jar
을 사용하여 클러스터에서 명령을 실행할 수 있습니다. 전체 경로를 사용하지 않고command-runner.jar
을 지정합니다. script-runner.jar
-
s3://
에서 Amazon S3에서 호스팅됩니다.<region>
.elasticmapreduce/libs/script-runner/script-runner.jar
은 Amazon EMR 클러스터가 위치한 리전입니다.<region>
script-runner.jar
을 사용하여 클러스터에서 로컬로 또는 Amazon S3에 저장된 스크립트를 실행할 수 있습니다. 단계를 제출할 때script-runner.jar
의 전체 URI를 지정해야 합니다.
사용자 지정 JAR 단계를 제출하여 스크립트 또는 명령을 실행합니다.
다음 AWS CLI 예제에서는 Amazon EMR에서 command-runner.jar
및 script-runner.jar
에 관한 몇 가지 일반적인 사용 사례를 보여줍니다.
예 : command-runner.jar
을 사용하여 클러스터에서 명령 실행
command-runner.jar
을 사용할 때 단계의 인수 목록에서 명령, 옵션 및 값을 지정합니다.
다음 AWS CLI 예제에서는 command-runner.jar
을 간접 호출하는 실행 중인 클러스터에 하나의 단계를 제출합니다. Args
목록에 지정된 명령은 Amazon S3에서 my-script.sh
스크립트를 hadoop 사용자 홈 디렉터리로 다운로드합니다. 그러면 이 명령은 스크립트의 권한을 수정하고 my-script.sh
를 실행합니다.
AWS CLI를 사용할 때 Args
목록의 항목은 쉼표로 구분하고 목록 요소 사이에 공백이 없어야 합니다. 예를 들어 Args=[example-command, example-option, "example option
value"]
대신 Args=[example-command,example-option,"example option value"]
항목을 사용합니다.
aws emr add-steps \ --cluster-id
j-2AXXXXXXGAPLF
\ --steps Type=CUSTOM_JAR,Name="Download a script from S3, change its permissions, and run it",ActionOnFailure=CONTINUE,Jar=command-runner.jar,Args=[bash,-c,"aws s3 cps3://EXAMPLE-DOC-BUCKET/my-script.sh
/home/hadoop; chmod u+x /home/hadoop/my-script.sh; cd /home/hadoop; ./my-script.sh"]
예 : script-runner.jar
을 사용하여 클러스터에서 스크립트 실행
script-runner.jar
을 사용할 때 단계의 인수 목록에서 실행하려는 스크립트를 지정합니다.
다음 AWS CLI 예제에서는 script-runner.jar
을 간접 호출하는 단계를 실행 중인 클러스터에 제출합니다. 이 경우 my-script.sh
스크립트는 Amazon S3에 저장됩니다. 클러스터의 프라이머리 노드에 저장되는 로컬 스크립트를 지정할 수도 있습니다.
aws emr add-steps \ --cluster-id
j-2AXXXXXXGAPLF
\ --steps Type=CUSTOM_JAR,Name="Run a script from S3 with script-runner.jar",ActionOnFailure=CONTINUE,Jar=s3://us-west-2
.elasticmapreduce/libs/script-runner/script-runner.jar,Args=[s3://EXAMPLE-DOC-BUCKET/my-script.sh
]
command-runner.jar
을 사용하는 기타 방법
command-runner.jar
을 사용하여 spark-submit
또는 hadoop-streaming
등의 도구로 클러스터에 작업을 제출할 수 있습니다. command-runner.jar
을 사용하여 애플리케이션을 시작할 때 SPARK
, STREAMING
또는 PIG
와 같은 값을 사용하는 대신 단계 유형으로 CUSTOM_JAR
을 지정합니다. 도구 가용성은 클러스터에 설치한 애플리케이션에 따라 달라집니다.
다음 예제 명령에서는 command-runner.jar
을 사용하여 spark-submit
을 통해 단계를 제출합니다. Args
목록은 spark-submit
을 명령으로 지정하고 그 뒤에 Spark 애플리케이션 my-app.py
의 Amazon S3 URI와 인수 및 값을 포함합니다.
aws emr add-steps \ --cluster-id
j-2AXXXXXXGAPLF
\ --steps Type=CUSTOM_JAR,Name="Run spark-submit using command-runner.jar",ActionOnFailure=CONTINUE,Jar=command-runner.jar,Args=[spark-submit,S3://DOC-EXAMPLE-BUCKET/my-app.py
,ArgName1
,ArgValue1
,ArgName2
,ArgValue2
]
다음 테이블에는 command-runner.jar
을 사용하여 실행할 수 있는 추가 도구가 나와 있습니다.
도구 이름 | 설명 |
---|---|
hadoop-streaming |
Hadoop 스트리밍 프로그램을 제출하니다. 콘솔과 일부 SDK에서 이 작업은 스트리밍 단계입니다. |
hive-script |
Hive 스크립트를 실행합니다. 콘솔과 일부 SDK에서 이 작업은 Hive 단계입니다. |
pig-script |
Pig 스크립트를 실행합니다. 콘솔과 일부 SDK에서 이 작업은 Pig 단계입니다. |
spark-submit |
Spark 애플리케이션을 실행합니다. 콘솔에서 이 작업은 Spark 단계입니다. |
hadoop-lzo |
디렉터리에서 Hadoop LZO 인덱서 |
s3-dist-cp |
Amazon S3의 대량 데이터를 HDFS로 분산 복사합니다. 자세한 내용은 S3 DistCp (s3-dist-cp) 섹션을 참조하세요. |