2016-11-18 2 views
0

Ich habe eine komplexe Schweine-Skript. Von seinen Protokollen kann ich sehen, dass es 2 oder 3 MR-Prozesse sequentiell überspannt, abhängig vom Datenvolumen. (Sagen wir mal, A & B)Schwein, warum es mehr als einen mapreduce Prozess läuft?

PS: B ausgelöst erst nach Abschluss

Ist das erwartet? Gibt es eine Möglichkeit, herauszufinden, welcher Teil meines Schweineskriptes welchen Prozess auslöst? Mein Endziel ist es, das Schwein-Skript zu optimieren, um schneller zu laufen.

Einfachere Version meiner Aufgabe ist wie folgt. Dieses Pig-Skript durchläuft umfangreiche Protokolldateien aus verschiedenen Anwendungen. Für jedes Protokoll parst er die Daten mit Regex und berichtet Metriken wie Traffic Count, Avg bzw. Zeit für verschiedene Dimensionen pro Stunde

Der Code ist wirklich lang und macht mehrere For-jedes mit Filtern, ein Join & eine große GROUP BY mit mehreren Dimensionen.

Antwort

0

Sie können EXPLAIN bis view Pig's execution plan für Ihr Skript verwenden. Sie Ausgabe wie folgt erhalten:

A = LOAD 'student' AS (name:chararray, age:int, gpa:float); 

B = GROUP A BY name; 

C = FOREACH B GENERATE COUNT(A.age); 

EXPLAIN C; 
----------------------------------------------- 
Logical Plan: 
----------------------------------------------- 
Store xxx-Fri Dec 05 19:42:29 UTC 2008-23 Schema: {long} Type: Unknown 
| 
|---ForEach xxx-Fri Dec 05 19:42:29 UTC 2008-15 Schema: {long} Type: bag 
etc ... 

----------------------------------------------- 
Physical Plan: 
----------------------------------------------- 
Store(fakefile:org.apache.pig.builtin.PigStorage) - xxx-Fri Dec 05 19:42:29 UTC 2008-40 
| 
|---New For Each(false)[bag] - xxx-Fri Dec 05 19:42:29 UTC 2008-39 
    | | 
    | POUserFunc(org.apache.pig.builtin.COUNT)[long] - xxx-Fri Dec 05 
etc ... 

-------------------------------------------------- 
| Map Reduce Plan        
------------------------------------------------- 
MapReduce node xxx-Fri Dec 05 19:42:29 UTC 2008-41 
Map Plan 
Local Rearrange[tuple]{chararray}(false) - xxx-Fri Dec 05 19:42:29 UTC 2008-34 
| | 
| Project[chararray][0] - xxx-Fri Dec 05 19:42:29 UTC 2008-35 
etc ... 

Dann die Optimization Rules und Performance Enhancers nach Möglichkeiten, überprüfen Sie Ihre Pipeline zu optimieren.

0

Dieses Verhalten könnte möglich sein, weil Ihr Garn Container voll wird, wie Sie sagten, Sie haben große Datenmenge, so Schwein Brände Map Reducers intern und jeder reduzieren Aufgabe könnte gesamte Garn Container daher nach erfolgreicher Ausführung von 1 Aufgabe Ruhe Aufgabe wird ausgeführt. Sie können Ihre MR Job-Statistik mit Ambari Konsole (GUI) oder mit dem Befehl

hadoop job -list 

überprüfen oder yarn application -list (hadoop Version 2.3 und höher) versuchen diese jede Aufgabe alle Joblisten und Speichergröße zeigen

zugewiesen

für Ihren zweiten Teil der Frage also für Pig Skript Optimierung

Sie mapreduce parallel Eigenschaft wie

SET default_parallel XXX 
einstellen

wobei xxx die Anzahl der Reduzierungen ist

Verwandte Themen