Ugrás a fő tartalomhoz

Számlálók

A Hadoop a MapReduce job futása során statisztikákat készít, melyeket úgynevezett számlálókban tárol. A számlálókra a Context osztály példányain keresztül tudunk hivatkozást szerezni. tudjuk kiolvasni.

Például:

protected void cleanup(Context context) throws IOException, InterruptedException {
org.apache.hadoop.mapreduce.Counter counter = context.getCounter(TaskCounter.CPU_MILLISECONDS);
long milliSeconds = counter.getValue();
...
}
veszély

A számlálók értékei a számítógépek között csak a job legvégén kerülnek szinkronizálásra, sőt még csak egy számítógép esetén is a különböző task-ok között az értékek eltérőek lehetnek.

Ezért a programlogikában nem támaszkodhatunk a számlálók pontosságára.

Beépített számlálók

A beépített számlálók 5 csoportra vannak osztva. Minden számlálócsoport egy felsorolás, a specifikus enum elemek az egyes számlálók azonosítói.

SzámlálóTartalom
TaskCounterTask-ok (map, reduce, shuffle stb.) statisztikái.
FileSystemFájlrendszer statisztikák például írott vagy olvasott bájtok száma.
FileInputFormatBYTES_READ - beolvasott bájtok száma
FileOutputFormatBYTES_WRITTEN - írt bájtok száma
JobCounterJob szintű információk (pl. sikertelen mapek száma).

Saját számláló

Lehetőségünk van saját számlálót is definiálni, ehhez egyszerűen egy a Hadoop által még nem használt enum értéket kell átadnunk a Context getCounter() metódusának. Nyilvánvalóan ennek a kezeléséről nekünk kell gondoskodnunk.

enum CustomCounters {
CUSTOM_COUNTER;
}
protected void cleanup(Context context) throws IOException, InterruptedException {
Counter counter = context.getCounter(CustomCounters.CUSTOM_COUNTER);
counter.setValue(0); // beállítás
counter.increment(5); // növelés
long a = counter.getValue(); // a = 5
}