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.
DistributedCache ist eine Hadoop-Funktion, die die Effizienz steigern kann, wenn eine Map- oder Reduce-Aufgabe Zugriff auf gemeinsame Daten benötigt. Wenn Ihr Cluster von vorhandenen Anwendungen oder Binärdateien abhängt, die bei der Erstellung des Clusters nicht installiert wurden, können Sie DistributedCache um diese Dateien zu importieren. Mit dieser Funktion kann ein Cluster-Knoten die importierten Dateien aus seinem lokalen Dateisystem lesen, anstatt die Dateien von anderen Cluster-Knoten abzurufen.
Weitere Informationen finden Sie unter http://hadoop.apache. org/docs/stable/api/org/apache/hadoop/filecache/DistributedCache.html.
Du rufst an DistributedCache wenn Sie den Cluster erstellen. Die Dateien werden vor dem Starten des Hadoop-Auftrags nur für die Dauer des Auftrags im Cache zwischengespeichert. Sie können Dateien zwischenspeichern, die auf jedem Hadoop-kompatiblen Dateisystem gespeichert sind, z. B. HDFS oder Amazon S3. Die Standardgröße des Datei-Caches ist 10 GB. Zum Ändern der Größe des Caches konfigurieren Sie den Hadoop-Parameter local.cache.size
mithilfe der Bootstrap-Aktion neu. Weitere Informationen finden Sie unter Erstellen Sie Bootstrap-Aktionen, um zusätzliche Software mit einem EMR Amazon-Cluster zu installieren.
Unterstützte Dateitypen
DistributedCache erlaubt sowohl einzelne Dateien als auch Archive. Einzelne Dateien werden schreibgeschützt zwischengespeichert. Für ausführbare und Binärdateien werden Ausführungsberechtigungen festgelegt.
Bei Archiven handelt es sich um eine oder mehrere Dateien im Paket, das mit einem Dienstprogramm wie gzip
erstellt wird. DistributedCache übergibt die komprimierten Dateien an jeden Kernknoten und dekomprimiert das Archiv im Rahmen des Cachings. DistributedCache unterstützt die folgenden Komprimierungsformate:
Speicherort der zwischengespeicherten Dateien
DistributedCache kopiert Dateien nur auf Kernknoten. Wenn es keine Kernknoten im Cluster gibt, DistributedCache kopiert die Dateien auf den primären Knoten.
DistributedCache ordnet die Cache-Dateien mithilfe von Symlinks dem aktuellen Arbeitsverzeichnis des Mappers und Reducers zu. Ein symbolischer Link (symlink) ist ein Alias für einen Dateispeicherort, nicht der tatsächliche Speicherort. Der Wert des Parameters, yarn.nodemanager.local-dirs
in yarn-site.xml
, gibt den Speicherort der temporären Dateien an. Amazon EMR legt diesen Parameter auf /mnt/mapred
oder eine Variation basierend auf Instance-Typ und EMR Version fest. Eine Einstellung kann die Werte /mnt/mapred
und /mnt1/mapred
haben, da der Instance-Typ über zwei flüchtige Volumes verfügt. Cache-Dateien befinden sich in einem Unterverzeichnis des Speicherorts für temporäre Dateien unter /mnt/mapred/taskTracker/archive
.
Wenn Sie eine einzelne Datei zwischenspeichern, DistributedCache legt die Datei in das archive
Verzeichnis. Wenn Sie ein Archiv zwischenspeichern, DistributedCache dekomprimiert die Datei und erstellt ein Unterverzeichnis /archive
mit demselben Namen wie die Archivdatei. Die einzelnen Dateien befinden sich im neuen Unterverzeichnis.
Sie können Folgendes verwenden … DistributedCache nur bei Verwendung von Streaming.
Auf zwischengespeicherte Dateien über Streaming-Anwendungen zugreifen
Um aus Ihren Mapper- oder Reducer-Anwendungen auf die zwischengespeicherten Dateien zugreifen zu können, müssen Sie Ihrem Anwendungspfad das aktuelle Arbeitsverzeichnis (./) hinzufügen und die zwischengespeicherten Dateien so referenzieren, als würden sie sich im aktuellen Arbeitsverzeichnis befinden.
Auf zwischengespeicherte Dateien über Streaming-Anwendungen zugreifen
Sie können die AWS Management Console und die verwenden, um Cluster AWS CLI zu erstellen, die den verteilten Cache verwenden.
- Console
-
So geben Sie verteilte Cache-Dateien mithilfe der neuen Konsole an
-
Melden Sie sich bei der AWS Management Console an und öffnen Sie die EMR Amazon-Konsole unter https://console.aws.amazon.com/emr.
-
Wählen Sie EC2 im linken Navigationsbereich unter EMRon die Option Clusters und anschließend Create cluster aus.
-
Wählen Sie unter Schritte die Option Schritt hinzufügen aus. Dadurch wird das Dialogfeld Schritt hinzufügen geöffnet. Geben Sie im Feld Argumente die Dateien und Archive an, die im Cache gespeichert werden sollen. Die Größe der Datei (oder Gesamtgröße der Dateien in einer Archivdatei) muss geringer sein als die zugewiesene Cachegröße.
Wenn Sie eine einzelne Datei zum verteilten Cache hinzufügen möchten, geben Sie -cacheFile
an, gefolgt vom Namen und Speicherort der Datei, dem Rautenzeichen (#) und dem Namen, den Sie der Datei geben möchten, wenn sie im lokalen Cache abgelegt wird. Im folgenden Beispiel wird gezeigt, wie eine einzelne Datei zum verteilten Cache hinzugefügt wird.
-cacheFile \
s3://amzn-s3-demo-bucket
/file-name
#cache-file-name
Geben Sie -cacheArchive
gefolgt von dem Speicherort der Dateien in Amazon S3, dem Rautenzeichen (#) und dann dem Namen ein, den Sie der Sammlung von Dateien im verteilten Cache geben möchten. Im folgenden Beispiel wird gezeigt, wie eine einzelne Datei zum verteilten Cache hinzugefügt wird.
-cacheArchive \
s3://amzn-s3-demo-bucket
/archive-name
#cache-archive-name
Geben Sie die entsprechenden Werte in die anderen Dialogfelder ein. Die Optionen unterscheiden sich je nach Schritttyp. Um Ihren Schritt hinzuzufügen und das Dialogfeld zu verlassen, wählen Sie Schritt hinzufügen.
-
Wählen Sie alle anderen Optionen aus, die für Ihren Cluster gelten.
-
Um Ihren Cluster jetzt zu starten, wählen Sie Cluster erstellen aus.
- CLI
-
Um verteilte Cache-Dateien mit dem AWS CLI
-
Um einen Streaming-Schritt beim Erstellen eines Clusters zu senden, geben Sie den Befehl create-cluster
mit dem Parameter --steps
ein. Um verteilte Cachedateien mithilfe von anzugeben AWS CLI, geben Sie beim Absenden eines Streaming-Schritts die entsprechenden Argumente an.
Wenn Sie eine einzelne Datei zum verteilten Cache hinzufügen möchten, geben Sie -cacheFile
an, gefolgt vom Namen und Speicherort der Datei, dem Rautenzeichen (#) und dem Namen, den Sie der Datei geben möchten, wenn sie im lokalen Cache abgelegt wird.
Geben Sie -cacheArchive
gefolgt von dem Speicherort der Dateien in Amazon S3, dem Rautenzeichen (#) und dann dem Namen ein, den Sie der Sammlung von Dateien im verteilten Cache geben möchten. Im folgenden Beispiel wird gezeigt, wie eine einzelne Datei zum verteilten Cache hinzugefügt wird.
Weitere Informationen zur Verwendung von EMR Amazon-Befehlen in der AWS CLI finden Sie unterhttps://docs.aws.amazon.com/cli/latest/reference/emr.
Beispiel 1
Geben Sie den folgenden Befehl zum Starten eines Clusters und zum Senden eines Streaming-Schritts ein, der -cacheFile
zum Hinzufügen einer Datei, sample_dataset_cached.dat
, zum Cache verwendet.
aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 --applications Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 --steps Type=STREAMING,Name="Streaming program",ActionOnFailure=CONTINUE,Args=["--files","s3://my_bucket/my_mapper.py s3://my_bucket/my_reducer.py","-mapper","my_mapper.py","-reducer","my_reducer.py,"-input","s3://my_bucket/my_input","-output","s3://my_bucket/my_output", "-cacheFile","s3://my_bucket/sample_dataset.dat#sample_dataset_cached.dat"]
Wenn Sie die Instance-Anzahl ohne den --instance-groups
-Parameter angeben, wird ein einzelner Primärknoten gestartet. Die verbleibenden Instances werden dabei als Core-Knoten gestartet. Alle Knoten verwenden den im Befehl angegebenen Instance-Typ.
Wenn Sie die EMR Standard-Servicerolle und das EC2 Instanzprofil noch nicht erstellt haben, geben Sie vor der Eingabe des create-cluster
Unterbefehls ein, aws emr
create-default-roles
um sie zu erstellen.
Beispiel 2
Der folgende Befehl erstellt einen Streaming-Cluster und verwendet -cacheArchive
, um dem Cache ein Dateiarchiv hinzuzufügen.
aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 --applications Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 --steps Type=STREAMING,Name="Streaming program",ActionOnFailure=CONTINUE,Args=["--files","s3://my_bucket/my_mapper.py s3://my_bucket/my_reducer.py","-mapper","my_mapper.py","-reducer","my_reducer.py,"-input","s3://my_bucket/my_input","-output","s3://my_bucket/my_output", "-cacheArchive","s3://my_bucket/sample_dataset.tgz#sample_dataset_cached"]
Wenn Sie die Instance-Anzahl ohne den --instance-groups
-Parameter angeben, wird ein einzelner Primärknoten gestartet. Die verbleibenden Instances werden dabei als Core-Knoten gestartet. Alle Knoten verwenden den im Befehl angegebenen Instance-Typ.
Wenn Sie die EMR Standard-Servicerolle und das EC2 Standardinstanzprofil noch nicht erstellt haben, geben Sie vor der Eingabe des create-cluster
Unterbefehls ein, aws emr
create-default-roles
um sie zu erstellen.