

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Anpassen von Cluster- und Anwendungskonfiguration mit früheren AMI-Versionen von Amazon EMR
Anpassen von Konfigurationen

Mit Amazon-EMR-Version 4.0.0 wurde eine vereinfachte Methode zur Konfiguration von Anwendungen mithilfe von Konfigurationsklassifizierungen eingeführt. Weitere Informationen finden Sie unter [Anwendungen konfigurieren](emr-configure-apps.md). Wenn Sie eine AMI-Version verwenden, konfigurieren Sie Anwendungen mit Bootstrap-Aktionen und Argumenten, die Sie übergeben. Beispielsweise legen die `configure-hadoop`- und `configure-daemons`-Bootstrap-Aktionen Hadoop- und YARN-spezifische Umgebungseigenschaften wie `--namenode-heap-size` fest. In neueren Versionen werden diese mit den Konfigurationsklassifizierungen `hadoop-env` und `yarn-env` konfiguriert. Bootstrap-Aktionen, die allgemeine Konfigurationen durchführen, finden Sie im [emr-bootstrap-actions Repository auf](https://github.com/awslabs/emr-bootstrap-actions) Github.

Die folgenden Tabellen zeigen die Zuordnung von Bootstrap-Aktionen zu Konfigurationsklassifizierungen in neueren Amazon-EMR-Versionen.


**Hadoop**  

| Dateiname der betroffenen Anwendung | Bootstrap-Aktion für AMI-Version | Konfigurationsklassifizierung | 
| --- | --- | --- | 
| 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**  

| Dateiname der betroffenen Anwendung | Bootstrap-Aktion für AMI-Version | Konfigurationsklassifizierung | 
| --- | --- | --- | 
| hive-env.sh | – | hive-env | 
| hive-site.xml | hive-script --install-hive-site \$1\$1MY\$1HIVE\$1SITE\$1FILE\$1 | hive-site | 
| hive-exec-log4j.properties | – | hive-exec-log4j | 
| hive-log4j.properties | – | hive-log4j | 


**EMRFS**  

| Dateiname der betroffenen Anwendung | Bootstrap-Aktion für AMI-Version | Konfigurationsklassifizierung | 
| --- | --- | --- | 
| emrfs-site.xml | configure-hadoop -e | emrfs-site | 
| – | s3get -s s3://custom-provider.jar -d /usr/share/aws/emr/auxlib/ | emrfs-site (mit neuer Einstellung fs.s3.cse.encryptionMaterialsProvider.uri) | 

Eine Liste aller Klassifizierungen finden Sie unter [Anwendungen konfigurieren](emr-configure-apps.md).

## Variablen für die Anwendungsumgebung


Bei Verwendung einer AMI-Version wird ein `hadoop-user-env.sh`-Skript zusammen mit der Bootstrap-Aktion `configure-daemons` zur Konfiguration der Hadoop-Umgebung eingesetzt. Das Skript umfasst die folgenden Aktionen:

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

In Amazon-EMR-Version 4.x gehen Sie genauso vor und verwenden die Konfigurationsklassifizierung `hadoop-env`, wie im folgenden Beispiel gezeigt:

```
[ 
      { 
         "Classification":"hadoop-env",
         "Properties":{ 

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

Ein weiteres Beispiel verdeutlicht, dass die Verwendung von `configure-daemons` und die Übergabe von `--namenode-heap-size=2048` und `--namenode-opts=-XX:GCTimeRatio=19` den folgenden Konfigurationsklassifizierungen entspricht.

```
[ 
      { 
         "Classification":"hadoop-env",
         "Properties":{ 

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

Andere Umgebungsvariablen der Anwendung werden nicht länger in `/home/hadoop/.bashrc` definiert. Stattdessen werden sie hauptsächlich in `/etc/default`-Dateien nach Komponente oder Anwendung eingerichtet, z. B. `/etc/default/hadoop`. Wrapper-Skripte, die von der Anwendung `/usr/bin/` installiert werden, RPMs können auch zusätzliche Umgebungsvariablen setzen, bevor sie das eigentliche Bin-Skript einbeziehen.

## Service-Ports


Bei Verwendung einer AMI-Version nutzen einige Services benutzerdefinierte Ports.


**Änderungen der Port-Einstellungen**  

| Einstellung | AMI-Version 3.x | Open-Source-Standard | 
| --- | --- | --- | 
| fs.default.name | hdfs://emrDeterminedIP:9000 | Standard (hdfs: //:8020) emrDeterminedIP  | 
| dfs.datanode.address | 0.0.0.0:9200 | Standard (0.0.0.0:50010)  | 
| dfs.datanode.http.address | 0.0.0.0:9102 | Standard (0.0.0.0:50075)  | 
| dfs.datanode.https.address | 0.0.0.0:9402 | Standard (0.0.0.0:50475) | 
| dfs.datanode.ipc.address | 0.0.0.0:9201 | Standard (0.0.0.0:50020) | 
| dfs.http.address | 0.0.0.0:9101 | Standard (0.0.0.0:50070)  | 
| dfs.https.address | 0.0.0.0:9202 | Standard (0.0.0.0:50470)  | 
| dfs.secondary.http.address | 0.0.0.0:9104 | Standard (0.0.0.0:50090) | 
| yarn.nodemanager.address | 0.0.0.0:9103 | Standard (\$1\$1yarn.nodemanager.hostname\$1:0)  | 
| yarn.nodemanager.localizer.address  | 0.0.0.0:9033 | Standard (\$1\$1yarn.nodemanager.hostname\$1:8040) | 
| yarn.nodemanager.webapp.address | 0.0.0.0:9035 | Standard (\$1\$1yarn.nodemanager.hostname\$1:8042) | 
| yarn.resourcemanager.address | emrDeterminedIPStandard (hdfs: //:8020) ----sep----:9022 | Standard (\$1\$1yarn.resourcemanager.hostname\$1:8032) | 
| yarn.resourcemanager.admin.address | emrDeterminedIP:9022 ----sep----:9025 | Standard (\$1\$1yarn.resourcemanager.hostname\$1:8033) | 
| yarn.resourcemanager.resource-tracker.address | emrDeterminedIP:9025 ----sep----:9023 | Standard (\$1\$1yarn.resourcemanager.hostname\$1:8031) | 
| yarn.resourcemanager.scheduler.address | emrDeterminedIP:9023 ----sep----:9024 | Standard (\$1\$1yarn.resourcemanager.hostname\$1:8030) | 
| yarn.resourcemanager.webapp.address | 0.0.0.0:9026  | Standard (\$1\$1yarn.resourcemanager.hostname\$1:8088) | 
| yarn.web-proxy.address | emrDeterminedIP:9024 ----sep----:9046  | Standard (no-value)  | 
| yarn.resourcemanager.hostname | 0.0.0.0 (Standard)  | emrDeterminedIP | 

**Anmerkung**  
Das *emrDeterminedIP* ist eine IP-Adresse, die von Amazon EMR generiert wird.

## Benutzer


Bei Verwendung einer AMI-Version führt der Benutzer `hadoop` alle Prozesse aus. Zudem gehören ihm alle Dateien. Ab Amazon-EMR-Version 4.0.0 und höher sind Benutzer auf Anwendungs- und Komponentenebene vorhanden.

## Installationssequenz, installierte Artefakte und Speicherorte für die Protokolldatei


Bei Verwendung einer AMI-Version werden Anwendungs-Artefakte und deren Konfigurationsverzeichnisse im Verzeichnis `/home/hadoop/application` installiert. Wenn Sie beispielsweise das Verzeichnis Hive installiert hatten, lautete das Verzeichnis `/home/hadoop/hive`. Ab Amazon-EMR-Version 4.0.0 und höher werden Anwendungs-Artefakte im Verzeichnis `/usr/lib/application` installiert. Bei Verwendung einer AMI-Version werden Protokolldateien an unterschiedlichen Speicherorten gespeichert. In der folgenden Tabelle sind diese Speicherorte aufgeführt.


**Änderungen der Protokollspeicherorte in Amazon S3**  

| Daemon oder Anwendung | Speicherort des Verzeichnisses | 
| --- | --- | 
| instance-state | node/ /instance-state/ instance-id | 
| hadoop-hdfs-namenode | Dämonen/instance-id/.log hadoop-hadoop-namenode | 
| hadoop-hdfs-datanode | Daemonen/instance-id/hadoop-hadoop-datanode.log | 
| Hadoop-Garn ResourceManager () | instance-idDämonen//yarn-hadoop-resourcemanager | 
| hadoop-yarn (Proxy-Server) | Dämonen/instance-id/yarn-hadoop-proxyserver | 
| mapred-historyserver | Dämonen/instance-id/ | 
| httpfs | instance-idDämonen/ /httpfs.log | 
| hive-server | knoten/ instance-id /hive-server/hive-server.log | 
| hive-metastore | knoten/ /apps/hive.log instance-id | 
| Hive CLI | knoten/ /apps/hive.log instance-id | 
| Benutzer- und Container-Protokolle der YARN Anwendungen | task-attempts/ | 
| Mahout | – | 
| Pig | – | 
| spark-historyserver | – | 
| Verlaufsdateien des MapReduce-Auftrags | jobs/ | 

## Command Runner


Bei Verwendung einer AMI-Version werden viele Skripts oder Programme wie `/home/hadoop/contrib/streaming/hadoop-streaming.jar` nicht in der Shell-Anmeldepfadumgebung abgelegt. Deshalb müssen Sie den vollständigen Pfad angeben, wenn Sie eine JAR-Datei wie command-runner.jar oder script-runner.jar zur Skriptausführung einsetzen. `command-runner.jar` befindet sich im AMI. Sie müssen also anders als bei `script-runner.jar` nicht die vollständige URI kennen. 

## Replikationsfaktor


Mit dem Replikationsfaktor können Sie konfigurieren, wann eine Hadoop-JVM gestartet werden soll. Sie können für jede Aufgabe eine neue Hadoop-JVM starten, was für eine bessere Aufgabenisolierung sorgt, oder Sie können die Aufgaben gemeinsam nutzen, wodurch der JVMs Framework-Overhead geringer wird. Wenn Sie viele kleine Dateien verarbeiten, ist es durchaus sinnvoll, die JVM oft wieder zu verwenden, damit sich die Kosten für den Start amortisieren. Wenn jedoch die einzelnen Aufgaben viel Zeit in Anspruch nehmen oder Prozesse eine große Datenmenge verwenden, können Sie entscheiden, die JVM nicht erneut zu verwenden, um sicherzustellen, dass der gesamte JVM-Speicher für nachfolgende Aufgaben freigegeben wird. Bei Verwendung einer AMI-Version können Sie den Replikationsfaktor mit der Bootstrap-Aktion `configure-hadoop` anpassen, um die `mapred.job.reuse.jvm.num.tasks`-Eigenschaft festzulegen. 

Das folgende Beispiel zeigt die Einrichtung eines JVM-Wiederverwendungsfaktors für die unbegrenzte Wiederverwendung einer JVM.

**Anmerkung**  
Linux-Zeilenfortsetzungszeichen (\$1) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).

```
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"]
```