Heim > Artikel > Backend-Entwicklung > Kann PHP Hadoop verwenden?
Hadoop ist eine von der Apache Foundation entwickelte verteilte Systeminfrastruktur. Benutzer können verteilte Programme entwickeln, ohne die zugrunde liegenden Details der Verteilung zu kennen. Nutzen Sie die Leistungsfähigkeit von Clustern für Hochgeschwindigkeits-Computing und -Speicherung voll aus.
Obwohl Hadoop in Java geschrieben ist, bietet Hadoop Stream eine API, die es Benutzern ermöglicht, Kartenfunktionen zu schreiben und in jeder Sprache zu reduzieren. (Empfohlenes Lernen: PHP-Video-Tutorial)
Der Schlüssel zum Hadoop-Flow liegt darin, dass er den UNIX-Standardflow als Schnittstelle zwischen dem Programm und Hadoop verwendet. Solange daher jedes Programm Daten aus dem Standardeingabestream lesen und Daten in den Standardausgabestream schreiben kann, können die Kartenfunktion und die Reduzierungsfunktion des MapReduce-Programms über den Hadoop-Stream in jeder Sprache geschrieben werden.
Zum Beispiel:
bin/hadoop jar contrib/streaming/hadoop-streaming-0.20.203.0.jar -mapper /usr/local/hadoop/mapper.php -reducer /usr/local/hadoop/reducer.php -input test/* -output out4
Das durch Hadoop-Streaming eingeführte Paket: hadoop-streaming-0.20.203.0.jar. Es gibt kein hadoop-streaming.jar im Hadoop-Stammverzeichnis, da Streaming ein ist contrib. Sie müssen es also unter contrib finden, am Beispiel von hadoop-0.20.2, es ist hier:
-input: Geben Sie den Pfad zur Eingabe-HDFS-Datei an
-output : Geben Sie den Pfad zur HDFS-Ausgabedatei an
-mapper: Geben Sie die Kartenfunktion an
-reducer: Geben Sie die Reduzierungsfunktion an
Mapper-Funktion
Mapper.php-Datei, schreiben Sie den folgenden Code:
#!/usr/local/php/bin/php <?php $word2count = array(); // input comes from STDIN (standard input) // You can this code :$stdin = fopen(“php://stdin”, “r”); while (($line = fgets(STDIN)) !== false) { // remove leading and trailing whitespace and lowercase $line = strtolower(trim($line)); // split the line into words while removing any empty string $words = preg_split('/\W/', $line, 0, PREG_SPLIT_NO_EMPTY); // increase counters foreach ($words as $word) { $word2count[$word] += 1; } } // write the results to STDOUT (standard output) // what we output here will be the input for the // Reduce step, i.e. the input for reducer.py foreach ($word2count as $word => $count) { // tab-delimited echo $word, chr(9), $count, PHP_EOL; } ?>
Das obige ist der detaillierte Inhalt vonKann PHP Hadoop verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!