이전 AMI 버전의 Amazon EMR을 사용하여 클러스터 생성 - Amazon EMR

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

이전 AMI 버전의 Amazon EMR을 사용하여 클러스터 생성

Amazon EMR 2.x 및 3.x 릴리스는 에서 참조됩니다.AMI 버전. Amazon EMR 릴리스 4.0.0 이상에서는 릴리스 버전별로 릴리스를 참조하여릴리스 레이블다음과 같은emr-5.11.0. AWS CLI를 사용하거나 프로그래밍 방식으로 클러스터를 생성할 때 이 변화가 가장 뚜렷합니다.

AMI 릴리스 버전을 사용하여 AWS CLI를 통해 클러스터를 생성하는 경우 --ami-version 3.11.0과 같이 --ami-version 옵션을 사용합니다. Amazon EMR 4.0.0 이상에 도입된 여러 옵션, 기능 및 애플리케이션은 을 지정할 때 사용할 수 없습니다.--ami-version. 자세한 내용은 단원을 참조하십시오.create-clusterAWS CLI명령 참조.

다음은 AMI 버전을 사용하여 클러스터를 시작하는 예제 AWS CLI 명령입니다.

참고

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

aws emr create-cluster --name "Test cluster" --ami-version 3.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에서 작업을 수행합니다. 다음은 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-5.36.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은 실패한 작업 노드를 대체하기 위해 추가 작업 노드를 자동으로 프로비저닝합니다.

클러스터 단계마다 작업 노드의 수가 다를 수 있습니다. 실행 중인 클러스터에 단계를 추가하여 작업 노드의 수를 수정할 수도 있습니다. 모든 단계는 기본적으로 순차적으로 실행되므로 어떤 단계에 대해서도 실행 중인 작업 노드 수를 지정할 수 있습니다.