Spark 애플리케이션은 이전 AMI 버전의 Amazon에서만 사용할 수 있습니다. EMR - 아마존 EMR

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

Spark 애플리케이션은 이전 AMI 버전의 Amazon에서만 사용할 수 있습니다. EMR

대화식 또는 배치 모드로 Spark 사용

EMRAmazon에서는 Spark 애플리케이션을 두 가지 모드로 실행할 수 있습니다.

  • 대화형

  • 배치

콘솔 또는 를 사용하여 장기 실행 클러스터를 시작하는 경우 를 Hadoop 사용자로 마스터 노드에 연결하고 Spark 셸을 사용하여 SSH Spark 애플리케이션을 대화식으로 개발하고 실행할 수 있습니다. AWS CLI Spark를 대화식으로 사용하면 배치 환경에서보다 더 쉽게 Spark 애플리케이션을 시제품화하거나 테스트할 수 있습니다. 대화형 모드에서 Spark 애플리케이션을 성공적으로 수정한 후에는 Amazon S3에 있는 클러스터의 마스터 노드에 있는 로컬 파일 시스템에 해당 애플리케이션 또는 JAR Python 프로그램을 배치할 수 있습니다. 그런 다음 이 애플리케이션을 배치 워크플로로 제출할 수 있습니다.

배치 모드에서는 Spark 스크립트를 Amazon S3 또는 로컬 프라이머리 노드 파일 시스템에 업로드한 다음, 작업을 클러스터에 하나의 단계로 제출합니다. 장기 실행 클러스터 또는 일시적 클러스터에 Spark 단계를 제출할 수 있습니다.

Spark가 설치된 클러스터 생성

콘솔을 사용하여 Spark가 설치된 클러스터를 시작하려면
  1. 새 Amazon EMR 콘솔로 이동한 다음 측면 탐색에서 이전 콘솔로 전환을 선택합니다. 이전 콘솔로 전환할 때 예상되는 사항에 대한 자세한 내용은 이전 콘솔 사용을 참조하세요.

  2. 클러스터 생성을 선택합니다.

  3. 소프트웨어 구성의 경우 필요한 AMI 릴리스 버전을 선택합니다.

  4. 설치할 애플리케이션의 목록에서 Spark를 선택한 다음 구성 및 추가를 선택합니다.

  5. 인수를 추가하여 원하는 대로 Spark 구성을 변경합니다. 자세한 내용은 Spark 구성 단원을 참조하십시오. 추가(Add)를 선택합니다.

  6. 필요에 따라 다른 옵션을 선택한 다음 클러스터 생성을 선택합니다.

다음은 Java를 사용하여 Spark가 설치된 클러스터를 생성하는 방법을 보여주는 예제입니다.

AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials); SupportedProductConfig sparkConfig = new SupportedProductConfig() .withName("Spark"); RunJobFlowRequest request = new RunJobFlowRequest() .withName("Spark Cluster") .withAmiVersion("3.11.0") .withNewSupportedProducts(sparkConfig) .withInstances(new JobFlowInstancesConfig() .withEc2KeyName("myKeyName") .withInstanceCount(1) .withKeepJobFlowAliveWhenNoSteps(true) .withMasterInstanceType("m3.xlarge") .withSlaveInstanceType("m3.xlarge") ); RunJobFlowResult result = emr.runJobFlow(request);

Spark 구성

클러스터를 생성할 때 Github의 awslabs/ /spark 리포지토리에 있는 부트스트랩 작업을 실행하여 emr-bootstrap-actions Spark를 구성합니다. 부트스트랩 액션이 허용하는 인수는 해당 리포지토리의 인수를 참조하십시오. README 부트스트랩 작업은 $SPARK_CONF_DIR/spark-defaults.conf 파일의 속성을 구성합니다. 설정에 대한 자세한 내용은 Spark 설명서의 Spark 구성 주제를 참조하십시오. 다음의 URL “latest”를 설치 중인 Spark의 버전 번호로 바꿀 수 있습니다 (예:). 2.2.0 http://spark.apache.org/docs/latest/configuration.html

또한 각 애플리케이션 제출 시 Spark를 동적으로 구성할 수 있습니다. spark 구성 파일을 사용하여 실행기에 대한 리소스 할당을 자동으로 최대화하는 설정을 사용할 수 있습니다. 자세한 내용은 Spark 기본 구성 설정 재정의 단원을 참조하십시오.

Spark 기본 설정 변경

다음은 AWS CLI를 사용하여 spark.executor.memory가 2G로 설정된 클러스터를 생성하는 방법을 보여주는 예입니다.

참고

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

aws emr create-cluster --name "Spark cluster" --ami-version 3.11.0 \ --applications Name=Spark, Args=[-d,spark.executor.memory=2G] --ec2-attributes KeyName=myKey \ --instance-type m3.xlarge --instance-count 3 --use-default-roles

Spark에 작업 제출

클러스터에 작업을 제출하려면 클러스터에서 spark-submit 스크립트를 실행하는 단계를 사용하십시오. EMR 다음 addJobFlowSteps 방법을 사용하여 단계를 추가합니다 AmazonElasticMapReduceClient.

AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials); StepFactory stepFactory = new StepFactory(); AddJobFlowStepsRequest req = new AddJobFlowStepsRequest(); req.withJobFlowId("j-1K48XXXXXXHCB"); List<StepConfig> stepConfigs = new ArrayList<StepConfig>(); StepConfig sparkStep = new StepConfig() .withName("Spark Step") .withActionOnFailure("CONTINUE") .withHadoopJarStep(stepFactory.newScriptRunnerStep("/home/hadoop/spark/bin/spark-submit","--class","org.apache.spark.examples.SparkPi","/home/hadoop/spark/lib/spark-examples-1.3.1-hadoop2.4.0.jar","10")); stepConfigs.add(sparkStep); req.withSteps(stepConfigs); AddJobFlowStepsResult result = emr.addJobFlowSteps(req);

Spark 기본 구성 설정 재정의

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

/home/hadoop/spark/bin/spark-submit --executor-memory 1g --class org.apache.spark.examples.SparkPi /home/hadoop/spark/lib/spark-examples*.jar 10

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

--executor-memory 1g --class org.apache.spark.examples.SparkPi /home/hadoop/spark/lib/spark-examples*.jar 10

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