

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

# Apache Spark가 설치된 클러스터 생성
<a name="emr-spark-launch"></a>

다음 절차에서는 Amazon EMR 콘솔에서 **고급 옵션**을 사용하여 설치된 [Spark](https://aws.amazon.com/big-data/what-is-spark/)로 클러스터를 생성합니다.

**고급 옵션**을 사용하여 클러스터 설정을 추가적으로 사용자 지정하고 단계를 제출하여 애플리케이션을 프로그래밍 방식으로 설치한 다음, 사용자 지정 애플리케이션을 실행할 수 있습니다. 클러스터 생성 옵션을 사용하여 AWS Glue를 Spark SQL 메타스토어로 사용하도록 선택할 수 있습니다. 자세한 정보는 [Amazon EMR에서 Spark와 함께 AWS Glue 데이터 카탈로그 사용](emr-spark-glue.md)을 참조하세요.

**Spark가 설치된 클러스터를 시작하려면**

1. [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr/) Amazon EMR 콘솔을 엽니다.

1. **빠른 옵션**을 사용하려면 **클러스터 생성**을 선택합니다.

1. **클러스터 이름**을 입력합니다. 클러스터 이름에는 <, >, \$1, \$1 또는 `(백틱) 문자를 포함할 수 없습니다.

1.  **소프트웨어 구성**에서 **릴리스** 옵션을 선택합니다.

1.  **애플리케이션**에서 **Spark** 애플리케이션 번들을 선택합니다.

1.  필요에 따라 다른 옵션을 선택한 다음 **클러스터 생성**을 선택합니다.
**참고**  
클러스터를 생성할 때 Spark를 구성하려면 [Spark 구성](emr-spark-configure.md) 섹션을 참조하세요.

**를 사용하여 Spark가 설치된 클러스터를 시작하려면 AWS CLI**
+ 다음 명령을 사용하여 클러스터를 생성합니다.

  ```
  aws emr create-cluster --name "Spark cluster" --release-label emr-7.12.0 --applications Name=Spark \
  --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 --use-default-roles
  ```

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

**SDK for Java를 사용하여 Spark가 설치된 클러스터를 시작하는 방법**

`SupportedProductConfig`에 사용된 `RunJobFlowRequest`와 함께 Spark를 애플리케이션으로 지정합니다.
+ 다음은 Java를 사용하여 Spark가 설치된 클러스터를 생성하는 방법을 보여주는 예제입니다.

  ```
  import com.amazonaws.AmazonClientException;
  import com.amazonaws.auth.AWSCredentials;
  import com.amazonaws.auth.AWSStaticCredentialsProvider;
  import com.amazonaws.auth.profile.ProfileCredentialsProvider;
  import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduce;
  import com.amazonaws.services.elasticmapreduce.AmazonElasticMapReduceClientBuilder;
  import com.amazonaws.services.elasticmapreduce.model.*;
  import com.amazonaws.services.elasticmapreduce.util.StepFactory;
  
  public class Main {
  
          public static void main(String[] args) {
                  AWSCredentials credentials_profile = null;
                  try {
                          credentials_profile = new ProfileCredentialsProvider("default").getCredentials();
                  } catch (Exception e) {
                          throw new AmazonClientException(
                                          "Cannot load credentials from .aws/credentials file. " +
                                                          "Make sure that the credentials file exists and the profile name is specified within it.",
                                          e);
                  }
  
                  AmazonElasticMapReduce emr = AmazonElasticMapReduceClientBuilder.standard()
                                  .withCredentials(new AWSStaticCredentialsProvider(credentials_profile))
                                  .withRegion(Regions.US_WEST_1)
                                  .build();
  
                  // create a step to enable debugging in the AWS Management Console
                  StepFactory stepFactory = new StepFactory();
                  StepConfig enabledebugging = new StepConfig()
                                  .withName("Enable debugging")
                                  .withActionOnFailure("TERMINATE_JOB_FLOW")
                                  .withHadoopJarStep(stepFactory.newEnableDebuggingStep());
  
                  Application spark = new Application().withName("Spark");
  
                  RunJobFlowRequest request = new RunJobFlowRequest()
                                  .withName("Spark Cluster")
                                  .withReleaseLabel("emr-5.20.0")
                                  .withSteps(enabledebugging)
                                  .withApplications(spark)
                                  .withLogUri("s3://path/to/my/logs/")
                                  .withServiceRole("EMR_DefaultRole")
                                  .withJobFlowRole("EMR_EC2_DefaultRole")
                                  .withInstances(new JobFlowInstancesConfig()
                                                  .withEc2SubnetId("subnet-12ab3c45")
                                                  .withEc2KeyName("myEc2Key")
                                                  .withInstanceCount(3)
                                                  .withKeepJobFlowAliveWhenNoSteps(true)
                                                  .withMasterInstanceType("m4.large")
                                                  .withSlaveInstanceType("m4.large"));
                  RunJobFlowResult result = emr.runJobFlow(request);
                  System.out.println("The cluster ID is " + result.toString());
          }
  }
  ```