기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon EMR의 이전 AMI 버전을 사용하여 클러스터 및 애플리케이션 구성 사용자 지정
Amazon EMR 릴리스 버전 4.0.0에서는 구성 분류를 사용하여 애플리케이션을 구성하는 간단한 방법이 도입되었습니다. 자세한 내용은 애플리케이션 구성 단원을 참조하십시오. AMI 버전을 사용할 때 전달하는 인수와 함께 부트스트랩 작업을 사용하여 애플리케이션을 구성합니다. 예를 들어, configure-hadoop 및 configure-daemons 부트스트랩 작업은 Hadoop 및 Yarn별 환경 속성(예: --namenode-heap-size)을 설정합니다. 최신 버전에서는 이러한 사항이 hadoop-env 및 yarn-env 구성 분류를 통해 구성됩니다. 일반적인 구성을 수행하는 부트스트랩 작업은 Github의 emr-bootstrap-actions 리포지토리
다음 테이블에서는 부트스트랩 작업을 최신 Amazon EMR 릴리스 버전에 있는 구성 분류에 매핑합니다.
| 영향을 받는 애플리케이션 파일 이름 | 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 |
| 영향을 받는 애플리케이션 파일 이름 | 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 |
| 영향을 받는 애플리케이션 파일 이름 | 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 버전을 사용할 때 하둡 환경을 구성하기 위해 hadoop-user-env.sh 스크립트가 configure-daemons 부트스트랩 작업과 함께 사용됩니다. 이 스크립트에는 다음 작업이 포함되어 있습니다.
#!/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 파일에서 주로 설정됩니다. 또한 애플리케이션 RPM에서 설치한 /usr/bin/의 래퍼 스크립트는 실제 빈 스크립트를 포함하기 전에 추가 환경 변수를 설정할 수 있습니다.
서비스 포트
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 EMR에서 생성되는 IP 주소입니다.
Users
AMI 버전을 사용할 때 hadoop 사용자는 모든 프로세스를 실행하고 모든 파일을 소유합니다. Amazon EMR 릴리스 버전 4.0.0 이상에서는 사용자가 애플리케이션 및 구성 요소 수준에 존재합니다.
설치 시퀀스, 설치된 아티팩트 및 로그 파일 위치
AMI 버전을 사용할 때 애플리케이션 아티팩트 및 구성 요소 디렉터리는 /home/hadoop/ 디렉터리에 설치됩니다. 예를 들어 Hive를 설치한 경우 디렉터리는 application/home/hadoop/hive입니다. Amazon EMR 릴리스 4.0.0 이상에서는 애플리케이션 아티팩트가 /usr/lib/ 디렉터리에 설치됩니다. AMI 버전을 사용할 때 로그 파일은 다양한 위치에 저장됩니다. 아래 표에는 위치가 나열되어 있습니다.application
| 대몬(daemon) 또는 애플리케이션 | 디렉터리 위치 |
|---|---|
| 인스턴스 상태 | node/instance-id/instance-state/ |
| hadoop-hdfs-namenode | daemons/instance-id/hadoop-hadoop-namenode.log |
| hadoop-hdfs-datanode | daemons/instance-id/hadoop-hadoop-datanode.log |
| hadoop-yarn(ResourceManager) | daemons/instance-id/yarn-hadoop-resourcemanager |
| 하둡 yarn(프록시 서버) | daemons/instance-id/yarn-hadoop-proxyserver |
| mapred-historyserver | daemons/instance-id/ |
| httpfs | daemons/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에 있으므로 script-runner.jar의 경우처럼 전체 URI를 알 필요가 없습니다.
복제 인수
복제 인수를 사용하면 하둡 JVM을 시작할 시기를 구성할 수 있습니다. 모든 작업에 대해 새 하둡 JVM을 시작하여 작업을 보다 효과적으로 격리하거나, 작업 간에 JVM을 공유하여 프레임워크 오버헤드를 낮출 수 있습니다. 많은 작은 파일을 처리하려는 경우에는 JVM을 여러 번 재사용하여 시작 비용을 분할 상환하는 것이 합리적입니다. 하지만 각 작업마다 오랜 시간이 걸리거나 대량의 데이터를 처리하는 경우에는 모든 메모리가 후속 작업을 위해 해제될 수 있도록 JVM을 재사용하지 않도록 선택할 수 있습니다. AMI 버전을 사용할 때 configure-hadoop 부트스트랩 작업을 사용하여 복제 인수를 mapred.job.reuse.jvm.num.tasks 속성으로 설정하도록 사용자 지정할 수 있습니다.
다음은 무제한 JVM 재사용을 위해 JVM 재사용 인수를 설정한 예입니다.
참고
가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.
aws emr create-cluster --name "Test cluster" --ami-version3.11.0\ --applications Name=HueName=HiveName=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"]