Amazon EMR 클러스터에서 명령 및 스크립트 실행 - 아마존 EMR

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

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://<region>.elasticmapreduce/libs/script-runner/script-runner.jar에서 Amazon S3에서 호스팅됩니다. <region>은 Amazon EMR 클러스터가 위치한 리전입니다. script-runner.jar을 사용하여 클러스터에서 로컬로 또는 Amazon S3에 저장된 스크립트를 실행할 수 있습니다. 단계를 제출할 때 script-runner.jar의 전체 URI를 지정해야 합니다.

사용자 지정 JAR 단계를 제출하여 스크립트 또는 명령을 실행합니다.

다음 AWS CLI 예제에서는 Amazon EMR에서 command-runner.jarscript-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 cp s3://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) 섹션을 참조하세요.