@Override public void remove() throws IOException { MapWritable msg = new MapWritable(); msg.put(GraphJobRunner.FLAG_VERTEX_DECREASE, this.vertexID); // Get master task peer. String destPeer = GraphJobRunner.getMasterTask(this.getPeer()); runner.getPeer().send(destPeer, new GraphJobMessage(msg)); alterVertexCounter(-1); }
@Override public void addVertex(V vertexID, List<Edge<V, E>> edges, M value) throws IOException { MapWritable msg = new MapWritable(); // Create the new vertex. Vertex<V, E, M> vertex = GraphJobRunner.<V, E, M>newVertexInstance(GraphJobRunner.VERTEX_CLASS); vertex.setEdges(edges); vertex.setValue(value); vertex.setVertexID(vertexID); msg.put(GraphJobRunner.FLAG_VERTEX_INCREASE, vertex); runner.getPeer().send(runner.getHostName(vertexID), new GraphJobMessage(msg)); alterVertexCounter(1); }
@Override public void readFields(DataInput in) throws IOException { if (in.readBoolean()) { if (this.vertexID == null) { this.vertexID = GraphJobRunner.createVertexIDObject(); } this.vertexID.readFields(in); } if (in.readBoolean()) { if (this.value == null) { this.value = GraphJobRunner.createVertexValue(); } this.value.readFields(in); } this.lastComputedSuperstep = in.readLong(); this.edges = new ArrayList<Edge<V, E>>(); if (in.readBoolean()) { int num = in.readInt(); if (num > 0) { for (int i = 0; i < num; ++i) { V vertex = GraphJobRunner.createVertexIDObject(); vertex.readFields(in); E edgeCost = null; if (in.readBoolean()) { edgeCost = GraphJobRunner.createEdgeCostObject(); edgeCost.readFields(in); } Edge<V, E> edge = new Edge<V, E>(vertex, edgeCost); this.edges.add(edge); } } } votedToHalt = in.readBoolean(); readState(in); }
@Override public void sendMessageToNeighbors(M msg) throws IOException { runner.sendMessage(this.getEdges(), msg); }
@Override public void sendMessage(V destinationVertexID, M msg) throws IOException { runner.sendMessage(destinationVertexID, msg); }
@Override public void sendMessage(Edge<V, E> e, M msg) throws IOException { runner.sendMessage(e.getDestinationVertexID(), msg); }
public HamaConfiguration getConf() { return runner.getPeer().getConfiguration(); }
@Override public Counter getCounter(String group, String name) { return runner.getPeer().getCounter(group, name); }
@Override public Counter getCounter(Enum<?> name) { return runner.getPeer().getCounter(name); }
/** * Get the number of aggregated vertices in the last superstep. Or null if no aggregator is * available.You have to supply an index, the index is defined by the order you set the aggregator * classes in {@link GraphJob#setAggregatorClass(Class...)}. Index is starting at zero, so if you * have a single aggregator you can retrieve it via {@link #getNumLastAggregatedVertices}(0). */ public IntWritable getNumLastAggregatedVertices(int index) { return runner.getNumLastAggregatedVertices(index); }
/** * Get the last aggregated value of the defined aggregator, null if nothing was configured or not * returned a result. You have to supply an index, the index is defined by the order you set the * aggregator classes in {@link GraphJob#setAggregatorClass(Class...)}. Index is starting at zero, * so if you have a single aggregator you can retrieve it via {@link * GraphJobRunner#getLastAggregatedValue}(0). */ @SuppressWarnings("unchecked") @Override public M getAggregatedValue(int index) { return (M) runner.getLastAggregatedValue(index); }
@Override public long getTotalNumVertices() { return runner.getNumberVertices(); }
/** Gives access to the BSP primitives and additional features by a peer. */ public BSPPeer<Writable, Writable, Writable, Writable, GraphJobMessage> getPeer() { return runner.getPeer(); }
public int getNumPeers() { return runner.getPeer().getNumPeers(); }
public int getMaxIteration() { return runner.getMaxIteration(); }
@Override public long getSuperstepCount() { return runner.getNumberIterations(); }