이전 AMI 버전의 Amazon을 사용하여 클러스터 및 애플리케이션 구성 사용자 지정 EMR - Amazon EMR

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

이전 AMI 버전의 Amazon을 사용하여 클러스터 및 애플리케이션 구성 사용자 지정 EMR

Amazon EMR 릴리스 버전 4.0.0에서는 구성 분류를 사용하여 애플리케이션을 구성하는 간소화된 방법을 도입했습니다. 자세한 내용은 애플리케이션 구성 단원을 참조하십시오. AMI 버전을 사용할 때 전달하는 인수와 함께 부트스트랩 작업을 사용하여 애플리케이션을 구성합니다. 예를 들어 configure-hadoopconfigure-daemons 부트스트랩 작업은와 같은 하둡 및 YARN특정 환경 속성을 설정합니다--namenode-heap-size. 최신 버전에서는 이러한 사항이 hadoop-envyarn-env 구성 분류를 통해 구성됩니다. 일반적인 구성을 수행하는 부트스트랩 작업은 emr-bootstrap-actions Github의 리포지토리를 참조하세요.

다음 표는 부트스트랩 작업을 최신 Amazon EMR 릴리스 버전의 구성 분류에 매핑합니다.

Hadoop
영향을 받는 애플리케이션 파일 이름 AMI 버전 부트스트랩 작업 구성 분류
core-site.xml configure-hadoop -c core-site
log4j.properties configure-hadoop -l hadoop-log4j
hdfs-site.xml configure-hadoop -s hdfs-site
해당 사항 없음 해당 사항 없음 hdfs-encryption-zones
mapred-site.xml configure-hadoop -m mapred-site
yarn-site.xml configure-hadoop -y yarn-site
httpfs-site.xml configure-hadoop -t httpfs-site
capacity-scheduler.xml configure-hadoop -z capacity-scheduler
yarn-env.sh configure-daemons --resourcemanager-opts yarn-env
Hive
영향을 받는 애플리케이션 파일 이름 AMI 버전 부트스트랩 작업 구성 분류
hive-env.sh 해당 사항 없음 hive-env
hive-site.xml hive-script --install-hive-site ${MY_HIVE_SITE_FILE} hive-site
hive-exec-log4j.properties 해당 사항 없음 hive-exec-log4j
hive-log4j.properties 해당 사항 없음 hive-log4j
EMRFS
영향을 받는 애플리케이션 파일 이름 AMI 버전 부트스트랩 작업 구성 분류
emrfs-site.xml configure-hadoop -e emrfs-site
해당 사항 없음 s3get -s s3://custom-provider.jar -d /usr/share/aws/emr/auxlib/ emrfs-site(새로운 설정 fs.s3.cse.encryptionMaterialsProvider.uri 지원)

모든 분류 목록을 보려면 애플리케이션 구성 단원을 참조하십시오.

애플리케이션 환경 변수

AMI 버전을 사용하는 경우 configure-daemons 부트스트랩 작업과 함께 hadoop-user-env.sh 스크립트를 사용하여 하둡 환경을 구성합니다. 이 스크립트에는 다음 작업이 포함되어 있습니다.

#!/bin/bash export HADOOP_USER_CLASSPATH_FIRST=true; echo "HADOOP_CLASSPATH=/path/to/my.jar" >> /home/hadoop/conf/hadoop-user-env.sh

Amazon EMR 릴리스 4.x에서는 다음 예제와 같이 hadoop-env 구성 분류를 사용하여 동일한 작업을 수행합니다.

[       {          "Classification":"hadoop-env",          "Properties":{          },          "Configurations":[             {                "Classification":"export",                "Properties":{                   "HADOOP_USER_CLASSPATH_FIRST":"true",                   "HADOOP_CLASSPATH":"/path/to/my.jar"                }             }          ]       }    ]

또 다른 예로, configure-daemons를 사용하고 --namenode-heap-size=2048--namenode-opts=-XX:GCTimeRatio=19를 전달하는 것은 다음 구성 분류와 동일합니다.

[       {          "Classification":"hadoop-env",          "Properties":{          },          "Configurations":[             {                "Classification":"export",                "Properties":{                   "HADOOP_DATANODE_HEAPSIZE": "2048", "HADOOP_NAMENODE_OPTS": "-XX:GCTimeRatio=19"                }             }          ]       }    ]

다른 애플리케이션 환경 변수는 더 이상 /home/hadoop/.bashrc에 정의되지 않습니다. 대신 /etc/default과 같이 구성 요소별 또는 애플리케이션별 /etc/default/hadoop 파일에서 주로 설정됩니다. 애플리케이션에서 /usr/bin/ 설치한의 래퍼 스크립트RPMs는 실제 빈 스크립트를 포함하기 전에 추가 환경 변수를 설정할 수도 있습니다.

서비스 포트

AMI 버전을 사용할 때 일부 서비스는 사용자 지정 포트를 사용합니다.

포트 설정의 변경
설정 AMI 버전 3.x 오픈 소스 기본값
fs.default.name hdfs://emrDeterminedIP:9000 기본값(hdfs://emrDeterminedIP:8020)
dfs.datanode.address 0.0.0.0:9200 기본값(0.0.0.0:50010)
dfs.datanode.http.address 0.0.0.0:9102 기본값(0.0.0.0:50075)
dfs.datanode.https.address 0.0.0.0:9402 기본값(0.0.0.0:50475)
dfs.datanode.ipc.address 0.0.0.0:9201 기본값(0.0.0.0:50020)
dfs.http.address 0.0.0.0:9101 기본값(0.0.0.0:50070)
dfs.https.address 0.0.0.0:9202 기본값(0.0.0.0:50470)
dfs.secondary.http.address 0.0.0.0:9104 기본값(0.0.0.0:50090)
yarn.nodemanager.address 0.0.0.0:9103 기본값(${yarn.nodemanager.hostname}:0)
yarn.nodemanager.localizer.address 0.0.0.0:9033 기본값(${yarn.nodemanager.hostname}:8040)
yarn.nodemanager.webapp.address 0.0.0.0:9035 기본값(${yarn.nodemanager.hostname}:8042)
yarn.resourcemanager.address emrDeterminedIP:9022 기본값(${yarn.resourcemanager.hostname}:8032)
yarn.resourcemanager.admin.address emrDeterminedIP:9025 기본값(${yarn.resourcemanager.hostname}:8033)
yarn.resourcemanager.resource-tracker.address emrDeterminedIP:9023 기본값(${yarn.resourcemanager.hostname}:8031)
yarn.resourcemanager.scheduler.address emrDeterminedIP:9024 기본값(${yarn.resourcemanager.hostname}:8030)
yarn.resourcemanager.webapp.address 0.0.0.0:9026 기본값(${yarn.resourcemanager.hostname}:8088)
yarn.web-proxy.address emrDeterminedIP:9046 기본값(값 지정 안 함)
yarn.resourcemanager.hostname 0.0.0.0(기본값) emrDeterminedIP
참고

emrDeterminedIP는 Amazon에서 생성한 IP 주소입니다EMR.

사용자

AMI 버전을 사용할 때 사용자는 모든 프로세스를 hadoop 실행하고 모든 파일을 소유합니다. Amazon EMR 릴리스 버전 4.0.0 이상에서는 사용자가 애플리케이션 및 구성 요소 수준에 있습니다.

설치 시퀀스, 설치된 아티팩트 및 로그 파일 위치

AMI 버전을 사용하는 경우 애플리케이션 아티팩트와 해당 구성 디렉터리가 /home/hadoop/application 디렉터리에 설치됩니다. 예를 들어 Hive를 설치한 경우 디렉터리는 /home/hadoop/hive입니다. Amazon EMR 릴리스 4.0.0 이상에서는 /usr/lib/application 디렉터리에 애플리케이션 아티팩트가 설치됩니다. AMI 버전을 사용할 때 로그 파일은 다양한 위치에서 찾을 수 있습니다. 아래 표에는 위치가 나열되어 있습니다.

Amazon S3에서 로그 위치의 변경
대몬(daemon) 또는 애플리케이션 디렉터리 위치
인스턴스 상태 node/instance-id/instance-state/
hadoop-hdfs-namenode 데몬/instance-id/hadoop-hadoop-namenode.log
hadoop-hdfs-datanode 데몬/instance-id/hadoop-hadoop-datanode.log
hadoop-yarn(ResourceManager) 데몬/instance-id/yarn-hadoop-resourcemanager
하둡 yarn(프록시 서버) 데몬/instance-id/yarn-hadoop-proxyserver
mapred-historyserver 데몬/instance-id/
httpfs 데몬/instance-id/httpfs.log
hive-server node/instance-id/hive-server/hive-server.log
hive-metastore node/instance-id/apps/hive.log
Hive CLI node/instance-id/apps/hive.log
YARN 애플리케이션 사용자 로그 및 컨테이너 로그 task-attempts/
Mahout N/A
Pig N/A
spark-historyserver 해당 사항 없음
mapreduce 작업 기록 파일 jobs/

Command Runner

AMI 버전을 사용하는 경우와 같은 많은 스크립트 또는 프로그램이 쉘 로그인 경로 환경에 배치/home/hadoop/contrib/streaming/hadoop-streaming.jar되지 않으므로 command-runner.jar 또는 script-runner.jar와 같은 jar 파일을 사용하여 스크립트를 실행할 때 전체 경로를 지정해야 합니다. command-runner.jar는에 AMI 있으므로의 경우와 URI 마찬가지로 전체를 알 필요가 없습니다script-runner.jar.

복제 인수

복제 인수를 사용하면 하둡을 시작할 시기를 구성할 수 있습니다JVM. 모든 태스크에 JVM 대해 새 하둡을 시작하여 태스크 격리를 개선하거나 태스크 JVMs 간에 공유하여 프레임워크 오버헤드를 줄일 수 있습니다. 많은 작은 파일을 처리하는 경우 JVM 여러 번 재사용하여 시작 비용을 분할 상환하는 것이 좋습니다. 그러나 각 작업이 오래 걸리거나 대량의 데이터를 처리하는 경우를 재사용하지 않도록 선택하여 모든 메모리가 후속 작업에 사용 중지되도록 JVM할 수 있습니다. AMI 버전을 사용할 때 configure-hadoop 부트스트랩 작업을 사용하여 복제 인수를 사용자 지정하여 mapred.job.reuse.jvm.num.tasks 속성을 설정할 수 있습니다.

다음 예제에서는 무한 JVM 재사용을 위한 JVM 재사용 계수를 설정하는 방법을 보여줍니다.

참고

가독성을 위해 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"]