Spark 단계 추가 - 아마존 EMR

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

Spark 단계 추가

Amazon EMR Steps를 사용하여 EMR 클러스터에 설치된 Spark 프레임워크에 작업을 제출할 수 있습니다. 자세한 내용은 Amazon EMR 관리 가이드의 단계를 참조하십시오. 콘솔에서는 사용자 대신 spark-submit 스크립트를 한 단계로 실행하는 Spark 애플리케이션 단계를 사용하여 이 작업을 수행합니다. CLI API를 사용하면 단계를 사용하여 를 spark-submit 호출합니다. command-runner.jar

Spark로 애플리케이션 제출에 대한 자세한 내용은 Apache Spark 설명서에서 Submitting applications 주제를 참조하세요.

콘솔을 사용하여 Spark 단계를 제출하려면
  1. https://console.aws.amazon.com/emr에서 아마존 EMR 콘솔을 엽니다.

  2. 클러스터 목록에서 클러스터의 이름을 선택합니다.

  3. 단계 섹션으로 스크롤하여 섹션을 확장한 후 단계 추가를 선택합니다.

  4. 단계 추가 대화 상자에서 다음을 수행합니다.

    • 단계 유형에서 Spark 애플리케이션을 선택합니다.

    • 이름에서 기본 이름(Spark 애플리케이션)을 그대로 사용하거나 새 이름을 입력합니다.

    • Deploy mode(배포 모드)에서 클라이언트 또는 클러스터 모드를 선택합니다. 클라이언트 모드는 클러스터의 프라이머리 인스턴스에서 드라이버 프로그램을 시작하고, 클러스터 모드는 클러스터에서 드라이버 프로그램을 시작합니다. 클라이언트 모드의 경우 드라이버의 로그 출력이 단계 로그에 나타나고, 클러스터 모드의 경우 드라이버의 로그 출력이 첫 YARN 번째 컨테이너의 로그에 나타납니다. 자세한 내용은 Apache Spark 설명서의 Cluster mode overview를 참조하세요.

    • 원하는 Spark-submit 옵션을 지정합니다. spark-submit 옵션에 대한 자세한 내용은 Launching applications with spark-submit을 참조하세요.

    • 애플리케이션 위치에는 애플리케이션의 로컬 또는 S3 URI 경로를 지정합니다.

    • 인수에서 필드를 비워 둡니다.

    • 실패 시 작업에서 기본 옵션(계속)을 그대로 사용합니다.

  5. 추가를 선택합니다. 단계가 콘솔에 [Pending] 상태로 나타납니다.

  6. 단계의 상태는 단계가 실행됨에 따라 대기 중에서 실행 중을 거쳐 완료됨으로 바뀝니다. 상태를 업데이트하려면 작업 열 위의 새로 고침 아이콘을 선택합니다.

  7. 단계 결과는 Amazon EMR 콘솔 클러스터 세부 정보 페이지의 해당 단계 옆에 있는 로그 파일 아래에 있습니다 (로깅을 구성한 경우). 또는 클러스터를 시작할 때 구성한 로그 버킷에서도 단계 정보를 찾아볼 수 있습니다.

를 사용하여 Spark에 작업을 제출하려면 AWS CLI

클러스터 생성 시 단계를 제출하거나 기존 클러스터에서 aws emr add-steps 하위 명령을 사용합니다.

  1. 다음 예제에 표시된 대로 create-cluster를 사용합니다.

    참고

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

    aws emr create-cluster --name "Add Spark Step Cluster" --release-label emr-7.2.0 --applications Name=Spark \ --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \ --steps Type=Spark,Name="Spark Program",ActionOnFailure=CONTINUE,Args=[--class,org.apache.spark.examples.SparkPi,/usr/lib/spark/examples/jars/spark-examples.jar,10] --use-default-roles

    또는 다음 예제에 표시된 대로 command-runner.jar을 사용할 수 있습니다.

    aws emr create-cluster --name "Add Spark Step Cluster" --release-label emr-7.2.0 \ --applications Name=Spark --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \ --steps Type=CUSTOM_JAR,Name="Spark Program",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[spark-example,SparkPi,10] --use-default-roles
    참고

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

  2. 또는 이미 실행 중인 클러스터에 단계를 추가합니다. add-steps를 사용합니다.

    aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=Spark,Name="Spark Program",ActionOnFailure=CONTINUE,Args=[--class,org.apache.spark.examples.SparkPi,/usr/lib/spark/examples/jars/spark-examples.jar,10]

    또는 다음 예제에 표시된 대로 command-runner.jar을 사용할 수 있습니다.

    aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=CUSTOM_JAR,Name="Spark Program",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[spark-example,SparkPi,10]
Java용 버전을 사용하여 Spark에 작품을 제출하려면 SDK
  1. 다음은 Java를 사용하여 Spark가 설치된 클러스터에 단계를 추가하는 방법을 보여주는 예제입니다.

    AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); AmazonElasticMapReduce emr = new AmazonElasticMapReduceClient(credentials); StepFactory stepFactory = new StepFactory(); AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials); AddJobFlowStepsRequest req = new AddJobFlowStepsRequest(); req.withJobFlowId("j-1K48XXXXXXHCB"); List<StepConfig> stepConfigs = new ArrayList<StepConfig>(); HadoopJarStepConfig sparkStepConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("spark-submit","--executor-memory","1g","--class","org.apache.spark.examples.SparkPi","/usr/lib/spark/examples/jars/spark-examples.jar","10"); StepConfig sparkStep = new StepConfig() .withName("Spark Step") .withActionOnFailure("CONTINUE") .withHadoopJarStep(sparkStepConf); stepConfigs.add(sparkStep); req.withSteps(stepConfigs); AddJobFlowStepsResult result = emr.addJobFlowSteps(req);
  2. 단계에 대한 로그를 검토하여 단계의 결과를 살펴봅니다. 로깅을 활성화한 AWS Management Console 경우 단계를 선택하고 단계를 선택한 다음 로그 파일에 대해 stdout 또는 stderr 하나를 선택하여 이 작업을 수행할 수 있습니다. 사용할 수 있는 로그를 보려면 로그 보기를 선택합니다.

Spark 기본 구성 설정 재정의

애플리케이션마다 Spark 기본 구성 값을 재정의해야 할 때가 있습니다. 이 작업은 단계를 사용하여 애플리케이션을 제출할 때 기본적으로 옵션을 spark-submit에 전달함으로써 수행할 수 있습니다. 예를 들면 spark.executor.memory를 변경하여 실행자 프로세스에 할당된 메모리를 변경해야 할 때가 있습니다. 다음과 같은 인수를 사용하여 --executor-memory를 지정합니다.

spark-submit --executor-memory 1g --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 10

마찬가지로, --executor-cores--driver-memory를 조정할 수 있습니다. 단계에서 다음 인수를 단계에 제공합니다.

--executor-memory 1g --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 10

또한 --conf 옵션을 사용하여 기본 제공 스위치가 없는 설정을 조정할 수도 있습니다. 조정 가능한 다양한 설정에 대한 자세한 내용은 Apache Spark 설명서의 Dynamically Loading Spark Properties 주제를 참조하세요.