

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.

# Daten per Streaming verarbeiten
<a name="UseCase_Streaming"></a>

Hadoop-Streaming ist ein im Lieferumfang von Hadoop integriertes Hilfsprogramm, mit dem Sie MapReduce ausführbare Dateien in anderen Sprachen als Java entwickeln können. Streaming wird als JAR-Datei implementiert. Somit können Sie die Datei wie jede andere JAR-Datei über die Amazon-EMR-API oder die Befehlszeile ausführen. 

In diesem Abschnitt wird die Verwendung von Streaming mit Amazon EMR beschrieben. 

**Anmerkung**  
Apache Hadoop Streaming ist ein unabhängiges Tool. Daher werden seine Funktionen und Parameter hier nicht beschrieben. [Weitere Informationen zum Hadoop-Streaming finden Sie unter http://hadoop.apache. org/docs/stable/hadoop-streaming/HadoopStreaming](http://hadoop.apache.org/docs/stable/hadoop-streaming/HadoopStreaming.html).html.

## Verwenden des Hadoop-Streaming-Dienstprogramms
<a name="HadoopStreamCommands"></a>

In diesem Abschnitt wird die Verwendung des Hadoop-Streaming-Dienstprogramms beschrieben.


**Hadoop-Prozess**  

|  |  | 
| --- |--- |
| 1 | Schreiben Sie Ihre ausführbare Mapper- und Reducer-Datei in der Programmiersprache Ihrer Wahl.<br />Folgen Sie den Anweisungen in der Dokumentation zu Hadoop, um die ausführbaren Dateien zu schreiben. Die Programme sollten ihre Eingaben über die Standardeingabe lesen und die Daten über die Standardausgabedaten ausgeben. Standardmäßig stellt jede Zeile der Eingabe/Ausgabe einen Datensatz dar. Der erste Tabulator jeder Zeile dient als Trennzeichen zwischen Schlüssel und Wert. | 
| 2 | Testen Sie Ihre ausführbaren Dateien lokal und laden Sie sie in Amazon S3 hoch. | 
| 3 | Verwenden Sie die Amazon EMR oder die Amazon-EMR-Konsole, um Ihre Anwendung auszuführen. | 

Jedes Mapper-Skript startet als separater Prozess im Cluster. Jede ausführbare Reducer-Datei wandelt die Ausgabe der ausführbaren Mapper-Datei in die Datenausgabe des Auftragverlaufs um.

Die Parameter `input`, `output`, `mapper` und `reducer` sind für die meisten Streaming-Anwendungen erforderlich. Die folgende Tabelle beschreibt diese und andere (optionale) Parameter.


| Parameter | Description | Erforderlich | 
| --- | --- | --- | 
| -input | Speicherort der Eingabedaten in Amazon S3.<br />Typ: Zeichenfolge<br />Standard: keiner<br />Beschränkung: URI. Wenn kein Protokoll angegeben wurde, wird das Standarddateisystem des Clusters verwendet.  | Ja | 
| -output | Speicherort in Amazon S3, in dem Amazon EMR die verarbeiteten Daten hochlädt.<br />Typ: Zeichenfolge<br />Standard: keiner<br />Beschränkung: URI<br />Standard: Wenn kein Speicherort angegeben ist, werden die Daten von Amazon EMR in den von `input` angegebenen Speicherort hochgeladen. | Ja | 
| -mapper | Name der ausführbaren Mapper-Datei.<br />Typ: Zeichenfolge<br />Standard: keiner | Ja | 
| -reducer | Name der ausführbaren Reducer-Datei.<br />Typ: Zeichenfolge<br />Standard: keiner | Ja | 
| -cacheFile | Ein Amazon-S3-Speicherort mit Dateien, die Hadoop in Ihr lokales Arbeitsverzeichnis kopieren soll (in erster Linie zur Verbesserung der Leistung).<br />Typ: Zeichenfolge<br />Standard: keiner<br />Beschränkungen: [URI]\#[symlink-Name zur Erstellung im Arbeitsverzeichnis]  | Nein | 
| -cacheArchive | JAR-Datei, die in das Arbeitsverzeichnis extrahiert werden soll<br />Typ: Zeichenfolge<br />Standard: keiner<br />Beschränkungen: [URI]\#[symlink-Verzeichnisname zur Erstellung im Arbeitsverzeichnis  | Nein | 
| -combiner | Kombiniert Ergebnisse<br />Typ: Zeichenfolge<br />Standard: keiner<br />Einschränkungen: Java-Klassenname | Nein | 

Das folgende Codebeispiel ist eine ausführbare Mapper-Datei, die in Python geschrieben ist. Dieses Skript ist Teil der WordCount Beispielanwendung.

```
 1. #!/usr/bin/python
 2. import sys
 3. 
 4. def main(argv):
 5.   line = sys.stdin.readline()
 6.   try:
 7.     while line:
 8.       line = line.rstrip()
 9.       words = line.split()
10.       for word in words:
11.         print "LongValueSum:" + word + "\t" + "1"
12.       line = sys.stdin.readline()
13.   except "end of file":
14.     return None
15. if __name__ == "__main__":
16.   main(sys.argv)
```