You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 70 Next »

Aggregators

Introduction

Quoting from Pregel paper: aggregators are a mechanism for global communication, monitoring, and data. Each vertex can provide a value to an aggregator in superstep S, the system combines those values using a reduction operator, and the resulting value is made available to all vertices in superstep S + 1.

You can think aggregators as a tree, that the leafs (which are the graph vertices) are sending messages to the root (the master aggregator), and then the root is combining all these messages to a value. In the end, this combined values is distributed back to the leafs. Aggregators are useful for statistics (think of an histogram of vertex degrees) or for global controlling.

Registering aggregators

To start using aggregators, you must register them in your GraphJob.

e.g.

HamaConfiguration conf = new HamaConfiguration(new Configuration());
GraphJob graphJob = new GraphJob(conf, MyClass.class);

// To add an average aggregator
graphJob.setAggregatorClass(AverageAggregator.class);

// To add a sum aggregator
graphJob.setAggregatorClass(SumAggregator.class);

There are lots of different aggregators and you can also make your own. Look for already implemented aggregators in org.apache.hama.graph package.

Start working with aggregators

To start aggregating values from your vertices, is very easy and strait forward. From your vertex, use:

this.aggregate(index,value);

The index parameter of this method is a number that is equivalent to the order of the registered aggregator. (The first registered aggregator is number 0, second is number 1 etc.)

Get results

Inside your vertex, you can get the results of each aggregator by using this method:

this.getAggregatedValue(index);

Write your own aggregators

To write your own aggregator, you have o extend AbstractAggregator class and implement the methods of #aggregate(M value) and #getValue(). For more, please see the default implemented aggregators in org.apache.hama.graph package.

  • No labels