기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Apache Spark가 설치된 클러스터 생성
다음 절차에서는 Amazon EMR 콘솔에서 Quick Options를 사용하여 Spark
고급 옵션을 사용하여 클러스터 설정을 추가적으로 사용자 지정하고 단계를 제출하여 애플리케이션을 프로그래밍 방식으로 설치한 다음, 사용자 지정 애플리케이션을 실행할 수 있습니다. 클러스터 생성 옵션 중 하나를 사용하면 AWS Glue를 Spark SQL메타스토어로 사용하도록 선택할 수 있습니다. 자세한 내용은 AWS Glue 데이터 카탈로그를 Spark의 메타스토어로 사용 SQL 섹션을 참조하세요.
Spark가 설치된 클러스터를 시작하려면
https://console.aws.amazon.com/emr
에서 Amazon EMR 콘솔을 엽니다. -
빠른 옵션을 사용하려면 클러스터 생성을 선택합니다.
-
클러스터 이름을 입력합니다. 클러스터 이름에는 <, >, $, | 또는 `(backtick) 문자를 포함할 수 없습니다.
-
소프트웨어 구성에서 릴리스 옵션을 선택합니다.
-
애플리케이션에서 Spark 애플리케이션 번들을 선택합니다.
-
필요에 따라 다른 옵션을 선택한 다음 클러스터 생성을 선택합니다.
참고
클러스터를 생성할 때 Spark를 구성하려면 Spark 구성 단원을 참조하십시오.
를 사용하여 Spark가 설치된 클러스터를 시작하려면 AWS CLI
-
다음 명령을 사용하여 클러스터를 생성합니다.
aws emr create-cluster --name "Spark cluster" --release-label
emr-7.3.0
--applications Name=Spark \ --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 --use-default-roles
참고
가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.
JavaSDK용 를 사용하여 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()); } }