Dateien mit verteiltem Cache mit Amazon importieren 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.

Dateien mit verteiltem Cache mit Amazon importieren EMR

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:

  • zip

  • tgz

  • tar.gz

  • tar

  • jar

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
  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die EMR Amazon-Konsole unter https://console.aws.amazon.com/emr.

  2. Wählen Sie EC2 im linken Navigationsbereich unter EMRon die Option Clusters und anschließend Create cluster aus.

  3. 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.

  4. Wählen Sie alle anderen Optionen aus, die für Ihren Cluster gelten.

  5. 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.