You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@giraph.apache.org by ac...@apache.org on 2012/07/16 19:57:18 UTC
svn commit: r1362164 - in /giraph/trunk: ./ bin/
src/main/java/org/apache/giraph/ src/main/java/org/apache/giraph/examples/
Author: aching
Date: Mon Jul 16 17:57:17 2012
New Revision: 1362164
URL: http://svn.apache.org/viewvc?rev=1362164&view=rev
Log:
GIRAPH-81: Create annotations on provided algorithms for cli
(majakabiljo via aching).
Modified:
giraph/trunk/CHANGELOG
giraph/trunk/bin/giraph
giraph/trunk/src/main/java/org/apache/giraph/GiraphRunner.java
giraph/trunk/src/main/java/org/apache/giraph/examples/ConnectedComponentsVertex.java
giraph/trunk/src/main/java/org/apache/giraph/examples/SimplePageRankVertex.java
giraph/trunk/src/main/java/org/apache/giraph/examples/SimpleShortestPathsVertex.java
Modified: giraph/trunk/CHANGELOG
URL: http://svn.apache.org/viewvc/giraph/trunk/CHANGELOG?rev=1362164&r1=1362163&r2=1362164&view=diff
==============================================================================
--- giraph/trunk/CHANGELOG (original)
+++ giraph/trunk/CHANGELOG Mon Jul 16 17:57:17 2012
@@ -2,6 +2,9 @@ Giraph Change Log
Release 0.2.0 - unreleased
+ GIRAPH-81: Create annotations on provided algorithms for cli
+ (majakabiljo via aching).
+
GIRAPH-242: HashMapVertex stores neighbor ids twice.
(Alessandro Presta via hyunsik)
Modified: giraph/trunk/bin/giraph
URL: http://svn.apache.org/viewvc/giraph/trunk/bin/giraph?rev=1362164&r1=1362163&r2=1362164&view=diff
==============================================================================
--- giraph/trunk/bin/giraph (original)
+++ giraph/trunk/bin/giraph Mon Jul 16 17:57:17 2012
@@ -88,7 +88,7 @@ else
CLASSPATH2=`mvn dependency:build-classpath | grep -v "[INFO]"`
CLASSPATH=$CLASSPATH:$CLASSPATH2
- for f in `find $GIRAPH_HOME/target -name giraph\*.jar` ; do
+ for f in for f in $GIRAPH_HOME/target/giraph*.jar; do
if [ -e "$f" ]; then
JAR=$f
break
Modified: giraph/trunk/src/main/java/org/apache/giraph/GiraphRunner.java
URL: http://svn.apache.org/viewvc/giraph/trunk/src/main/java/org/apache/giraph/GiraphRunner.java?rev=1362164&r1=1362163&r2=1362164&view=diff
==============================================================================
--- giraph/trunk/src/main/java/org/apache/giraph/GiraphRunner.java (original)
+++ giraph/trunk/src/main/java/org/apache/giraph/GiraphRunner.java Mon Jul 16 17:57:17 2012
@@ -24,14 +24,21 @@ import org.apache.commons.cli.CommandLin
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
+import org.apache.giraph.examples.Algorithm;
+import org.apache.giraph.graph.BasicVertex;
import org.apache.giraph.graph.GiraphJob;
+import org.apache.giraph.utils.AnnotationUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
+import org.apache.log4j.Level;
import org.apache.log4j.Logger;
+import org.apache.zookeeper.ZooKeeper;
+
+import java.util.List;
/**
* Helper class to run Giraph applications by specifying the actual class name
@@ -62,6 +69,8 @@ public class GiraphRunner implements Too
private static Options getOptions() {
Options options = new Options();
options.addOption("h", "help", false, "Help");
+ options.addOption("la", "listAlgorithms", false, "List supported " +
+ "algorithms");
options.addOption("q", "quiet", false, "Quiet output");
options.addOption("w", "workers", true, "Number of workers");
options.addOption("if", "inputFormat", true, "Graph inputformat");
@@ -87,23 +96,52 @@ public class GiraphRunner implements Too
this.conf = conf;
}
+ /**
+ * Prints description of algorithms annotated with {@link Algorithm}
+ */
+ private void printSupportedAlgorithms() {
+ Logger.getLogger(ZooKeeper.class).setLevel(Level.OFF);
+
+ List<Class<?>> classes = AnnotationUtils.getAnnotatedClasses(
+ Algorithm.class, "org.apache.giraph");
+ System.out.print(" Supported algorithms:\n");
+ for (Class<?> clazz : classes) {
+ if (BasicVertex.class.isAssignableFrom(clazz)) {
+ Algorithm algorithm = clazz.getAnnotation(Algorithm.class);
+ StringBuilder sb = new StringBuilder();
+ sb.append(algorithm.name()).append(" - ").append(clazz.getName())
+ .append("\n");
+ if (!algorithm.description().equals("")) {
+ sb.append(" ").append(algorithm.description()).append("\n");
+ }
+ System.out.print(sb.toString());
+ }
+ }
+ }
+
@Override
public int run(String[] args) throws Exception {
Options options = getOptions();
- HelpFormatter formatter = new HelpFormatter();
- if (args.length == 0) {
+
+ CommandLineParser parser = new BasicParser();
+ CommandLine cmd = parser.parse(options, args);
+
+ if (args.length == 0 || cmd.hasOption("h")) {
+ HelpFormatter formatter = new HelpFormatter();
formatter.printHelp(getClass().getName(), options, true);
return 0;
}
+ if (cmd.hasOption("la")) {
+ printSupportedAlgorithms();
+ return 0;
+ }
+
String vertexClassName = args[0];
if (LOG.isDebugEnabled()) {
LOG.debug("Attempting to run Vertex: " + vertexClassName);
}
- CommandLineParser parser = new BasicParser();
- CommandLine cmd = parser.parse(options, args);
-
// Verify all the options have been provided
for (String[] requiredOption : requiredOptions) {
if (!cmd.hasOption(requiredOption[0])) {
Modified: giraph/trunk/src/main/java/org/apache/giraph/examples/ConnectedComponentsVertex.java
URL: http://svn.apache.org/viewvc/giraph/trunk/src/main/java/org/apache/giraph/examples/ConnectedComponentsVertex.java?rev=1362164&r1=1362163&r2=1362164&view=diff
==============================================================================
--- giraph/trunk/src/main/java/org/apache/giraph/examples/ConnectedComponentsVertex.java (original)
+++ giraph/trunk/src/main/java/org/apache/giraph/examples/ConnectedComponentsVertex.java Mon Jul 16 17:57:17 2012
@@ -40,6 +40,10 @@ import java.util.Iterator;
*
* http://www.cs.cmu.edu/~ukang/papers/PegasusKAIS.pdf
*/
+@Algorithm(
+ name = "Connected components",
+ description = "Finds connected components of the graph"
+)
public class ConnectedComponentsVertex extends IntIntNullIntVertex {
/**
* Propagates the smallest vertex id to all neighbors. Will always choose to
Modified: giraph/trunk/src/main/java/org/apache/giraph/examples/SimplePageRankVertex.java
URL: http://svn.apache.org/viewvc/giraph/trunk/src/main/java/org/apache/giraph/examples/SimplePageRankVertex.java?rev=1362164&r1=1362163&r2=1362164&view=diff
==============================================================================
--- giraph/trunk/src/main/java/org/apache/giraph/examples/SimplePageRankVertex.java (original)
+++ giraph/trunk/src/main/java/org/apache/giraph/examples/SimplePageRankVertex.java Mon Jul 16 17:57:17 2012
@@ -47,6 +47,9 @@ import java.util.Map;
/**
* Demonstrates the basic Pregel PageRank implementation.
*/
+@Algorithm(
+ name = "Page rank"
+)
public class SimplePageRankVertex extends LongDoubleFloatDoubleVertex {
/** Number of supersteps for this test */
public static final int MAX_SUPERSTEPS = 30;
Modified: giraph/trunk/src/main/java/org/apache/giraph/examples/SimpleShortestPathsVertex.java
URL: http://svn.apache.org/viewvc/giraph/trunk/src/main/java/org/apache/giraph/examples/SimpleShortestPathsVertex.java?rev=1362164&r1=1362163&r2=1362164&view=diff
==============================================================================
--- giraph/trunk/src/main/java/org/apache/giraph/examples/SimpleShortestPathsVertex.java (original)
+++ giraph/trunk/src/main/java/org/apache/giraph/examples/SimpleShortestPathsVertex.java Mon Jul 16 17:57:17 2012
@@ -29,6 +29,10 @@ import java.util.Iterator;
/**
* Demonstrates the basic Pregel shortest paths implementation.
*/
+@Algorithm(
+ name = "Shortest paths",
+ description = "Finds all shortest paths from a selected vertex"
+)
public class SimpleShortestPathsVertex extends
EdgeListVertex<LongWritable, DoubleWritable,
FloatWritable, DoubleWritable> {