You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@giraph.apache.org by ni...@apache.org on 2013/06/21 22:23:44 UTC

[2/2] git commit: updated refs/heads/trunk to 52c88d8

GIRAPH-623: Website Documentation: table of parameters


Project: http://git-wip-us.apache.org/repos/asf/giraph/repo
Commit: http://git-wip-us.apache.org/repos/asf/giraph/commit/52c88d8d
Tree: http://git-wip-us.apache.org/repos/asf/giraph/tree/52c88d8d
Diff: http://git-wip-us.apache.org/repos/asf/giraph/diff/52c88d8d

Branch: refs/heads/trunk
Commit: 52c88d8d9850c49deed9c15f658b05b72855d488
Parents: d333c40
Author: Nitay Joffe <ni...@fb.com>
Authored: Fri Jun 21 16:22:13 2013 -0400
Committer: Nitay Joffe <ni...@fb.com>
Committed: Fri Jun 21 16:23:32 2013 -0400

----------------------------------------------------------------------
 CHANGELOG                                       |   2 +
 .../apache/giraph/conf/AbstractConfOption.java  |  14 +-
 .../java/org/apache/giraph/conf/AllOptions.java |  99 ++-
 .../apache/giraph/conf/BooleanConfOption.java   |   6 +-
 .../org/apache/giraph/conf/ClassConfOption.java |  12 +-
 .../org/apache/giraph/conf/EnumConfOption.java  |  11 +-
 .../org/apache/giraph/conf/FloatConfOption.java |   5 +-
 .../org/apache/giraph/conf/GiraphConstants.java | 386 +++++++---
 .../org/apache/giraph/conf/IntConfOption.java   |  10 +-
 .../org/apache/giraph/conf/LongConfOption.java  |   5 +-
 .../org/apache/giraph/conf/StrConfOption.java   |   5 +-
 .../multi/EdgeInputFormatDescription.java       |   8 +-
 .../multi/VertexInputFormatDescription.java     |   8 +-
 .../giraph/jython/JythonComputationFactory.java |   9 +-
 .../giraph/examples/GeneratedEdgeReader.java    |   3 +-
 .../giraph/examples/GeneratedVertexReader.java  |   6 +-
 .../SimpleShortestPathsComputation.java         |   3 +-
 .../giraph/hive/common/GiraphHiveConstants.java |  15 +-
 .../giraph/hive/common/HiveInputOptions.java    |  20 +-
 src/site/site.xml                               |   1 +
 src/site/xdoc/options.xml                       | 741 +++++++++++++++++++
 21 files changed, 1203 insertions(+), 166 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/CHANGELOG
----------------------------------------------------------------------
diff --git a/CHANGELOG b/CHANGELOG
index 342faec..9db2013 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,8 @@
 Giraph Change Log
 
 Release 1.1.0 - unreleased
+  GIRAPH-623: Website Documentation: table of parameters (armax00 via nitay)
+
   GIRAPH-694 Setting configuration in GiraphConfiguration causes 
   non thread safe copies (aching)
 

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-core/src/main/java/org/apache/giraph/conf/AbstractConfOption.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/conf/AbstractConfOption.java b/giraph-core/src/main/java/org/apache/giraph/conf/AbstractConfOption.java
index e1ab802..cef65d6 100644
--- a/giraph-core/src/main/java/org/apache/giraph/conf/AbstractConfOption.java
+++ b/giraph-core/src/main/java/org/apache/giraph/conf/AbstractConfOption.java
@@ -34,13 +34,18 @@ public abstract class AbstractConfOption
   /** Key for configuration */
   private final String key;
 
+  /** Configuration option description */
+  private final String description;
+
   /**
    * Constructor
    *
    * @param key configuration key
+   * @param description configuration description
    */
-  public AbstractConfOption(String key) {
+  public AbstractConfOption(String key, String description) {
     this.key = key;
+    this.description = description;
   }
 
   public String getKey() {
@@ -48,6 +53,13 @@ public abstract class AbstractConfOption
   }
 
   /**
+   * @return the description
+   */
+  public String getDescription() {
+    return description;
+  }
+
+  /**
    * Check if option is set in configuration
    *
    * @param conf Configuration

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-core/src/main/java/org/apache/giraph/conf/AllOptions.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/conf/AllOptions.java b/giraph-core/src/main/java/org/apache/giraph/conf/AllOptions.java
index 68b3ed9..1f9fb78 100644
--- a/giraph-core/src/main/java/org/apache/giraph/conf/AllOptions.java
+++ b/giraph-core/src/main/java/org/apache/giraph/conf/AllOptions.java
@@ -17,26 +17,32 @@
  */
 package org.apache.giraph.conf;
 
-import org.apache.log4j.Logger;
-
-import com.google.common.collect.Lists;
+import static org.apache.giraph.conf.GiraphConstants.COMPUTATION_CLASS;
 
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.IOException;
 import java.util.Collections;
 import java.util.List;
 
-import static org.apache.giraph.conf.GiraphConstants.COMPUTATION_CLASS;
+import org.apache.log4j.Logger;
+
+import com.google.common.collect.Lists;
 
 /**
  * Tracks all of the Giraph options
  */
 public class AllOptions {
-  /** Logger */
+  /**  logger object */
   private static final Logger LOG = Logger.getLogger(AllOptions.class);
 
   /** Configuration options */
   private static final List<AbstractConfOption> CONF_OPTIONS =
       Lists.newArrayList();
 
+  /** page name for the HTML page generation */
+  private static final String PAGE_NAME = "Giraph Options";
+
   /** Don't construct */
   private AllOptions() { }
 
@@ -71,6 +77,72 @@ public class AllOptions {
   }
 
   /**
+   * HTML String representation of all the options stored
+   * @return String the HTML representation of the registered options
+   */
+  public static String allOptionsHTMLString() {
+    Collections.sort(CONF_OPTIONS);
+    StringBuilder sb = new StringBuilder(CONF_OPTIONS.size() * 30);
+
+    sb.append("<?xml version='1.0' encoding='UTF-8'?>\n" +
+              "<!--\n" +
+              "Licensed to the Apache Software Foundation (ASF) under one\n" +
+              "or more contributor license agreements.  See the NOTICE file\n" +
+              "distributed with this work for additional information\n" +
+              "regarding copyright ownership.  The ASF licenses this file\n" +
+              "to you under the Apache License, Version 2.0 (the\n" +
+              "'License'); you may not use this file except in compliance\n" +
+              "with the License.  You may obtain a copy of the License at\n" +
+              "\n" +
+              "    http://www.apache.org/licenses/LICENSE-2.0\n" +
+              "\n" +
+              "Unless required by applicable law or agreed to in writing,\n" +
+              "software distributed under the License is distributed on an\n" +
+              "'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n" +
+              "KIND, either express or implied.  See the License for the\n" +
+              "specific language governing permissions and limitations\n" +
+              "under the License.\n" +
+              "-->\n" +
+              "\n" +
+              "<document xmlns='http://maven.apache.org/XDOC/2.0'\n" +
+              "          xmlns:xsi='http://www.w3.org/2001/" +
+              "XMLSchema-instance'\n" +
+              "          xsi:schemaLocation='" +
+              "http://maven.apache.org/XDOC/2.0 " +
+              " http://maven.apache.org/xsd/xdoc-2.0.xsd'>\n" +
+              "  <properties>\n" +
+              "    <title>" + PAGE_NAME + "</title>\n" +
+              "  </properties>\n" +
+              "  <body>\n" +
+              "    <section name='" + PAGE_NAME + "'>\n" +
+              "      <table border='0' style='width:110%; max-width:110%'>\n" +
+              "       <tr>\n" +
+              "        <th>label</th>\n" +
+              "        <th>type</th>\n" +
+              "        <th>default value</th>\n" +
+              "        <th>description</th>\n" +
+              "       </tr>\n");
+
+    for (AbstractConfOption confOption : CONF_OPTIONS) {
+      String type = confOption.getType().toString().toLowerCase();
+
+      sb.append("       <tr>\n");
+      sb.append("         <td>" + confOption.getKey() + "</td>\n");
+      sb.append("         <td>" + type  + "</td>\n");
+      sb.append("         <td>" + confOption.getDefaultValueStr() + "</td>\n");
+      sb.append("         <td>" + confOption.getDescription() + "</td>\n");
+      sb.append("       </tr>\n");
+    }
+
+    sb.append("      </table>\n" +
+              "    </section>\n" +
+              "  </body>\n" +
+              "</document>\n");
+
+    return sb.toString();
+  }
+
+  /**
    * Command line utility to dump all Giraph options
    *
    * @param args cmdline args
@@ -80,6 +152,23 @@ public class AllOptions {
     // get loaded. Without it we get no output.
     COMPUTATION_CLASS.toString();
 
+    // in case an options was specified, this option is treated as the output
+    // file in which to write the HTML version of the list of available options
+    if (args.length == 1) {
+      String html = allOptionsHTMLString();
+
+      try {
+        FileWriter     fs  = new FileWriter(args[0]);
+        BufferedWriter out = new BufferedWriter(fs);
+
+        out.write(html);
+        out.close();
+
+      } catch (IOException e) {
+        LOG.error("Error: " + e.getMessage());
+      }
+    }
+
     LOG.info(allOptionsString());
   }
 }

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-core/src/main/java/org/apache/giraph/conf/BooleanConfOption.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/conf/BooleanConfOption.java b/giraph-core/src/main/java/org/apache/giraph/conf/BooleanConfOption.java
index f095905..0aa4d67 100644
--- a/giraph-core/src/main/java/org/apache/giraph/conf/BooleanConfOption.java
+++ b/giraph-core/src/main/java/org/apache/giraph/conf/BooleanConfOption.java
@@ -31,9 +31,11 @@ public class BooleanConfOption extends AbstractConfOption {
    *
    * @param key configuration key
    * @param defaultValue default value
+   * @param description configuration description
    */
-  public BooleanConfOption(String key, boolean defaultValue) {
-    super(key);
+  public BooleanConfOption(String key, boolean defaultValue,
+      String description) {
+    super(key, description);
     this.defaultValue = defaultValue;
     AllOptions.add(this);
   }

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-core/src/main/java/org/apache/giraph/conf/ClassConfOption.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/conf/ClassConfOption.java b/giraph-core/src/main/java/org/apache/giraph/conf/ClassConfOption.java
index 43d6b0f..af82df5 100644
--- a/giraph-core/src/main/java/org/apache/giraph/conf/ClassConfOption.java
+++ b/giraph-core/src/main/java/org/apache/giraph/conf/ClassConfOption.java
@@ -42,10 +42,11 @@ public class ClassConfOption<C> extends AbstractConfOption {
    * @param key Key
    * @param defaultClass default class
    * @param interfaceClass interface class
+   * @param description configuration description
    */
   private ClassConfOption(String key, Class<? extends C> defaultClass,
-      Class<C> interfaceClass) {
-    super(key);
+      Class<C> interfaceClass, String description) {
+    super(key, description);
     this.defaultClass = defaultClass;
     this.interfaceClass = interfaceClass;
     AllOptions.add(this);
@@ -57,12 +58,15 @@ public class ClassConfOption<C> extends AbstractConfOption {
    * @param key key
    * @param defaultClass default class
    * @param interfaceClass interface class
+   * @param description configuration description
    * @param <T> type of class
    * @return ClassConfOption
    */
   public static <T> ClassConfOption<T> create(String key,
-      Class<? extends T> defaultClass, Class<T> interfaceClass) {
-    return new ClassConfOption<T>(key, defaultClass, interfaceClass);
+      Class<? extends T> defaultClass, Class<T> interfaceClass,
+      String description) {
+    return new ClassConfOption<T>(key, defaultClass, interfaceClass,
+                                  description);
   }
 
   public Class<? extends C> getDefaultClass() {

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-core/src/main/java/org/apache/giraph/conf/EnumConfOption.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/conf/EnumConfOption.java b/giraph-core/src/main/java/org/apache/giraph/conf/EnumConfOption.java
index 0e23379..2a65ec0 100644
--- a/giraph-core/src/main/java/org/apache/giraph/conf/EnumConfOption.java
+++ b/giraph-core/src/main/java/org/apache/giraph/conf/EnumConfOption.java
@@ -38,9 +38,11 @@ public class EnumConfOption<T extends Enum<T>> extends AbstractConfOption {
    * @param key Configuration key
    * @param klass Enum class
    * @param defaultValue default value
+   * @param description description of the option
    */
-  public EnumConfOption(String key, Class<T> klass, T defaultValue) {
-    super(key);
+  public EnumConfOption(String key, Class<T> klass, T defaultValue,
+      String description) {
+    super(key, description);
     this.klass = klass;
     this.defaultValue = defaultValue;
     AllOptions.add(this);
@@ -52,12 +54,13 @@ public class EnumConfOption<T extends Enum<T>> extends AbstractConfOption {
    * @param key String configuration key
    * @param klass enum class
    * @param defaultValue default enum value
+   * @param description description of the option
    * @param <X> enum type
    * @return EnumConfOption
    */
   public static <X extends Enum<X>> EnumConfOption<X>
-  create(String key, Class<X> klass, X defaultValue) {
-    return new EnumConfOption<X>(key, klass, defaultValue);
+  create(String key, Class<X> klass, X defaultValue, String description) {
+    return new EnumConfOption<X>(key, klass, defaultValue, description);
   }
 
   @Override public boolean isDefaultValue(Configuration conf) {

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-core/src/main/java/org/apache/giraph/conf/FloatConfOption.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/conf/FloatConfOption.java b/giraph-core/src/main/java/org/apache/giraph/conf/FloatConfOption.java
index 62efdbe..802456f 100644
--- a/giraph-core/src/main/java/org/apache/giraph/conf/FloatConfOption.java
+++ b/giraph-core/src/main/java/org/apache/giraph/conf/FloatConfOption.java
@@ -31,9 +31,10 @@ public class FloatConfOption extends AbstractConfOption {
    *
    * @param key Configuration key
    * @param defaultValue default value
+   * @param description configuration description
    */
-  public FloatConfOption(String key, float defaultValue) {
-    super(key);
+  public FloatConfOption(String key, float defaultValue, String description) {
+    super(key, description);
     this.defaultValue = defaultValue;
     AllOptions.add(this);
   }

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-core/src/main/java/org/apache/giraph/conf/GiraphConstants.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/conf/GiraphConstants.java b/giraph-core/src/main/java/org/apache/giraph/conf/GiraphConstants.java
index f090baa..80afab9 100644
--- a/giraph-core/src/main/java/org/apache/giraph/conf/GiraphConstants.java
+++ b/giraph-core/src/main/java/org/apache/giraph/conf/GiraphConstants.java
@@ -66,93 +66,108 @@ public interface GiraphConstants {
   /** Computation class - required */
   ClassConfOption<Computation> COMPUTATION_CLASS =
       ClassConfOption.create("giraph.computationClass", null,
-          Computation.class);
+          Computation.class, "Computation class - required");
   /** Computation factory class - optional */
   ClassConfOption<ComputationFactory> COMPUTATION_FACTORY_CLASS =
       ClassConfOption.create("giraph.computation.factory.class",
-          DefaultComputationFactory.class, ComputationFactory.class);
+          DefaultComputationFactory.class, ComputationFactory.class,
+          "Computation factory class - optional");
   /** TypesHolder, used if Computation not set - optional */
   ClassConfOption<TypesHolder> TYPES_HOLDER_CLASS =
       ClassConfOption.create("giraph.typesHolder", null,
-          TypesHolder.class);
+          TypesHolder.class,
+          "TypesHolder, used if Computation not set - optional");
   /** Vertex value factory class - optional */
   ClassConfOption<VertexValueFactory> VERTEX_VALUE_FACTORY_CLASS =
       ClassConfOption.create("giraph.vertexValueFactoryClass",
-          DefaultVertexValueFactory.class, VertexValueFactory.class);
+          DefaultVertexValueFactory.class, VertexValueFactory.class,
+          "Vertex value factory class - optional");
   /** Vertex edges class - optional */
   ClassConfOption<OutEdges> VERTEX_EDGES_CLASS =
       ClassConfOption.create("giraph.outEdgesClass", ByteArrayEdges.class,
-          OutEdges.class);
+          OutEdges.class, "Vertex edges class - optional");
   /** Vertex edges class to be used during edge input only - optional */
   ClassConfOption<OutEdges> INPUT_VERTEX_EDGES_CLASS =
       ClassConfOption.create("giraph.inputOutEdgesClass",
-          ByteArrayEdges.class, OutEdges.class);
+          ByteArrayEdges.class, OutEdges.class,
+          "Vertex edges class to be used during edge input only - optional");
 
   /** Class for Master - optional */
   ClassConfOption<MasterCompute> MASTER_COMPUTE_CLASS =
       ClassConfOption.create("giraph.masterComputeClass",
-          DefaultMasterCompute.class, MasterCompute.class);
+          DefaultMasterCompute.class, MasterCompute.class,
+          "Class for Master - optional");
   /** Classes for Master Observer - optional */
   ClassConfOption<MasterObserver> MASTER_OBSERVER_CLASSES =
       ClassConfOption.create("giraph.master.observers",
-          null, MasterObserver.class);
+          null, MasterObserver.class, "Classes for Master Observer - optional");
   /** Classes for Worker Observer - optional */
   ClassConfOption<WorkerObserver> WORKER_OBSERVER_CLASSES =
       ClassConfOption.create("giraph.worker.observers", null,
-          WorkerObserver.class);
+          WorkerObserver.class, "Classes for Worker Observer - optional");
   /** Vertex combiner class - optional */
   ClassConfOption<Combiner> VERTEX_COMBINER_CLASS =
-      ClassConfOption.create("giraph.combinerClass", null, Combiner.class);
+      ClassConfOption.create("giraph.combinerClass", null, Combiner.class,
+          "Vertex combiner class - optional");
   /** Vertex resolver class - optional */
   ClassConfOption<VertexResolver> VERTEX_RESOLVER_CLASS =
       ClassConfOption.create("giraph.vertexResolverClass",
-          DefaultVertexResolver.class, VertexResolver.class);
+          DefaultVertexResolver.class, VertexResolver.class,
+          "Vertex resolver class - optional");
 
   /** Which language computation is implemented in */
   EnumConfOption<Language> COMPUTATION_LANGUAGE =
       EnumConfOption.create("giraph.computation.language",
-          Language.class, Language.JAVA);
+          Language.class, Language.JAVA,
+          "Which language computation is implemented in");
 
   /**
    * Option of whether to create vertexes that were not existent before but
    * received messages
    */
   BooleanConfOption RESOLVER_CREATE_VERTEX_ON_MSGS =
-      new BooleanConfOption("giraph.vertex.resolver.create.on.msgs", true);
+      new BooleanConfOption("giraph.vertex.resolver.create.on.msgs", true,
+          "Option of whether to create vertexes that were not existent " +
+          "before but received messages");
   /** Graph partitioner factory class - optional */
   ClassConfOption<GraphPartitionerFactory> GRAPH_PARTITIONER_FACTORY_CLASS =
       ClassConfOption.create("giraph.graphPartitionerFactoryClass",
-          HashPartitionerFactory.class, GraphPartitionerFactory.class);
+          HashPartitionerFactory.class, GraphPartitionerFactory.class,
+          "Graph partitioner factory class - optional");
 
   /** Observer class to watch over job status - optional */
   ClassConfOption<GiraphJobObserver> JOB_OBSERVER_CLASS =
       ClassConfOption.create("giraph.jobObserverClass",
-          DefaultJobObserver.class, GiraphJobObserver.class);
+          DefaultJobObserver.class, GiraphJobObserver.class,
+          "Observer class to watch over job status - optional");
 
   // At least one of the input format classes is required.
   /** VertexInputFormat class */
   ClassConfOption<VertexInputFormat> VERTEX_INPUT_FORMAT_CLASS =
       ClassConfOption.create("giraph.vertexInputFormatClass", null,
-          VertexInputFormat.class);
+          VertexInputFormat.class, "VertexInputFormat class (at least " +
+          "one of the input format classes is required)");
   /** EdgeInputFormat class */
   ClassConfOption<EdgeInputFormat> EDGE_INPUT_FORMAT_CLASS =
       ClassConfOption.create("giraph.edgeInputFormatClass", null,
-          EdgeInputFormat.class);
+          EdgeInputFormat.class, "EdgeInputFormat class");
 
   /** EdgeInputFilter class */
   ClassConfOption<EdgeInputFilter> EDGE_INPUT_FILTER_CLASS =
       ClassConfOption.create("giraph.edgeInputFilterClass",
-          DefaultEdgeInputFilter.class, EdgeInputFilter.class);
+          DefaultEdgeInputFilter.class, EdgeInputFilter.class,
+          "EdgeInputFilter class");
 
   /** VertexInputFilter class */
   ClassConfOption<VertexInputFilter> VERTEX_INPUT_FILTER_CLASS =
       ClassConfOption.create("giraph.vertexInputFilterClass",
-          DefaultVertexInputFilter.class, VertexInputFilter.class);
+          DefaultVertexInputFilter.class, VertexInputFilter.class,
+          "VertexInputFilter class");
 
   /** VertexOutputFormat class */
   ClassConfOption<VertexOutputFormat> VERTEX_OUTPUT_FORMAT_CLASS =
       ClassConfOption.create("giraph.vertexOutputFormatClass", null,
-          VertexOutputFormat.class);
+          VertexOutputFormat.class, "VertexOutputFormat class");
   /**
    * If you use this option, instead of having saving vertices in the end of
    * application, saveVertex will be called right after each vertex.compute()
@@ -161,65 +176,83 @@ public interface GiraphConstants {
    * from a checkpoint you won't have any output from previous supersteps.
    */
   BooleanConfOption DO_OUTPUT_DURING_COMPUTATION =
-      new BooleanConfOption("giraph.doOutputDuringComputation", false);
+      new BooleanConfOption("giraph.doOutputDuringComputation", false,
+          "If you use this option, instead of having saving vertices in the " +
+          "end of application, saveVertex will be called right after each " +
+          "vertex.compute() is called." +
+          "NOTE: This feature doesn't work well with checkpointing - if you " +
+          "restart from a checkpoint you won't have any ouptut from previous " +
+          "supresteps.");
   /**
    * Vertex output format thread-safe - if your VertexOutputFormat allows
    * several vertexWriters to be created and written to in parallel,
    * you should set this to true.
    */
   BooleanConfOption VERTEX_OUTPUT_FORMAT_THREAD_SAFE =
-      new BooleanConfOption("giraph.vertexOutputFormatThreadSafe", false);
+      new BooleanConfOption("giraph.vertexOutputFormatThreadSafe", false,
+          "Vertex output format thread-safe - if your VertexOutputFormat " +
+          "allows several vertexWriters to be created and written to in " +
+          "parallel, you should set this to true.");
   /** Number of threads for writing output in the end of the application */
   IntConfOption NUM_OUTPUT_THREADS =
-      new IntConfOption("giraph.numOutputThreads", 1);
+      new IntConfOption("giraph.numOutputThreads", 1,
+          "Number of threads for writing output in the end of the application");
 
   /** conf key for comma-separated list of jars to export to YARN workers */
   StrConfOption GIRAPH_YARN_LIBJARS =
-    new StrConfOption("giraph.yarn.libjars", "");
+    new StrConfOption("giraph.yarn.libjars", "",
+        "conf key for comma-separated list of jars to export to YARN workers");
   /** Name of the XML file that will export our Configuration to YARN workers */
   String GIRAPH_YARN_CONF_FILE = "giraph-conf.xml";
   /** Giraph default heap size for all tasks when running on YARN profile */
   int GIRAPH_YARN_TASK_HEAP_MB_DEFAULT = 1024;
   /** Name of Giraph property for user-configurable heap memory per worker */
   IntConfOption GIRAPH_YARN_TASK_HEAP_MB = new IntConfOption(
-    "giraph.yarn.task.heap.mb", GIRAPH_YARN_TASK_HEAP_MB_DEFAULT);
+    "giraph.yarn.task.heap.mb", GIRAPH_YARN_TASK_HEAP_MB_DEFAULT,
+    "Name of Giraph property for user-configurable heap memory per worker");
   /** Default priority level in YARN for our task containers */
   int GIRAPH_YARN_PRIORITY = 10;
   /** Is this a pure YARN job (i.e. no MapReduce layer managing Giraph tasks) */
   BooleanConfOption IS_PURE_YARN_JOB =
-    new BooleanConfOption("giraph.pure.yarn.job", false);
+    new BooleanConfOption("giraph.pure.yarn.job", false,
+        "Is this a pure YARN job (i.e. no MapReduce layer managing Giraph " +
+        "tasks)");
 
   /** Vertex index class */
   ClassConfOption<WritableComparable> VERTEX_ID_CLASS =
       ClassConfOption.create("giraph.vertexIdClass", null,
-          WritableComparable.class);
+          WritableComparable.class, "Vertex index class");
   /** Vertex value class */
   ClassConfOption<Writable> VERTEX_VALUE_CLASS =
-      ClassConfOption.create("giraph.vertexValueClass", null, Writable.class);
+      ClassConfOption.create("giraph.vertexValueClass", null, Writable.class,
+          "Vertex value class");
   /** Edge value class */
   ClassConfOption<Writable> EDGE_VALUE_CLASS =
-      ClassConfOption.create("giraph.edgeValueClass", null, Writable.class);
+      ClassConfOption.create("giraph.edgeValueClass", null, Writable.class,
+          "Edge value class");
   /** Incoming message value class */
   ClassConfOption<Writable> INCOMING_MESSAGE_VALUE_CLASS =
       ClassConfOption.create("giraph.incomingMessageValueClass", null,
-          Writable.class);
+          Writable.class, "Incoming message value class");
   /** Outgoing message value class */
   ClassConfOption<Writable> OUTGOING_MESSAGE_VALUE_CLASS =
       ClassConfOption.create("giraph.outgoingMessageValueClass", null,
-          Writable.class);
+          Writable.class, "Outgoing message value class");
   /** Worker context class */
   ClassConfOption<WorkerContext> WORKER_CONTEXT_CLASS =
       ClassConfOption.create("giraph.workerContextClass",
-          DefaultWorkerContext.class, WorkerContext.class);
+          DefaultWorkerContext.class, WorkerContext.class,
+          "Worker contextclass");
   /** AggregatorWriter class - optional */
   ClassConfOption<AggregatorWriter> AGGREGATOR_WRITER_CLASS =
       ClassConfOption.create("giraph.aggregatorWriterClass",
-          TextAggregatorWriter.class, AggregatorWriter.class);
+          TextAggregatorWriter.class, AggregatorWriter.class,
+          "AggregatorWriter class - optional");
 
   /** Partition class - optional */
   ClassConfOption<Partition> PARTITION_CLASS =
       ClassConfOption.create("giraph.partitionClass", SimplePartition.class,
-          Partition.class);
+          Partition.class, "Partition class - optional");
 
   /**
    * Minimum number of simultaneous workers before this job can run (int)
@@ -235,41 +268,52 @@ public interface GiraphConstants {
    * to support dynamic recovery. (boolean)
    */
   BooleanConfOption SPLIT_MASTER_WORKER =
-      new BooleanConfOption("giraph.SplitMasterWorker", true);
+      new BooleanConfOption("giraph.SplitMasterWorker", true,
+          "Separate the workers and the master tasks.  This is required to " +
+          "support dynamic recovery. (boolean)");
 
   /** Indicates whether this job is run in an internal unit test */
   BooleanConfOption LOCAL_TEST_MODE =
-      new BooleanConfOption("giraph.localTestMode", false);
+      new BooleanConfOption("giraph.localTestMode", false,
+          "Indicates whether this job is run in an internal unit test");
 
   /** Override the Hadoop log level and set the desired log level. */
-  StrConfOption LOG_LEVEL = new StrConfOption("giraph.logLevel", "info");
+  StrConfOption LOG_LEVEL = new StrConfOption("giraph.logLevel", "info",
+      "Override the Hadoop log level and set the desired log level.");
 
   /** Use thread level debugging? */
   BooleanConfOption LOG_THREAD_LAYOUT =
-      new BooleanConfOption("giraph.logThreadLayout", false);
+      new BooleanConfOption("giraph.logThreadLayout", false,
+          "Use thread level debugging?");
 
   /** Configuration key to enable jmap printing */
   BooleanConfOption JMAP_ENABLE =
-      new BooleanConfOption("giraph.jmap.histo.enable", false);
+      new BooleanConfOption("giraph.jmap.histo.enable", false,
+          "Configuration key to enable jmap printing");
 
   /** Configuration key for msec to sleep between calls */
   IntConfOption JMAP_SLEEP_MILLIS =
-      new IntConfOption("giraph.jmap.histo.msec", SECONDS.toMillis(30));
+      new IntConfOption("giraph.jmap.histo.msec", SECONDS.toMillis(30),
+          "Configuration key for msec to sleep between calls");
 
   /** Configuration key for how many lines to print */
   IntConfOption JMAP_PRINT_LINES =
-      new IntConfOption("giraph.jmap.histo.print_lines", 30);
+      new IntConfOption("giraph.jmap.histo.print_lines", 30,
+          "Configuration key for how many lines to print");
 
   /**
    * Minimum percent of the maximum number of workers that have responded
    * in order to continue progressing. (float)
    */
   FloatConfOption MIN_PERCENT_RESPONDED =
-      new FloatConfOption("giraph.minPercentResponded", 100.0f);
+      new FloatConfOption("giraph.minPercentResponded", 100.0f,
+          "Minimum percent of the maximum number of workers that have " +
+          "responded in order to continue progressing. (float)");
 
-  /** Enable the Metrics system **/
+  /** Enable the Metrics system */
   BooleanConfOption METRICS_ENABLE =
-      new BooleanConfOption("giraph.metrics.enable", false);
+      new BooleanConfOption("giraph.metrics.enable", false,
+          "Enable the Metrics system");
 
   /**
    *  ZooKeeper comma-separated list (if not set,
@@ -279,19 +323,22 @@ public interface GiraphConstants {
 
   /** ZooKeeper session millisecond timeout */
   IntConfOption ZOOKEEPER_SESSION_TIMEOUT =
-      new IntConfOption("giraph.zkSessionMsecTimeout", MINUTES.toMillis(1));
+      new IntConfOption("giraph.zkSessionMsecTimeout", MINUTES.toMillis(1),
+          "ZooKeeper session millisecond timeout");
 
   /** Polling interval to check for the ZooKeeper server data */
   IntConfOption ZOOKEEPER_SERVERLIST_POLL_MSECS =
-      new IntConfOption("giraph.zkServerlistPollMsecs", SECONDS.toMillis(3));
+      new IntConfOption("giraph.zkServerlistPollMsecs", SECONDS.toMillis(3),
+          "Polling interval to check for the ZooKeeper server data");
 
   /** Number of nodes (not tasks) to run Zookeeper on */
   IntConfOption ZOOKEEPER_SERVER_COUNT =
-      new IntConfOption("giraph.zkServerCount", 1);
+      new IntConfOption("giraph.zkServerCount", 1,
+          "Number of nodes (not tasks) to run Zookeeper on");
 
   /** ZooKeeper port to use */
   IntConfOption ZOOKEEPER_SERVER_PORT =
-      new IntConfOption("giraph.zkServerPort", 22181);
+      new IntConfOption("giraph.zkServerPort", 22181, "ZooKeeper port to use");
 
   /** Location of the ZooKeeper jar - Used internally, not meant for users */
   String ZOOKEEPER_JAR = "giraph.zkJar";
@@ -301,79 +348,97 @@ public interface GiraphConstants {
 
   /** Max attempts for handling ZooKeeper connection loss */
   IntConfOption ZOOKEEPER_OPS_MAX_ATTEMPTS =
-      new IntConfOption("giraph.zkOpsMaxAttempts", 3);
+      new IntConfOption("giraph.zkOpsMaxAttempts", 3,
+          "Max attempts for handling ZooKeeper connection loss");
 
   /**
    * Msecs to wait before retrying a failed ZooKeeper op due to connection loss.
    */
   IntConfOption ZOOKEEPER_OPS_RETRY_WAIT_MSECS =
-      new IntConfOption("giraph.zkOpsRetryWaitMsecs", SECONDS.toMillis(5));
+      new IntConfOption("giraph.zkOpsRetryWaitMsecs", SECONDS.toMillis(5),
+          "Msecs to wait before retrying a failed ZooKeeper op due to " +
+          "connection loss.");
 
   /** TCP backlog (defaults to number of workers) */
-  IntConfOption TCP_BACKLOG = new IntConfOption("giraph.tcpBacklog", 1);
+  IntConfOption TCP_BACKLOG = new IntConfOption("giraph.tcpBacklog", 1,
+      "TCP backlog (defaults to number of workers)");
 
   /** How big to make the encoder buffer? */
   IntConfOption NETTY_REQUEST_ENCODER_BUFFER_SIZE =
-      new IntConfOption("giraph.nettyRequestEncoderBufferSize", 32 * ONE_KB);
+      new IntConfOption("giraph.nettyRequestEncoderBufferSize", 32 * ONE_KB,
+          "How big to make the encoder buffer?");
 
   /** Whether or not netty request encoder should use direct byte buffers */
   BooleanConfOption NETTY_REQUEST_ENCODER_USE_DIRECT_BUFFERS =
       new BooleanConfOption("giraph.nettyRequestEncoderUseDirectBuffers",
-                            false);
+                            false, "Whether or not netty request encoder " +
+                                   "should use direct byte buffers");
 
   /** Netty client threads */
   IntConfOption NETTY_CLIENT_THREADS =
-      new IntConfOption("giraph.nettyClientThreads", 4);
+      new IntConfOption("giraph.nettyClientThreads", 4, "Netty client threads");
 
   /** Netty server threads */
   IntConfOption NETTY_SERVER_THREADS =
-      new IntConfOption("giraph.nettyServerThreads", 16);
+      new IntConfOption("giraph.nettyServerThreads", 16,
+          "Netty server threads");
 
   /** Use the execution handler in netty on the client? */
   BooleanConfOption NETTY_CLIENT_USE_EXECUTION_HANDLER =
-      new BooleanConfOption("giraph.nettyClientUseExecutionHandler", true);
+      new BooleanConfOption("giraph.nettyClientUseExecutionHandler", true,
+          "Use the execution handler in netty on the client?");
 
   /** Netty client execution threads (execution handler) */
   IntConfOption NETTY_CLIENT_EXECUTION_THREADS =
-      new IntConfOption("giraph.nettyClientExecutionThreads", 8);
+      new IntConfOption("giraph.nettyClientExecutionThreads", 8,
+          "Netty client execution threads (execution handler)");
 
   /** Where to place the netty client execution handle? */
   StrConfOption NETTY_CLIENT_EXECUTION_AFTER_HANDLER =
       new StrConfOption("giraph.nettyClientExecutionAfterHandler",
-          "requestEncoder");
+          "requestEncoder",
+          "Where to place the netty client execution handle?");
 
   /** Use the execution handler in netty on the server? */
   BooleanConfOption NETTY_SERVER_USE_EXECUTION_HANDLER =
-      new BooleanConfOption("giraph.nettyServerUseExecutionHandler", true);
+      new BooleanConfOption("giraph.nettyServerUseExecutionHandler", true,
+          "Use the execution handler in netty on the server?");
 
   /** Netty server execution threads (execution handler) */
   IntConfOption NETTY_SERVER_EXECUTION_THREADS =
-      new IntConfOption("giraph.nettyServerExecutionThreads", 8);
+      new IntConfOption("giraph.nettyServerExecutionThreads", 8,
+          "Netty server execution threads (execution handler)");
 
   /** Where to place the netty server execution handle? */
   StrConfOption NETTY_SERVER_EXECUTION_AFTER_HANDLER =
       new StrConfOption("giraph.nettyServerExecutionAfterHandler",
-          "requestFrameDecoder");
+          "requestFrameDecoder",
+          "Where to place the netty server execution handle?");
 
   /** Netty simulate a first request closed */
   BooleanConfOption NETTY_SIMULATE_FIRST_REQUEST_CLOSED =
-      new BooleanConfOption("giraph.nettySimulateFirstRequestClosed", false);
+      new BooleanConfOption("giraph.nettySimulateFirstRequestClosed", false,
+          "Netty simulate a first request closed");
 
   /** Netty simulate a first response failed */
   BooleanConfOption NETTY_SIMULATE_FIRST_RESPONSE_FAILED =
-      new BooleanConfOption("giraph.nettySimulateFirstResponseFailed", false);
+      new BooleanConfOption("giraph.nettySimulateFirstResponseFailed", false,
+          "Netty simulate a first response failed");
 
   /** Max resolve address attempts */
   IntConfOption MAX_RESOLVE_ADDRESS_ATTEMPTS =
-      new IntConfOption("giraph.maxResolveAddressAttempts", 5);
+      new IntConfOption("giraph.maxResolveAddressAttempts", 5,
+          "Max resolve address attempts");
 
   /** Msecs to wait between waiting for all requests to finish */
   IntConfOption WAITING_REQUEST_MSECS =
-      new IntConfOption("giraph.waitingRequestMsecs", SECONDS.toMillis(15));
+      new IntConfOption("giraph.waitingRequestMsecs", SECONDS.toMillis(15),
+          "Msecs to wait between waiting for all requests to finish");
 
   /** Millseconds to wait for an event before continuing */
   IntConfOption EVENT_WAIT_MSECS =
-      new IntConfOption("giraph.eventWaitMsecs", SECONDS.toMillis(30));
+      new IntConfOption("giraph.eventWaitMsecs", SECONDS.toMillis(30),
+          "Millseconds to wait for an event before continuing");
 
   /**
    * Maximum milliseconds to wait before giving up trying to get the minimum
@@ -381,49 +446,62 @@ public interface GiraphConstants {
    */
   IntConfOption MAX_MASTER_SUPERSTEP_WAIT_MSECS =
       new IntConfOption("giraph.maxMasterSuperstepWaitMsecs",
-          MINUTES.toMillis(10));
+          MINUTES.toMillis(10),
+          "Maximum milliseconds to wait before giving up trying to get the " +
+          "minimum number of workers before a superstep (int).");
 
   /** Milliseconds for a request to complete (or else resend) */
   IntConfOption MAX_REQUEST_MILLISECONDS =
-      new IntConfOption("giraph.maxRequestMilliseconds", MINUTES.toMillis(10));
+      new IntConfOption("giraph.maxRequestMilliseconds", MINUTES.toMillis(10),
+          "Milliseconds for a request to complete (or else resend)");
 
   /** Netty max connection failures */
   IntConfOption NETTY_MAX_CONNECTION_FAILURES =
-      new IntConfOption("giraph.nettyMaxConnectionFailures", 1000);
+      new IntConfOption("giraph.nettyMaxConnectionFailures", 1000,
+          "Netty max connection failures");
 
   /** Initial port to start using for the IPC communication */
   IntConfOption IPC_INITIAL_PORT =
-      new IntConfOption("giraph.ipcInitialPort", 30000);
+      new IntConfOption("giraph.ipcInitialPort", 30000,
+          "Initial port to start using for the IPC communication");
 
   /** Maximum bind attempts for different IPC ports */
   IntConfOption MAX_IPC_PORT_BIND_ATTEMPTS =
-      new IntConfOption("giraph.maxIpcPortBindAttempts", 20);
+      new IntConfOption("giraph.maxIpcPortBindAttempts", 20,
+          "Maximum bind attempts for different IPC ports");
   /**
    * Fail first IPC port binding attempt, simulate binding failure
    * on real grid testing
    */
   BooleanConfOption FAIL_FIRST_IPC_PORT_BIND_ATTEMPT =
-      new BooleanConfOption("giraph.failFirstIpcPortBindAttempt", false);
+      new BooleanConfOption("giraph.failFirstIpcPortBindAttempt", false,
+          "Fail first IPC port binding attempt, simulate binding failure " +
+          "on real grid testing");
 
   /** Client send buffer size */
   IntConfOption CLIENT_SEND_BUFFER_SIZE =
-      new IntConfOption("giraph.clientSendBufferSize", 512 * ONE_KB);
+      new IntConfOption("giraph.clientSendBufferSize", 512 * ONE_KB,
+          "Client send buffer size");
 
   /** Client receive buffer size */
   IntConfOption CLIENT_RECEIVE_BUFFER_SIZE =
-      new IntConfOption("giraph.clientReceiveBufferSize", 32 * ONE_KB);
+      new IntConfOption("giraph.clientReceiveBufferSize", 32 * ONE_KB,
+          "Client receive buffer size");
 
   /** Server send buffer size */
   IntConfOption SERVER_SEND_BUFFER_SIZE =
-      new IntConfOption("giraph.serverSendBufferSize", 32 * ONE_KB);
+      new IntConfOption("giraph.serverSendBufferSize", 32 * ONE_KB,
+          "Server send buffer size");
 
   /** Server receive buffer size */
   IntConfOption SERVER_RECEIVE_BUFFER_SIZE =
-      new IntConfOption("giraph.serverReceiveBufferSize", 512 * ONE_KB);
+      new IntConfOption("giraph.serverReceiveBufferSize", 512 * ONE_KB,
+          "Server receive buffer size");
 
   /** Maximum size of messages (in bytes) per peer before flush */
   IntConfOption MAX_MSG_REQUEST_SIZE =
-      new IntConfOption("giraph.msgRequestSize", 512 * ONE_KB);
+      new IntConfOption("giraph.msgRequestSize", 512 * ONE_KB,
+          "Maximum size of messages (in bytes) per peer before flush");
 
   /**
    * How much bigger than the average per partition size to make initial per
@@ -433,52 +511,67 @@ public interface GiraphConstants {
    * will be (M / P) * (1 + A).
    */
   FloatConfOption ADDITIONAL_MSG_REQUEST_SIZE =
-      new FloatConfOption("giraph.additionalMsgRequestSize", 0.2f);
+      new FloatConfOption("giraph.additionalMsgRequestSize", 0.2f,
+          "How much bigger than the average per partition size to make " +
+          "initial per partition buffers. If this value is A, message " +
+          "request size is M, and a worker has P partitions, than its " +
+          "initial partition buffer size will be (M / P) * (1 + A).");
 
   /** Maximum size of edges (in bytes) per peer before flush */
   IntConfOption MAX_EDGE_REQUEST_SIZE =
-      new IntConfOption("giraph.edgeRequestSize", 512 * ONE_KB);
+      new IntConfOption("giraph.edgeRequestSize", 512 * ONE_KB,
+          "Maximum size of edges (in bytes) per peer before flush");
 
   /**
    * Additional size (expressed as a ratio) of each per-partition buffer on
    * top of the average size.
    */
   FloatConfOption ADDITIONAL_EDGE_REQUEST_SIZE =
-      new FloatConfOption("giraph.additionalEdgeRequestSize", 0.2f);
+      new FloatConfOption("giraph.additionalEdgeRequestSize", 0.2f,
+          "Additional size (expressed as a ratio) of each per-partition " +
+          "buffer on top of the average size.");
 
   /** Maximum number of mutations per partition before flush */
   IntConfOption MAX_MUTATIONS_PER_REQUEST =
-      new IntConfOption("giraph.maxMutationsPerRequest", 100);
+      new IntConfOption("giraph.maxMutationsPerRequest", 100,
+          "Maximum number of mutations per partition before flush");
 
   /**
    * Use message size encoding (typically better for complex objects,
    * not meant for primitive wrapped messages)
    */
   BooleanConfOption USE_MESSAGE_SIZE_ENCODING =
-      new BooleanConfOption("giraph.useMessageSizeEncoding", false);
+      new BooleanConfOption("giraph.useMessageSizeEncoding", false,
+          "Use message size encoding (typically better for complex objects, " +
+          "not meant for primitive wrapped messages)");
 
   /** Number of channels used per server */
   IntConfOption CHANNELS_PER_SERVER =
-      new IntConfOption("giraph.channelsPerServer", 1);
+      new IntConfOption("giraph.channelsPerServer", 1,
+          "Number of channels used per server");
 
   /** Number of flush threads per peer */
   String MSG_NUM_FLUSH_THREADS = "giraph.msgNumFlushThreads";
 
   /** Number of threads for vertex computation */
   IntConfOption NUM_COMPUTE_THREADS =
-      new IntConfOption("giraph.numComputeThreads", 1);
+      new IntConfOption("giraph.numComputeThreads", 1,
+          "Number of threads for vertex computation");
 
   /** Number of threads for input split loading */
   IntConfOption NUM_INPUT_THREADS =
-      new IntConfOption("giraph.numInputThreads", 1);
+      new IntConfOption("giraph.numInputThreads", 1,
+          "Number of threads for input split loading");
 
   /** Minimum stragglers of the superstep before printing them out */
   IntConfOption PARTITION_LONG_TAIL_MIN_PRINT =
-      new IntConfOption("giraph.partitionLongTailMinPrint", 1);
+      new IntConfOption("giraph.partitionLongTailMinPrint", 1,
+          "Minimum stragglers of the superstep before printing them out");
 
   /** Use superstep counters? (boolean) */
   BooleanConfOption USE_SUPERSTEP_COUNTERS =
-      new BooleanConfOption("giraph.useSuperstepCounters", true);
+      new BooleanConfOption("giraph.useSuperstepCounters", true,
+          "Use superstep counters? (boolean)");
 
   /**
    * Input split sample percent - Used only for sampling and testing, rather
@@ -487,7 +580,11 @@ public interface GiraphConstants {
    * load (values should be [0, 100]).
    */
   FloatConfOption INPUT_SPLIT_SAMPLE_PERCENT =
-      new FloatConfOption("giraph.inputSplitSamplePercent", 100f);
+      new FloatConfOption("giraph.inputSplitSamplePercent", 100f,
+          "Input split sample percent - Used only for sampling and testing, " +
+          "rather than an actual job.  The idea is that to test, you might " +
+          "only want a fraction of the actual input splits from your " +
+          "VertexInputFormat to load (values should be [0, 100]).");
 
   /**
    * To limit outlier vertex input splits from producing too many vertices or
@@ -495,7 +592,11 @@ public interface GiraphConstants {
    * can be limited.  By default, everything is loaded.
    */
   LongConfOption INPUT_SPLIT_MAX_VERTICES =
-      new LongConfOption("giraph.InputSplitMaxVertices", -1);
+      new LongConfOption("giraph.InputSplitMaxVertices", -1,
+          "To limit outlier vertex input splits from producing too many " +
+          "vertices or to help with testing, the number of vertices loaded " +
+          "from an input split can be limited. By default, everything is " +
+          "loaded.");
 
   /**
    * To limit outlier vertex input splits from producing too many vertices or
@@ -503,7 +604,11 @@ public interface GiraphConstants {
    * can be limited.  By default, everything is loaded.
    */
   LongConfOption INPUT_SPLIT_MAX_EDGES =
-      new LongConfOption("giraph.InputSplitMaxEdges", -1);
+      new LongConfOption("giraph.InputSplitMaxEdges", -1,
+          "To limit outlier vertex input splits from producing too many " +
+          "vertices or to help with testing, the number of edges loaded " +
+          "from an input split can be limited. By default, everything is " +
+          "loaded.");
 
   /**
    * To minimize network usage when reading input splits,
@@ -513,15 +618,23 @@ public interface GiraphConstants {
    * configurations that can't exploit locality) may want to disable it.
    */
   BooleanConfOption USE_INPUT_SPLIT_LOCALITY =
-      new BooleanConfOption("giraph.useInputSplitLocality", true);
+      new BooleanConfOption("giraph.useInputSplitLocality", true,
+          "To minimize network usage when reading input splits, each worker " +
+          "can prioritize splits that reside on its host. " +
+          "This, however, comes at the cost of increased load on ZooKeeper. " +
+          "Hence, users with a lot of splits and input threads (or with " +
+          "configurations that can't exploit locality) may want to disable " +
+          "it.");
 
   /** Multiplier for the current workers squared */
   FloatConfOption PARTITION_COUNT_MULTIPLIER =
-      new FloatConfOption("giraph.masterPartitionCountMultiplier", 1.0f);
+      new FloatConfOption("giraph.masterPartitionCountMultiplier", 1.0f,
+          "Multiplier for the current workers squared");
 
   /** Overrides default partition count calculation if not -1 */
   IntConfOption USER_PARTITION_COUNT =
-      new IntConfOption("giraph.userPartitionCount", -1);
+      new IntConfOption("giraph.userPartitionCount", -1,
+          "Overrides default partition count calculation if not -1");
 
   /** Vertex key space size for
    * {@link org.apache.giraph.partition.SimpleRangeWorkerPartitioner}
@@ -532,20 +645,24 @@ public interface GiraphConstants {
   StrConfOption ZOOKEEPER_JAVA_OPTS =
       new StrConfOption("giraph.zkJavaOpts",
           "-Xmx512m -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC " +
-          "-XX:CMSInitiatingOccupancyFraction=70 -XX:MaxGCPauseMillis=100");
+          "-XX:CMSInitiatingOccupancyFraction=70 -XX:MaxGCPauseMillis=100",
+          "Java opts passed to ZooKeeper startup");
 
   /**
    *  How often to checkpoint (i.e. 0, means no checkpoint,
    *  1 means every superstep, 2 is every two supersteps, etc.).
    */
   IntConfOption CHECKPOINT_FREQUENCY =
-      new IntConfOption("giraph.checkpointFrequency", 0);
+      new IntConfOption("giraph.checkpointFrequency", 0,
+          "How often to checkpoint (i.e. 0, means no checkpoint, 1 means " +
+          "every superstep, 2 is every two supersteps, etc.).");
 
   /**
    * Delete checkpoints after a successful job run?
    */
   BooleanConfOption CLEANUP_CHECKPOINTS_AFTER_SUCCESS =
-      new BooleanConfOption("giraph.cleanupCheckpointsAfterSuccess", true);
+      new BooleanConfOption("giraph.cleanupCheckpointsAfterSuccess", true,
+          "Delete checkpoints after a successful job run?");
 
   /**
    * An application can be restarted manually by selecting a superstep.  The
@@ -566,46 +683,59 @@ public interface GiraphConstants {
    */
   StrConfOption ZOOKEEPER_MANAGER_DIRECTORY =
       new StrConfOption("giraph.zkManagerDirectory",
-          "_bsp/_defaultZkManagerDir");
+          "_bsp/_defaultZkManagerDir",
+          "If ZOOKEEPER_LIST is not set, then use this directory to manage " +
+          "ZooKeeper");
 
   /** Number of ZooKeeper client connection attempts before giving up. */
   IntConfOption ZOOKEEPER_CONNECTION_ATTEMPTS =
-      new IntConfOption("giraph.zkConnectionAttempts", 10);
+      new IntConfOption("giraph.zkConnectionAttempts", 10,
+          "Number of ZooKeeper client connection attempts before giving up.");
 
   /** This directory has/stores the available checkpoint files in HDFS. */
   StrConfOption CHECKPOINT_DIRECTORY =
-      new StrConfOption("giraph.checkpointDirectory", "_bsp/_checkpoints/");
+      new StrConfOption("giraph.checkpointDirectory", "_bsp/_checkpoints/",
+          "This directory has/stores the available checkpoint files in HDFS.");
 
   /**
    * Comma-separated list of directories in the local file system for
    * out-of-core messages.
    */
   StrConfOption MESSAGES_DIRECTORY =
-      new StrConfOption("giraph.messagesDirectory", "_bsp/_messages/");
+      new StrConfOption("giraph.messagesDirectory", "_bsp/_messages/",
+          "Comma-separated list of directories in the local file system for " +
+          "out-of-core messages.");
 
   /** Whether or not to use out-of-core messages */
   BooleanConfOption USE_OUT_OF_CORE_MESSAGES =
-      new BooleanConfOption("giraph.useOutOfCoreMessages", false);
+      new BooleanConfOption("giraph.useOutOfCoreMessages", false,
+          "Whether or not to use out-of-core messages");
   /**
    * If using out-of-core messaging, it tells how much messages do we keep
    * in memory.
    */
   IntConfOption MAX_MESSAGES_IN_MEMORY =
-      new IntConfOption("giraph.maxMessagesInMemory", 1000000);
+      new IntConfOption("giraph.maxMessagesInMemory", 1000000,
+          "If using out-of-core messaging, it tells how much messages do we " +
+          "keep in memory.");
   /** Size of buffer when reading and writing messages out-of-core. */
   IntConfOption MESSAGES_BUFFER_SIZE =
-      new IntConfOption("giraph.messagesBufferSize", 8 * ONE_KB);
+      new IntConfOption("giraph.messagesBufferSize", 8 * ONE_KB,
+          "Size of buffer when reading and writing messages out-of-core.");
 
   /**
    * Comma-separated list of directories in the local filesystem for
    * out-of-core partitions.
    */
   StrConfOption PARTITIONS_DIRECTORY =
-      new StrConfOption("giraph.partitionsDirectory", "_bsp/_partitions");
+      new StrConfOption("giraph.partitionsDirectory", "_bsp/_partitions",
+          "Comma-separated list of directories in the local filesystem for " +
+          "out-of-core partitions.");
 
   /** Enable out-of-core graph. */
   BooleanConfOption USE_OUT_OF_CORE_GRAPH =
-      new BooleanConfOption("giraph.useOutOfCoreGraph", false);
+      new BooleanConfOption("giraph.useOutOfCoreGraph", false,
+          "Enable out-of-core graph.");
 
   /** Directory to write YourKit snapshots to */
   String YOURKIT_OUTPUT_DIR = "giraph.yourkit.outputDir";
@@ -614,11 +744,13 @@ public interface GiraphConstants {
 
   /** Maximum number of partitions to hold in memory for each worker. */
   IntConfOption MAX_PARTITIONS_IN_MEMORY =
-      new IntConfOption("giraph.maxPartitionsInMemory", 10);
+      new IntConfOption("giraph.maxPartitionsInMemory", 10,
+          "Maximum number of partitions to hold in memory for each worker.");
 
   /** Keep the zookeeper output for debugging? Default is to remove it. */
   BooleanConfOption KEEP_ZOOKEEPER_DATA =
-      new BooleanConfOption("giraph.keepZooKeeperData", false);
+      new BooleanConfOption("giraph.keepZooKeeperData", false,
+          "Keep the zookeeper output for debugging? Default is to remove it.");
 
   /** Default ZooKeeper tick time. */
   int DEFAULT_ZOOKEEPER_TICK_TIME = 6000;
@@ -632,27 +764,33 @@ public interface GiraphConstants {
   int DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS = 10000;
   /** ZooKeeper minimum session timeout */
   IntConfOption ZOOKEEPER_MIN_SESSION_TIMEOUT =
-      new IntConfOption("giraph.zKMinSessionTimeout", MINUTES.toMillis(10));
+      new IntConfOption("giraph.zKMinSessionTimeout", MINUTES.toMillis(10),
+          "ZooKeeper minimum session timeout");
   /** ZooKeeper maximum session timeout */
   IntConfOption ZOOKEEPER_MAX_SESSION_TIMEOUT =
-      new IntConfOption("giraph.zkMaxSessionTimeout", MINUTES.toMillis(15));
+      new IntConfOption("giraph.zkMaxSessionTimeout", MINUTES.toMillis(15),
+          "ZooKeeper maximum session timeout");
   /** ZooKeeper force sync */
   BooleanConfOption ZOOKEEPER_FORCE_SYNC =
-      new BooleanConfOption("giraph.zKForceSync", false);
+      new BooleanConfOption("giraph.zKForceSync", false,
+          "ZooKeeper force sync");
   /** ZooKeeper skip ACLs */
   BooleanConfOption ZOOKEEPER_SKIP_ACL =
-      new BooleanConfOption("giraph.ZkSkipAcl", true);
+      new BooleanConfOption("giraph.ZkSkipAcl", true, "ZooKeeper skip ACLs");
 
   /**
    * Whether to use SASL with DIGEST and Hadoop Job Tokens to authenticate
    * and authorize Netty BSP Clients to Servers.
    */
   BooleanConfOption AUTHENTICATE =
-      new BooleanConfOption("giraph.authenticate", false);
+      new BooleanConfOption("giraph.authenticate", false,
+          "Whether to use SASL with DIGEST and Hadoop Job Tokens to " +
+          "authenticate and authorize Netty BSP Clients to Servers.");
 
   /** Use unsafe serialization? */
   BooleanConfOption USE_UNSAFE_SERIALIZATION =
-      new BooleanConfOption("giraph.useUnsafeSerialization", true);
+      new BooleanConfOption("giraph.useUnsafeSerialization", true,
+          "Use unsafe serialization?");
 
   /**
    * Maximum number of attempts a master/worker will retry before killing
@@ -660,14 +798,19 @@ public interface GiraphConstants {
    * Hadoop.
    */
   IntConfOption MAX_TASK_ATTEMPTS =
-      new IntConfOption("mapred.map.max.attempts", -1);
+      new IntConfOption("mapred.map.max.attempts", -1,
+          "Maximum number of attempts a master/worker will retry before " +
+          "killing the job.  This directly maps to the number of map task " +
+          "attempts in Hadoop.");
 
   /** Interface to use for hostname resolution */
   StrConfOption DNS_INTERFACE =
-      new StrConfOption("giraph.dns.interface", "default");
+      new StrConfOption("giraph.dns.interface", "default",
+          "Interface to use for hostname resolution");
   /** Server for hostname resolution */
   StrConfOption DNS_NAMESERVER =
-      new StrConfOption("giraph.dns.nameserver", "default");
+      new StrConfOption("giraph.dns.nameserver", "default",
+          "Server for hostname resolution");
 
   /**
    * The application will halt after this many supersteps is completed.  For
@@ -675,13 +818,20 @@ public interface GiraphConstants {
    * and 2 supersteps and then go into the shutdown superstep.
    */
   IntConfOption MAX_NUMBER_OF_SUPERSTEPS =
-      new IntConfOption("giraph.maxNumberOfSupersteps", 1);
+      new IntConfOption("giraph.maxNumberOfSupersteps", 1,
+          "The application will halt after this many supersteps is " +
+          "completed. For instance, if it is set to 3, the application will " +
+          "run at most 0, 1, and 2 supersteps and then go into the shutdown " +
+          "superstep.");
 
   /**
    * The application will not mutate the graph topology (the edges). It is used
    * to optimise out-of-core graph, by not writing back edges every time.
    */
   BooleanConfOption STATIC_GRAPH =
-      new BooleanConfOption("giraph.isStaticGraph", false);
+      new BooleanConfOption("giraph.isStaticGraph", false,
+          "The application will not mutate the graph topology (the edges). " +
+          "It is used to optimise out-of-core graph, by not writing back " +
+          "edges every time.");
 }
 // CHECKSTYLE: resume InterfaceIsTypeCheck

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-core/src/main/java/org/apache/giraph/conf/IntConfOption.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/conf/IntConfOption.java b/giraph-core/src/main/java/org/apache/giraph/conf/IntConfOption.java
index 142c090..2ab8f59 100644
--- a/giraph-core/src/main/java/org/apache/giraph/conf/IntConfOption.java
+++ b/giraph-core/src/main/java/org/apache/giraph/conf/IntConfOption.java
@@ -31,9 +31,10 @@ public class IntConfOption extends AbstractConfOption {
    *
    * @param key key
    * @param defaultValue default value
+   * @param description configuration description
    */
-  public IntConfOption(String key, int defaultValue) {
-    super(key);
+  public IntConfOption(String key, int defaultValue, String description) {
+    super(key, description);
     this.defaultValue = defaultValue;
     AllOptions.add(this);
   }
@@ -43,9 +44,10 @@ public class IntConfOption extends AbstractConfOption {
    *
    * @param key key
    * @param defaultValue default value
+   * @param description configuration description
    */
-  public IntConfOption(String key, long defaultValue) {
-    super(key);
+  public IntConfOption(String key, long defaultValue, String description) {
+    super(key, description);
     this.defaultValue = (int) defaultValue;
     AllOptions.add(this);
   }

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-core/src/main/java/org/apache/giraph/conf/LongConfOption.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/conf/LongConfOption.java b/giraph-core/src/main/java/org/apache/giraph/conf/LongConfOption.java
index a5c939d..437bbb6 100644
--- a/giraph-core/src/main/java/org/apache/giraph/conf/LongConfOption.java
+++ b/giraph-core/src/main/java/org/apache/giraph/conf/LongConfOption.java
@@ -31,9 +31,10 @@ public class LongConfOption extends AbstractConfOption {
    *
    * @param key key
    * @param defaultValue default value
+   * @param description configuration description
    */
-  public LongConfOption(String key, long defaultValue) {
-    super(key);
+  public LongConfOption(String key, long defaultValue, String description) {
+    super(key, description);
     this.defaultValue = defaultValue;
     AllOptions.add(this);
   }

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-core/src/main/java/org/apache/giraph/conf/StrConfOption.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/conf/StrConfOption.java b/giraph-core/src/main/java/org/apache/giraph/conf/StrConfOption.java
index 7c3a993..69e246c 100644
--- a/giraph-core/src/main/java/org/apache/giraph/conf/StrConfOption.java
+++ b/giraph-core/src/main/java/org/apache/giraph/conf/StrConfOption.java
@@ -36,9 +36,10 @@ public class StrConfOption extends AbstractConfOption {
    *
    * @param key key
    * @param defaultValue default value
+   * @param description configuration description
    */
-  public StrConfOption(String key, String defaultValue) {
-    super(key);
+  public StrConfOption(String key, String defaultValue, String description) {
+    super(key, description);
     this.defaultValue = defaultValue;
     AllOptions.add(this);
   }

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-core/src/main/java/org/apache/giraph/io/formats/multi/EdgeInputFormatDescription.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/io/formats/multi/EdgeInputFormatDescription.java b/giraph-core/src/main/java/org/apache/giraph/io/formats/multi/EdgeInputFormatDescription.java
index 4b48e63..acc240d 100644
--- a/giraph-core/src/main/java/org/apache/giraph/io/formats/multi/EdgeInputFormatDescription.java
+++ b/giraph-core/src/main/java/org/apache/giraph/io/formats/multi/EdgeInputFormatDescription.java
@@ -50,7 +50,13 @@ public class EdgeInputFormatDescription<I extends WritableComparable,
    * [["EIF1",{"p":"v1"}],["EIF2",{"p":"v2","q":"v"}]]
    */
   public static final StrConfOption EDGE_INPUT_FORMAT_DESCRIPTIONS =
-      new StrConfOption("giraph.multiEdgeInput.descriptions", null);
+      new StrConfOption("giraph.multiEdgeInput.descriptions", null,
+          "EdgeInputFormats description - JSON array containing a JSON array " +
+          "for each edge input. Edge input JSON arrays contain one or two " +
+          "elements - first one is the name of edge input class, and second " +
+          "one is JSON object with all specific parameters for this edge " +
+          "input. For example: [[\"EIF1\",{\"p\":\"v1\"}]," +
+          "[\"EIF2\",{\"p\":\"v2\",\"q\":\"v\"}]]");
 
   /**
    * Constructor with edge input format class

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-core/src/main/java/org/apache/giraph/io/formats/multi/VertexInputFormatDescription.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/io/formats/multi/VertexInputFormatDescription.java b/giraph-core/src/main/java/org/apache/giraph/io/formats/multi/VertexInputFormatDescription.java
index 1487749..e86f9ed 100644
--- a/giraph-core/src/main/java/org/apache/giraph/io/formats/multi/VertexInputFormatDescription.java
+++ b/giraph-core/src/main/java/org/apache/giraph/io/formats/multi/VertexInputFormatDescription.java
@@ -52,7 +52,13 @@ public class VertexInputFormatDescription<I extends WritableComparable,
    * [["VIF1",{"p":"v1"}],["VIF2",{"p":"v2","q":"v"}]]
    */
   public static final StrConfOption VERTEX_INPUT_FORMAT_DESCRIPTIONS =
-      new StrConfOption("giraph.multiVertexInput.descriptions", null);
+      new StrConfOption("giraph.multiVertexInput.descriptions", null,
+          "VertexInputFormats description - JSON array containing a JSON " +
+          "array for each vertex input. Vertex input JSON arrays contain " +
+          "one or two elements - first one is the name of vertex input " +
+          "class, and second one is JSON object with all specific parameters " +
+          "for this vertex input. For example: [[\"VIF1\",{\"p\":\"v1\"}]," +
+          "[\"VIF2\",{\"p\":\"v2\",\"q\":\"v\"}]]\"");
 
   /**
    * Constructor with vertex input format class

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-core/src/main/java/org/apache/giraph/jython/JythonComputationFactory.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/jython/JythonComputationFactory.java b/giraph-core/src/main/java/org/apache/giraph/jython/JythonComputationFactory.java
index 6db5f65..f7331ac 100644
--- a/giraph-core/src/main/java/org/apache/giraph/jython/JythonComputationFactory.java
+++ b/giraph-core/src/main/java/org/apache/giraph/jython/JythonComputationFactory.java
@@ -47,13 +47,16 @@ public class JythonComputationFactory implements ComputationFactory {
   /** Type of script path */
   public static final EnumConfOption<DeployType> JYTHON_DEPLOY_TYPE =
       EnumConfOption.create("giraph.jython.deploy.type",
-          DeployType.class, DeployType.DISTRIBUTED_CACHE);
+          DeployType.class, DeployType.DISTRIBUTED_CACHE,
+          "Type of script path");
   /** Path to Jython script */
   public static final StrConfOption JYTHON_SCRIPT_PATH =
-      new StrConfOption("giraph.jython.path", "_script_not_set_");
+      new StrConfOption("giraph.jython.path", "_script_not_set_",
+          "Path to Jython script");
   /** Name of Computation class in Jython script */
   public static final StrConfOption JYTHON_COMPUTATION_CLASS =
-      new StrConfOption("giraph.jython.class", "_computation_class_not_set_");
+      new StrConfOption("giraph.jython.class", "_computation_class_not_set_",
+          "Name of Computation class in Jython script");
 
   /** Logger */
   private static final Logger LOG = Logger.getLogger(JythonUtils.class);

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-examples/src/main/java/org/apache/giraph/examples/GeneratedEdgeReader.java
----------------------------------------------------------------------
diff --git a/giraph-examples/src/main/java/org/apache/giraph/examples/GeneratedEdgeReader.java b/giraph-examples/src/main/java/org/apache/giraph/examples/GeneratedEdgeReader.java
index 14da5f2..3a3c00f 100644
--- a/giraph-examples/src/main/java/org/apache/giraph/examples/GeneratedEdgeReader.java
+++ b/giraph-examples/src/main/java/org/apache/giraph/examples/GeneratedEdgeReader.java
@@ -41,7 +41,8 @@ public abstract class GeneratedEdgeReader<
     extends EdgeReader<I, E> {
   /** Default edges produced by this reader */
   public static final LongConfOption DEFAULT_READER_EDGES =
-    new LongConfOption("GeneratedEdgeReader.reader_edges", 10);
+    new LongConfOption("GeneratedEdgeReader.reader_edges", 10,
+        "Default edges produced by this reader");
   /** Records read so far */
   protected long recordsRead = 0;
   /** Total records to read (on this split alone) */

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-examples/src/main/java/org/apache/giraph/examples/GeneratedVertexReader.java
----------------------------------------------------------------------
diff --git a/giraph-examples/src/main/java/org/apache/giraph/examples/GeneratedVertexReader.java b/giraph-examples/src/main/java/org/apache/giraph/examples/GeneratedVertexReader.java
index 1d74843..ed5a8d0 100644
--- a/giraph-examples/src/main/java/org/apache/giraph/examples/GeneratedVertexReader.java
+++ b/giraph-examples/src/main/java/org/apache/giraph/examples/GeneratedVertexReader.java
@@ -43,10 +43,12 @@ public abstract class GeneratedVertexReader<
     extends VertexReader<I, V, E> {
   /** Vertices produced by this reader */
   public static final LongConfOption READER_VERTICES =
-      new LongConfOption("GeneratedVertexReader.reader_vertices", 10);
+      new LongConfOption("GeneratedVertexReader.reader_vertices", 10,
+          "Vertices produced by this reader");
   /** Reverse the order of the vertices? */
   public static final BooleanConfOption REVERSE_ID_ORDER =
-      new BooleanConfOption("GeneratedVertexReader.reverseIdOrder", false);
+      new BooleanConfOption("GeneratedVertexReader.reverseIdOrder", false,
+          "Reverse the order of the vertices?");
   /** Records read so far */
   protected long recordsRead = 0;
   /** Total records to read (on this split alone) */

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-examples/src/main/java/org/apache/giraph/examples/SimpleShortestPathsComputation.java
----------------------------------------------------------------------
diff --git a/giraph-examples/src/main/java/org/apache/giraph/examples/SimpleShortestPathsComputation.java b/giraph-examples/src/main/java/org/apache/giraph/examples/SimpleShortestPathsComputation.java
index bc39cad..532009e 100644
--- a/giraph-examples/src/main/java/org/apache/giraph/examples/SimpleShortestPathsComputation.java
+++ b/giraph-examples/src/main/java/org/apache/giraph/examples/SimpleShortestPathsComputation.java
@@ -40,7 +40,8 @@ public class SimpleShortestPathsComputation extends BasicComputation<
     LongWritable, DoubleWritable, FloatWritable, DoubleWritable> {
   /** The shortest paths id */
   public static final LongConfOption SOURCE_ID =
-      new LongConfOption("SimpleShortestPathsVertex.sourceId", 1);
+      new LongConfOption("SimpleShortestPathsVertex.sourceId", 1,
+          "The shortest paths id");
   /** Class logger */
   private static final Logger LOG =
       Logger.getLogger(SimpleShortestPathsComputation.class);

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-hive/src/main/java/org/apache/giraph/hive/common/GiraphHiveConstants.java
----------------------------------------------------------------------
diff --git a/giraph-hive/src/main/java/org/apache/giraph/hive/common/GiraphHiveConstants.java b/giraph-hive/src/main/java/org/apache/giraph/hive/common/GiraphHiveConstants.java
index d23046b..e492694 100644
--- a/giraph-hive/src/main/java/org/apache/giraph/hive/common/GiraphHiveConstants.java
+++ b/giraph-hive/src/main/java/org/apache/giraph/hive/common/GiraphHiveConstants.java
@@ -38,19 +38,24 @@ public class GiraphHiveConstants {
   /** Class for converting vertices to Hive records */
   public static final ClassConfOption<VertexToHive> VERTEX_TO_HIVE_CLASS =
       ClassConfOption.create("giraph.vertex.to.hive.class", null,
-          VertexToHive.class);
+          VertexToHive.class,
+          "Class for converting vertices to Hive records");
   /** Vertex output profile id */
   public static final StrConfOption HIVE_VERTEX_OUTPUT_PROFILE_ID =
-      new StrConfOption("giraph.hive.output.vertex.profileId", "vertex_output");
+      new StrConfOption("giraph.hive.output.vertex.profileId", "vertex_output",
+          "Vertex output profile id");
   /** Vertex output database name */
   public static final StrConfOption HIVE_VERTEX_OUTPUT_DATABASE =
-      new StrConfOption("giraph.hive.output.vertex.database", "default");
+      new StrConfOption("giraph.hive.output.vertex.database", "default",
+          "Vertex output database name");
   /** Vertex output table name */
   public static final StrConfOption HIVE_VERTEX_OUTPUT_TABLE =
-      new StrConfOption("giraph.hive.output.vertex.table", "");
+      new StrConfOption("giraph.hive.output.vertex.table", "",
+          "Vertex output table name");
   /** Vertex output partition */
   public static final StrConfOption HIVE_VERTEX_OUTPUT_PARTITION =
-      new StrConfOption("giraph.hive.output.vertex.partition", "");
+      new StrConfOption("giraph.hive.output.vertex.partition", "",
+          "Vertex output partition");
 
   /** Don't construct */
   protected GiraphHiveConstants() { }

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/giraph-hive/src/main/java/org/apache/giraph/hive/common/HiveInputOptions.java
----------------------------------------------------------------------
diff --git a/giraph-hive/src/main/java/org/apache/giraph/hive/common/HiveInputOptions.java b/giraph-hive/src/main/java/org/apache/giraph/hive/common/HiveInputOptions.java
index 17395aa..5108730 100644
--- a/giraph-hive/src/main/java/org/apache/giraph/hive/common/HiveInputOptions.java
+++ b/giraph-hive/src/main/java/org/apache/giraph/hive/common/HiveInputOptions.java
@@ -54,15 +54,19 @@ public class HiveInputOptions<C> {
    */
   public HiveInputOptions(String name, Class<C> hiveToTypeClass) {
     classOpt = ClassConfOption.<C>create(key(name, "class"),
-        null, hiveToTypeClass);
+        null, hiveToTypeClass, "Class for converting hive records");
     profileIdOpt = new StrConfOption(key(name, "profileId"),
-        name + "_input_profile");
-    partitionOpt = new StrConfOption(key(name, "partition"), "");
-    splitsOpt = new IntConfOption(key(name, "splits"), 0);
-    databaseOpt = new StrConfOption(key(name, "database"), "default");
-    tableOpt = new StrConfOption(key(name, "table"), "");
-    hostOpt = new StrConfOption(key(name, "metastore.host"), null);
-    portOpt = new IntConfOption(key(name, "metastore.port"), 9083);
+        name + "_input_profile", "Input profile id");
+    partitionOpt = new StrConfOption(key(name, "partition"), "",
+        "Input partition filter");
+    splitsOpt = new IntConfOption(key(name, "splits"), 0, "Number of splits");
+    databaseOpt = new StrConfOption(key(name, "database"), "default",
+        "Input database name");
+    tableOpt = new StrConfOption(key(name, "table"), "", "Input table name");
+    hostOpt = new StrConfOption(key(name, "metastore.host"), null,
+        "Hive Metastore host to use. If blank will infer from HiveConf");
+    portOpt = new IntConfOption(key(name, "metastore.port"), 9083,
+        "Hive Metastore port to use.");
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/giraph/blob/52c88d8d/src/site/site.xml
----------------------------------------------------------------------
diff --git a/src/site/site.xml b/src/site/site.xml
index b5e7e8a..b2145a6 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -80,6 +80,7 @@
       <item name="Aggregators" href="aggregators.html"/>
       <item name="Out-of-core" href="ooc.html"/>
       <item name="Javadoc" href="javadoc_modules.html"/>
+      <item name="Options List" href="options.html"/>
       <item name="Presentations" href="presentations.html"/>
       <item name="External Community Wiki" href="https://cwiki.apache.org/confluence/display/GIRAPH" />
     </menu>