Customizing Cluster and Application Configuration With Earlier AMI Versions of Amazon EMR - Amazon EMR

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.

Customizing Cluster and Application Configuration With Earlier AMI Versions of Amazon EMR

Mit Amazon EMR Version 4.0.0 wurde eine vereinfachte Methode zur Konfiguration von Anwendungen mithilfe von Konfigurationsklassifizierungen eingeführt. Weitere Informationen finden Sie im Konfigurieren von Anwendungen. Wenn Sie eine AMI-Version verwenden, konfigurieren Sie Anwendungen mit Bootstrap-Aktionen und Argumenten, die Sie übergeben. Beispielsweise configure-hadoop und configure-daemons Bootstrap-Aktionen setzen Hadoop und Garn–spezifische Umgebungseigenschaften wie --namenode-heap-size. In aktuelleren Versionen sind diese unter Verwendung der hadoop-env und yarn-env Konfigurationsklassifizierungen. Informationen zu Bootstrap-Aktionen für allgemeine Konfigurationen finden Sie im emr-bootstrap-actions-Repository auf 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 ${MY_HIVE_SITE_FILE} 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 Konfigurieren von Anwendungen.

Application Environment Variables

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 Anwendungsumgebungsvariablen sind nicht mehr definiert in /home/hadoop/.bashrc. Stattdessen werden sie in erster Linie /etc/default Dateien pro Komponente oder Anwendung, wie /etc/default/hadoop. Wrapper-Skripts in /usr/bin/ die von Anwendungs-Rpms installiert werden, können auch zusätzliche Umgebungsvariablen festlegen, bevor sie das tatsächliche 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://emrDeterminedIP:8020)
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 (${yarn.nodemanager.hostname}:0)
yarn.nodemanager.localizer.address 0.0.0.0:9033 Standard (${yarn.nodemanager.hostname}:8040)
yarn.nodemanager.webapp.address 0.0.0.0:9035 Standard (${yarn.nodemanager.hostname}:8042)
yarn.resourcemanager.address emrDeterminedIP:9022 Standard (${yarn.resourcemanager.hostname}:8032)
yarn.resourcemanager.admin.address emrDeterminedIP:9025 Standard (${yarn.resourcemanager.hostname}:8033)
yarn.resourcemanager.resource-tracker.address emrDeterminedIP:9023 Standard (${yarn.resourcemanager.hostname}:8031)
yarn.resourcemanager.scheduler.address emrDeterminedIP:9024 Standard (${yarn.resourcemanager.hostname}:8030)
yarn.resourcemanager.webapp.address 0.0.0.0:9026 Standard (${yarn.resourcemanager.hostname}:8088)
yarn.web-proxy.address emrDeterminedIP:9046 Standard (no-value)
yarn.resourcemanager.hostname 0.0.0.0 (Standard) emrDeterminedIP
Anmerkung

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

Users

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.

Installation Sequence, Installed Artifacts, and Log File Locations

Bei Verwendung einer AMI-Version werden Anwendungs-Artefakte und deren Konfigurationsverzeichnisse im Verzeichnis /home/hadoop/application installiert. Wenn Sie beispielsweise Hive installiert haben, wäre das Verzeichnis /home/hadoop/hive. in Amazon EMR Version 4.0.0 und später werden Anwendungsartefakte im /usr/lib/application Verzeichnis. 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 Knoteninstance-idinstance-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
hadoop-yarn (Proxy-Server) Daemons/instance-id/yarn-hadoop-proxyserver
mapred-historyserver Daemons/instance-id/
httpfs Daemons/instance-id/httpfs.log
hive-server Knoteninstance-id/hive-server/hive-server.log
hive-metastore Knoteninstance-id/apps/hive.log
Hive CLI Knoteninstance-id/apps/hive.log
Benutzer- und Container-Protokolle der YARN Anwendungen task-attempts/
Mahout N/A
Pig N/A
spark-historyserver
Verlaufsdateien des MapReduce-Auftrags Aufträge

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.

Replication Factor

Mit dem Replikationsfaktor können Sie konfigurieren, wann eine Hadoop-JVM gestartet werden soll. Sie können eine neue Hadoop-JVM für jede Aufgabe starten, die eine bessere Isolierung bietet, oder Sie können JVMs mit Aufgaben teilen, um einen niedrigeren Framework-Overhead zu erzielen. 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

Zur besseren Lesbarkeit sind Linux-Zeilenfortsetzungszeichen (\) enthalten. Sie können entweder entfernt oder in Linux-Befehlen verwendet werden. Ersetzen Sie diese Zeichen unter Windows 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"]