기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
이전 AMI 버전의 Amazon으로 클러스터 생성 EMR
Amazon EMR 2.x 및 3.x 릴리스는 버전별로 참조됩니다. AMI Amazon EMR 릴리스 4.0.0 이상에서는 릴리스가 다음과 같은 릴리스 레이블을 사용하여 릴리스 버전별로 참조됩니다. emr-5.11.0
이러한 변화는 or를 사용하여 프로그래밍 방식으로 클러스터를 생성할 때 가장 뚜렷하게 나타납니다. AWS CLI
를 사용하여 AMI 릴리스 버전을 사용하여 클러스터를 생성하는 경우 --ami-version
옵션 (예:) 을 사용하십시오. AWS CLI --ami-version 3.11.0
Amazon EMR 4.0.0 이상에 도입된 많은 옵션, 기능 및 애플리케이션을 지정하면 사용할 수 없습니다. --ami-version
자세한 내용은 AWS CLI 명령 참조에서 create-cluster를 참조하세요.
다음 예제 AWS CLI 명령은 버전을 사용하여 클러스터를 시작합니다. AMI
참고
가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.
aws emr create-cluster --name "
Test cluster
" --ami-version3.11.0
\ --applications Name=Hue
Name=Hive
Name=Pig
\ --use-default-roles --ec2-attributes KeyName=myKey
\ --instance-groups InstanceGroupType=MASTER
,InstanceCount=1
,\ InstanceType=m3.xlarge
InstanceGroupType=CORE
,InstanceCount=2
,\ InstanceType=m3.xlarge
--bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hadoop
,\ Name="Configuring infinite JVM reuse"
,Args=["-m","mapred.job.reuse.jvm.num.tasks=-1"
]
프로그래밍 방식으로 모든 Amazon EMR 릴리스 버전은 의 RunJobFlowRequest
작업을 사용하여 클러스터를 생성합니다. EMR API 다음 예제 Java 코드는 AMI 릴리스 버전 3.11.0을 사용하여 클러스터를 생성합니다.
RunJobFlowRequest request = new RunJobFlowRequest() .withName("AmiVersion Cluster") .withAmiVersion("3.11.0") .withInstances(new JobFlowInstancesConfig() .withEc2KeyName("myKeyPair") .withInstanceCount(1) .withKeepJobFlowAliveWhenNoSteps(true) .withMasterInstanceType("m3.xlarge") .withSlaveInstanceType("m3.xlarge");
다음 RunJobFlowRequest
호출은 릴리스 레이블을 대신 사용합니다.
RunJobFlowRequest request = new RunJobFlowRequest() .withName("ReleaseLabel Cluster") .withReleaseLabel("
emr-7.2.0
") .withInstances(new JobFlowInstancesConfig() .withEc2KeyName("myKeyPair") .withInstanceCount(1) .withKeepJobFlowAliveWhenNoSteps(true) .withMasterInstanceType("m3.xlarge") .withSlaveInstanceType("m3.xlarge");
클러스터 크기 구성
클러스터가 실행되면 Hadoop에서 데이터를 처리하는 데 필요한 매퍼 및 reducer 작업 수를 결정합니다. 클러스터의 규모가 클수록 리소스 사용과 처리 시간 단축을 위해 더 많은 작업을 수행해야 합니다. 일반적으로 EMR 클러스터는 전체 클러스터에서 동일한 크기를 유지하므로 클러스터를 생성할 때 작업 수를 설정합니다. 실행 중인 클러스터의 크기를 조정할 때 클러스터 실행 중에 처리 방식을 변경할 수 있습니다. 따라서 고정된 수의 작업을 사용하는 대신 클러스터 수명 기간 동안 작업 수를 변경할 수 있습니다. 이상적인 작업 수를 설정하는 데 도움이 되는 두 가지 구성 옵션이 있습니다.
-
mapred.map.tasksperslot
-
mapred.reduce.tasksperslot
mapred-conf.xml
파일에서 두 옵션을 모두 설정할 수 있습니다. 작업을 클러스터에 제출하면 작업 클라이언트는 클러스터 전체에서 사용 가능한 현재 맵 및 reduce 슬롯의 총 수를 확인합니다. 작업 클라이언트는 다음 수식을 사용하여 작업 수를 설정합니다.
-
mapred.map.tasks
=mapred.map.tasksperslot
* 클러스터의 맵 슬롯 -
mapred.reduce.tasks
=mapred.reduce.tasksperslot
* 클러스터의 reduce 슬롯
작업 클라이언트는 작업 수가 구성되지 않은 경우 tasksperslot
파라미터만 읽습니다. 부트스트랩 작업을 통해 모든 클러스터에 대해 또는 구성을 변경하는 단계를 추가하여 작업마다 개별적으로 언제든지 작업 수를 재정의할 수 있습니다.
Amazon은 작업 노드 장애를 EMR 견디며 작업 노드를 사용할 수 없게 되더라도 클러스터를 계속 실행합니다. Amazon은 장애가 발생한 작업 노드를 대체하기 위해 추가 작업 노드를 EMR 자동으로 프로비저닝합니다.
클러스터 단계마다 작업 노드의 수가 다를 수 있습니다. 실행 중인 클러스터에 단계를 추가하여 작업 노드의 수를 수정할 수도 있습니다. 모든 단계는 기본적으로 순차적으로 실행되므로 어떤 단계에 대해서도 실행 중인 작업 노드 수를 지정할 수 있습니다.