기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon EMR 2.x 및 3.x 릴리스는 AMI 버전으로 참조됩니다. Amazon EMR 릴리스 4.0.0 이상에서 릴리스 레이블(예: emr-5.11.0
)을 사용하여 릴리스 버전별로 릴리스를 참조합니다. 이 변경 사항은 AWS CLI 또는 프로그래밍 방식으로 클러스터를 생성할 때 가장 명확하게 나타납니다.
AWS CLI 를 사용하여 AMI 릴리스 버전을 사용하여 클러스터를 생성하는 경우 --ami-version
옵션을 사용합니다. 예: --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 릴리스 버전이 EMR API에서 RunJobFlowRequest
작업을 사용하여 클러스터를 생성합니다. 다음은 AMI 릴리스 버전 3.11.0을 사용하여 클러스터를 생성하는 예제 Java 코드입니다.
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.8.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은 실패한 태스크 노드를 대체하기 위해 추가 태스크 노드를 자동으로 프로비저닝합니다.
클러스터 단계마다 작업 노드의 수가 다를 수 있습니다. 실행 중인 클러스터에 단계를 추가하여 작업 노드의 수를 수정할 수도 있습니다. 모든 단계는 기본적으로 순차적으로 실행되므로 어떤 단계에 대해서도 실행 중인 작업 노드 수를 지정할 수 있습니다.