2016-04-27 7 views
0

Ich habe ein Objekt:im Cluster-Modus DistributedCached Verwenden von

class Cache { 
    Map<K,V> map; 
} 

I DistributedCache verwendet, um eine URI enthält, dieses Objekt zu spezifizieren, dann in der Setup() Funktion in jeder Karte Aufgabe, geladen ich dieses Cache-Objekt für die Verarbeitung Insbesondere verwendete Cache-Objekt, um einen Wert in jeder Map-Task zu speichern.

Meine Frage ist, dass der Inhalt der Karte in jedem Datenknoten unterschiedlich sein wird, wenn wir im Cluster-Modus Hadoop ausführen. Ist es richtig? Wenn ich im lokalen Modus entwickelt habe, enthält der Inhalt der Karte das Ergebnis für den gesamten Datensatz.

Antwort

0

Die auf den DN gespeicherten Daten haben dasselbe Format und der Mapper verarbeitet die Datei desselben Formats. Im Treibercode müssen Sie die Eingabe- und Formattypen definieren. In diesem Fall ist der Kontext identisch. Der Map-Kontext ist derselbe, wenn eine Map-Task auf einer beliebigen Anzahl von DNs ausgeführt wird.

Jetzt im verteilten Cache werden Sie die Dateien mit DistributedCache API hinzufügen. Und in der Setup-Methode überprüfen Sie die Datei, die Sie unter dem Array von Path-Objekt verarbeiten möchten.

+0

Danke für deine Antwort, aber was ich meine hier ist, dass der Inhalt der map'p anders sein wird oder nicht? Bsp .: Knoten 1 enthält A, B, C, Knoten 2 enthält D, E, F ... dann enthält die Cachedatei in Knoten 1 (A, B, C) und die Cachedatei in Knoten 2 (D, E, F) ? – nd07

+0

Wenn Sie Map Reduce Applications schreiben, möchten Sie, dass einige Dateien für alle Knoten in Hadoop Cluster freigegeben werden. Es kann eine einfache Eigenschaftendatei oder eine ausführbare JAR-Datei sein. Hadoop Map Reduce Project bietet uns diese Möglichkeit mit etwas, das als DistributedCache bezeichnet wird. Dieser verteilte Cache wird mit der Jobkonfiguration konfiguriert. Er bietet schreibgeschützte Daten für alle Computer im Cluster. –

Verwandte Themen