GIRAPH-1193
authorDionysios Logothetis <dlogothetis@gmail.com>
Sat, 26 May 2018 01:24:00 +0000 (18:24 -0700)
committerDionysios Logothetis <dionysios@fb.com>
Sat, 26 May 2018 01:24:00 +0000 (18:24 -0700)
GIRAPH-1176

closes #73

21 files changed:
giraph-core/src/main/java/org/apache/giraph/Algorithm.java
giraph-core/src/main/java/org/apache/giraph/aggregators/matrix/dense/DoubleDenseMatrixSumAggregator.java
giraph-core/src/main/java/org/apache/giraph/aggregators/matrix/dense/FloatDenseMatrixSumAggregator.java
giraph-core/src/main/java/org/apache/giraph/aggregators/matrix/dense/IntDenseMatrixSumAggregator.java
giraph-core/src/main/java/org/apache/giraph/aggregators/matrix/dense/LongDenseMatrixSumAggregator.java
giraph-core/src/main/java/org/apache/giraph/aggregators/matrix/sparse/DoubleSparseMatrixSumAggregator.java
giraph-core/src/main/java/org/apache/giraph/graph/Computation.java
giraph-core/src/main/java/org/apache/giraph/master/MasterAggregatorUsage.java
giraph-core/src/main/java/org/apache/giraph/master/MasterCompute.java
giraph-core/src/main/java/org/apache/giraph/scripting/ScriptLoader.java
giraph-core/src/main/java/org/apache/giraph/utils/UnsafeReads.java
giraph-core/src/main/java/org/apache/giraph/zk/GiraphZooKeeperAdmin.java
giraph-core/src/main/java/org/apache/giraph/zk/ZooKeeperManager.java
giraph-core/src/main/java/org/apache/giraph/zk/ZooKeeperNodeCreator.java
giraph-core/src/main/java/org/apache/giraph/zk/ZooKeeperRunner.java
giraph-core/src/main/java/org/apache/giraph/zk/ZookeeperConfig.java
pom.xml
src/site/xdoc/build_site.xml
src/site/xdoc/index.xml
src/site/xdoc/literature.xml
src/site/xdoc/releases.xml

index cdc9cba..423dff0 100644 (file)
@@ -29,13 +29,17 @@ import java.lang.annotation.Target;
 @Retention(value = RetentionPolicy.RUNTIME)
 @Target(value = ElementType.TYPE)
 public @interface Algorithm {
+  // CHECKSTYLE: stop JavadocMethod
   /**
    * Name of the algorithm.
+   * @return Name
    */
   String name();
 
   /**
    * Short description of algorithm which is going to be presented to the user.
+   * @return Description
    */
   String description() default "";
+  // CHECKSTYLE: resume JavadocMethod
 }
index 2c2c078..de337f6 100644 (file)
@@ -46,6 +46,8 @@ public class DoubleDenseMatrixSumAggregator extends MatrixSumAggregator {
    *
    * @param numRows the number of rows
    * @param master the master to register the aggregators
+   * @throws InstantiationException
+   * @throws IllegalAccessException
    */
   public void register(int numRows, MasterAggregatorUsage master)
     throws InstantiationException, IllegalAccessException {
index 61fbd0b..6c371a3 100644 (file)
@@ -46,6 +46,8 @@ public class FloatDenseMatrixSumAggregator extends MatrixSumAggregator {
    *
    * @param numRows the number of rows
    * @param master the master to register the aggregators
+   * @throws InstantiationException
+   * @throws IllegalAccessException
    */
   public void register(int numRows, MasterAggregatorUsage master)
     throws InstantiationException, IllegalAccessException {
index 3466545..c2f340a 100644 (file)
@@ -46,6 +46,8 @@ public class IntDenseMatrixSumAggregator extends MatrixSumAggregator {
    *
    * @param numRows the number of rows
    * @param master the master to register the aggregators
+   * @throws InstantiationException
+   * @throws IllegalAccessException
    */
   public void register(int numRows, MasterAggregatorUsage master)
     throws InstantiationException, IllegalAccessException {
index 0fb1aa8..561dfba 100644 (file)
@@ -46,6 +46,8 @@ public class LongDenseMatrixSumAggregator extends MatrixSumAggregator {
    *
    * @param numRows the number of rows
    * @param master the master to register the aggregators
+   * @throws InstantiationException
+   * @throws IllegalAccessException
    */
   public void register(int numRows, MasterAggregatorUsage master)
     throws InstantiationException, IllegalAccessException {
index 02a1c1e..6d0a6fe 100644 (file)
@@ -46,6 +46,8 @@ public class DoubleSparseMatrixSumAggregator extends MatrixSumAggregator {
    *
    * @param numRows the number of rows
    * @param master the master to register the aggregators
+   * @throws InstantiationException
+   * @throws IllegalAccessException
    */
   public void register(int numRows, MasterAggregatorUsage master)
     throws InstantiationException, IllegalAccessException {
index 1ac6f43..f4d6ff9 100644 (file)
@@ -151,6 +151,7 @@ public interface Computation<I extends WritableComparable,
    * @param id Vertex id
    * @param value Vertex value
    * @param edges Initial edges
+   * @throws IOException
    */
   void addVertexRequest(I id, V value, OutEdges<I, E> edges) throws IOException;
 
@@ -160,6 +161,7 @@ public interface Computation<I extends WritableComparable,
    *
    * @param id Vertex id
    * @param value Vertex value
+   * @throws IOException
    */
   void addVertexRequest(I id, V value) throws IOException;
 
@@ -168,6 +170,7 @@ public interface Computation<I extends WritableComparable,
    * (applied just prior to the next superstep).
    *
    * @param vertexId Id of the vertex to be removed.
+   * @throws IOException
    */
   void removeVertexRequest(I vertexId) throws IOException;
 
@@ -177,6 +180,7 @@ public interface Computation<I extends WritableComparable,
    *
    * @param sourceVertexId Source vertex id of edge
    * @param edge Edge to add
+   * @throws IOException
    */
   void addEdgeRequest(I sourceVertexId, Edge<I, E> edge) throws IOException;
 
@@ -186,6 +190,7 @@ public interface Computation<I extends WritableComparable,
    *
    * @param sourceVertexId Source vertex id
    * @param targetVertexId Target vertex id
+   * @throws IOException
    */
   void removeEdgesRequest(I sourceVertexId, I targetVertexId)
     throws IOException;
index cadae67..2ea8a73 100644 (file)
@@ -34,6 +34,8 @@ public interface MasterAggregatorUsage extends AggregatorUsage {
    * @param aggregatorClass Class type of the aggregator
    * @param <A> Aggregator type
    * @return True iff aggregator wasn't already registered
+   * @throws InstantiationException
+   * @throws IllegalAccessException
    */
   <A extends Writable> boolean registerAggregator(String name,
       Class<? extends Aggregator<A>> aggregatorClass) throws
@@ -48,6 +50,8 @@ public interface MasterAggregatorUsage extends AggregatorUsage {
    * @param aggregatorClass Class type of the aggregator
    * @param <A> Aggregator type
    * @return True iff aggregator wasn't already registered
+   * @throws InstantiationException
+   * @throws IllegalAccessException
    */
   <A extends Writable> boolean registerPersistentAggregator(String name,
       Class<? extends Aggregator<A>> aggregatorClass) throws
index dad766b..e7430db 100644 (file)
@@ -69,6 +69,9 @@ public abstract class MasterCompute
   /**
    * Initialize the MasterCompute class, this is the place to register
    * aggregators.
+   *
+   * @throws InstantiationException
+   * @throws IllegalAccessException
    */
   public abstract void initialize() throws InstantiationException,
     IllegalAccessException;
index f78b1a0..e7485a4 100644 (file)
@@ -149,6 +149,7 @@ public class ScriptLoader {
    * Load all the scripts deployed in Configuration
    *
    * @param conf Configuration
+   * @throws IOException
    */
   public static void loadScripts(Configuration conf) throws IOException {
     List<DeployedScript> deployedScripts = getScriptsToLoad(conf);
@@ -165,6 +166,7 @@ public class ScriptLoader {
    *
    * @param conf Configuration
    * @param deployedScript the deployed script
+   * @throws IOException
    */
   public static void loadScript(Configuration conf,
       DeployedScript deployedScript) throws IOException {
index 4053ca6..16068fa 100644 (file)
@@ -67,7 +67,6 @@ public abstract class UnsafeReads extends Input implements ExtendedDataInput {
    * Check whether there are enough remaining bytes for an operation
    *
    * @param requiredBytes Bytes required to read
-   * @throws IOException When there are not enough bytes to read
    */
   @Override
   protected int require(int requiredBytes) {
index dbb2096..0114e21 100644 (file)
@@ -130,6 +130,8 @@ public class GiraphZooKeeperAdmin implements Watcher, Tool {
    * Cleans the ZooKeeper quorum of in-memory failed/killed job fragments.
    * @param zooKeeper the connected ZK instance (session) to delete from.
    * @param zkBasePath the base node to begin erasing from.
+   * @throws KeeperException
+   * @throws InterruptedException
    */
   public void doZooKeeperCleanup(ZooKeeperExt zooKeeper, String zkBasePath)
     throws KeeperException, InterruptedException {
@@ -153,6 +155,7 @@ public class GiraphZooKeeperAdmin implements Watcher, Tool {
    * @param zkServerList the CSV-style list of hostnames of Zk quorum members.
    * @param zkPort the port the quorum is listening on.
    * @return the formatted zkConnectList for use in the ZkExt constructor.
+   * @throws UnknownHostException
    */
   private String formatZkServerList(String[] zkServerList, int zkPort)
     throws UnknownHostException {
@@ -167,6 +170,7 @@ public class GiraphZooKeeperAdmin implements Watcher, Tool {
 
   /** Entry point from shell script
    * @param args the command line arguments
+   * @throws Exception
    */
   public static void main(String[] args) throws Exception {
     System.exit(ToolRunner.run(new GiraphZooKeeperAdmin(), args));
index c398140..3b4640f 100644 (file)
@@ -456,6 +456,8 @@ public class ZooKeeperManager {
   /**
    * If this task has been selected, online a ZooKeeper server.  Otherwise,
    * wait until this task knows that the ZooKeeper servers have been onlined.
+   *
+   * @throws IOException
    */
   public void onlineZooKeeperServer() throws IOException {
     if (zkServerTask == taskPartition) {
index 2ffa80a..309cd2a 100644 (file)
@@ -80,6 +80,7 @@ public class ZooKeeperNodeCreator implements Tool, Watcher {
   /**
    * Entry point from shell script
    * @param args the command line arguments
+   * @throws Exception
    */
   public static void main(String[] args) throws Exception {
     System.exit(ToolRunner.run(new ZooKeeperNodeCreator(), args));
index 9d6a332..3641385 100644 (file)
@@ -34,6 +34,7 @@ public interface ZooKeeperRunner extends ImmutableClassesGiraphConfigurable {
    * @param zkDir working directory
    * @param config zookeeper configuration
    * @return port zookeeper runs on
+   * @throws IOException
    */
   int start(String zkDir, ZookeeperConfig config) throws IOException;
 
index 2aeb192..3aa5fd5 100644 (file)
@@ -58,9 +58,17 @@ public class ZookeeperConfig {
     }
     return dataLogDir;
   }
-  /** minimum session timeout in milliseconds */
+  /**
+   * Minimum session timeout in milliseconds.
+   * @return Minimum session time.
+   */
   public int getMinSessionTimeout() { return minSessionTimeout; }
-  /** maximum session timeout in milliseconds */
+
+  /**
+   * Maximum session timeout in milliseconds.
+   *
+   * @return Maximum session time.
+   */
   public int getMaxSessionTimeout() { return maxSessionTimeout; }
 
   /**
diff --git a/pom.xml b/pom.xml
index e2eff4b..fd752fb 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -930,6 +930,15 @@ under the License.
               <version>2.4</version>
           </plugin>
           <plugin>
+              <!-- JXR must be executed beofre Taglist plugin -->
+              <groupId>org.apache.maven.plugins</groupId>
+              <artifactId>maven-jxr-plugin</artifactId>
+              <version>2.3</version>
+              <configuration>
+                  <aggregate>true</aggregate>
+              </configuration>
+          </plugin>
+          <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>taglist-maven-plugin</artifactId>
               <version>2.4</version>
@@ -955,14 +964,6 @@ under the License.
               </reportSets>
           </plugin>
           <plugin>
-              <groupId>org.apache.maven.plugins</groupId>
-              <artifactId>maven-jxr-plugin</artifactId>
-              <version>2.3</version>
-              <configuration>
-                  <aggregate>true</aggregate>
-              </configuration>
-          </plugin>
-          <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>findbugs-maven-plugin</artifactId>
               <version>3.0.0</version>
index 34d9b50..23735b3 100644 (file)
@@ -30,8 +30,8 @@ under the License.
     <section name="Summary">
       <p>We build this site with Maven using the fluido plugin.  Due to difficulties with the maven site plugin and munge working together, we build the site using a profile that does not require munge.</p>
       <ul>
-        <li>Start at the parent directory and do <source>mvn clean site -DskipTests -Phadoop_2.0.0 -Ddependency.locations.enabled=false</source></li>
-        <li>Then we need to stage this site since it has multiple modules with <source>mvn site:stage -DskipTests -Phadoop_2.0.0</source></li>
+        <li>Start at the parent directory and do <source>mvn -Phadoop_2 clean site -DskipTests</source></li>
+        <li>Then we need to stage this site since it has multiple modules with <source>mvn -Phadoop_2 site:stage -DskipTests</source></li>
         <li>You can check the results of the site building and staging in <source>target/staging</source> and then deploy as necessary.</li>
         <li>To deploy, check out the site from svn with <source>svn co https://svn.apache.org/repos/asf/giraph/site</source>.  Remove everything and then copy the staged site to the directory and then commit.  All changes should be live immediately.</li>
       </ul>
index 017101c..c1d6402 100644 (file)
@@ -37,6 +37,7 @@ under the License.
 
       <subsection name="News">
         <ul>
+          <li><strong>Oct 20, 2016: Giraph 1.2.0 is now released!</strong> Please pick up a copy <a href="http://www.apache.org/dyn/closer.cgi/giraph/giraph-1.2.0">here</a>.</li>
           <li><strong>Oct 28, 2015: Practical Graph Analytics with Apache Giraph is now available from Apress.</strong> More details in our books section <a href="literature.html">here</a>.</li>
           <li><strong>Nov 19, 2014: Giraph 1.1.0 is now released!</strong> Please pick up a copy <a href="http://www.apache.org/dyn/closer.cgi/giraph/giraph-1.1.0">here</a>.</li>
           <li><strong>May 6, 2013: Giraph 1.0.0 is now released!</strong> Please pick up a copy <a href="http://www.apache.org/dyn/closer.cgi/giraph/giraph-1.0.0">here</a>.</li>
index c4a5f92..69cd743 100644 (file)
@@ -30,80 +30,81 @@ under the License.
 
     <section name="Books">
                <table>
-               <tr>
-                  <td><b>Practical Graph Analytics with Apache Giraph</b>(<a href="http://www.apress.com/9781484212523">Published by Apress</a>)<br/> 
-                       Practical Graph Analytics with Apache Giraph helps you build data mining and machine learning applications using the Apache Foundation’s Giraph framework for graph processing. This is the same framework as used by Facebook, Google, and other social media analytics operations to derive business value from vast amounts of interconnected data points.
-                   </td>
-                   <td><img src="http://www.apress.com/media/catalog/product/cache/9/image/9df78eab33525d08d6e5fb8d27136e95/A/9/A9781484212523-3d.png"/><br/>
-                   </td>
+           <tr>
+                 <td><b>Practical Graph Analytics with Apache Giraph</b> (<a href="http://www.apress.com/9781484212523">Published by Apress</a>)<br/> 
+             Practical Graph Analytics with Apache Giraph helps you build data mining and machine learning applications using the Apache Foundation’s Giraph framework for graph processing. This is the same framework as used by Facebook, Google, and other social media analytics operations to derive business value from vast amounts of interconnected data points.
+      </td>
+      <td><img src="http://www.apress.com/media/catalog/product/cache/9/image/9df78eab33525d08d6e5fb8d27136e95/A/9/A9781484212523-3d.png"/><br/>
+      </td>
                </tr>
                </table>
     </section>
  
     <section name="Research Articles">
-         <p>Avery Ching, Sergey Edunov, Maja Kabiljo, Dionysios Logothetis, Sambavi Muthukrishnan, <i>One Trillion Edges: Graph Processing at Facebook-Scale</i>. 
-         Proceedings of the VLDB Endowment, Vol. 8, No. 12, (2015)
-         <br/>
-         <a href="http://www.vldb.org/pvldb/vol8/p1804-ching.pdf">http://www.vldb.org/pvldb/vol8/p1804-ching.pdf</a>
-         </p>
-               
-               <p>Xin, R. S., Crankshaw, D., Dave, A., Gonzalez, J. E., Franklin, M. J., &amp; Stoica, I. <i>GraphX: Unifying Data-Parallel and Graph-Parallel Analytics</i>. 
-               arXiv preprint arXiv:1402.2394. (2014)<br/>
-         <a href="http://arxiv.org/pdf/1402.2394">http://arxiv.org/pdf/1402.2394</a>
-         </p>
-               
-               <p>Martella, Claudio et al. <i>Spinner: scalable graph partitioning for the cloud.</i> arXiv, (2014). <br/>
-               <a href="http://arxiv.org/pdf/1404.3861v1.pdf">http://arxiv.org/pdf/1404.3861v1.pdf</a>
-        </p>
-               
-        <p>Khayyat, Zuhair, et al. <i>Mizan: a system for dynamic load balancing in large-scale graph processing.</i> 
-        Proceedings of the 8th ACM European Conference on Computer Systems. ACM, (2013). <br/>
-        <a href="http://www.cs.cornell.edu/~djwill/pubs/mizan.pdf">http://www.cs.cornell.edu/~djwill/pubs/mizan.pdf</a>
-        </p>
-               
-        <p>Salihoglu, Semih, &amp; Jennifer Widom. <i>Gps: A graph processing system.</i> 
-        Proceedings of the 25th International Conference on Scientific and Statistical Database Management. ACM, (2013).<br/>
-        <a href="http://ilpubs.stanford.edu:8090/1039/7/gps_ssdbm.pdf">http://ilpubs.stanford.edu:8090/1039/7/gps_ssdbm.pdf</a>
-        </p>           
-               
-               <p>Tian, Y., Balmin, A., Corsten, S. A., Tatikonda, S., &amp; McPherson, J. <i>From <b>Think Like a Vertex</b> to <b>Think Like a Graph</b></i>. 
-               Proceedings of the VLDB Endowment, 7(3). (2013)<br/>
-        <a href="http://researcher.ibm.com/researcher/files/us-ytian/giraph++.pdf">http://researcher.ibm.com/researcher/files/us-ytian/giraph++.pdf</a>
-        </p>
-               <p>Schelter, S., Ewen, S., Tzoumas, K., &amp; Markl, V. <i>All roads lead to Rome: optimistic recovery for distributed iterative data processing</i>. 
-               In Proceedings of the 22nd ACM international conference on Conference on information &amp; knowledge management (pp. 1919-1928). ACM. (2013, October).<br/>
-         <a href="http://stratosphere.eu/assets/papers/optimistic.pdf">http://stratosphere.eu/assets/papers/optimistic.pdf</a>
-         </p>
+      <p>Sergey Edunov, Dionysios Logothetis, Avery Ching, Maja Kabiljo, Cheng Wang, <i>Darwini: Generating realistic large-scale social graphs</i>. 
+      IEEE International Conference on Distributed Computing Systems, 2018<br/>
+      <a href="https://easychair.org/publications/preprint/5vJS">https://easychair.org/publications/preprint/5vJS</a>
+      </p>
+
+      <p>Martella, Claudio et al. <i>Spinner: scalable graph partitioning for the cloud.</i> 
+      IEEE International Conference on Data Engineering, 2017 <br/>
+      <a href="https://ieeexplore.ieee.org/document/7930049/">https://ieeexplore.ieee.org/document/7930049/</a>
+      </p>
  
-        <p>Ewen, S., Tzoumas, K., Kaufmann, M., &amp; Markl, V. <i>Spinning fast iterative data flows</i>. Proceedings of the VLDB Endowment, 5(11), 1268-1279. (2012).<br/>
-         <a href="http://arxiv.org/pdf/1208.0088.pdf?origin=publication_detail">http://arxiv.org/pdf/1208.0088.pdf?origin=publication_detail</a>
-        </p>
+      <p>Avery Ching, Sergey Edunov, Maja Kabiljo, Dionysios Logothetis, Sambavi Muthukrishnan, <i>One Trillion Edges: Graph Processing at Facebook-Scale</i>. 
+        Proceedings of the VLDB Endowment, Vol. 8, No. 12, (2015)<br/>
+      <a href="http://www.vldb.org/pvldb/vol8/p1804-ching.pdf">http://www.vldb.org/pvldb/vol8/p1804-ching.pdf</a>
+      </p>
                
-               <p>Malewicz, Grzegorz, et al. <i>Pregel: a system for large-scale graph processing.</i> Proceedings of the 2010 ACM SIGMOD International Conference on Management of data. ACM, (2010). <br/>
-               <a href="http://static.cs.brown.edu/courses/csci2270/papers/pregel.pdf">http://static.cs.brown.edu/courses/csci2270/papers/pregel.pdf</a>
-               </p>
-                               
-       <p>Valiant, Leslie G. <i>A bridging model for parallel computation.</i> Communications of the ACM 33.8 : 103-111. (1990).<br/>
-           <a href="http://web.mit.edu/6.976/www/handout/valiant2.pdf">http://web.mit.edu/6.976/www/handout/valiant2.pdf</a>
-               </p>
-               
-               
-               
-               
-               <p>Hong, Sungpack, et al. <i>Green-Marl: a DSL for easy and efficient graph analysis.</i> ACM SIGARCH Computer Architecture News. Vol. 40. No. 1. ACM, (2012). <br/>
-               <a href="http://www.cl.cam.ac.uk/~ey204/teaching/ACS/R202_2012_2013/papers/S7_Network_Structure/papers/hong_asplos_2012.pdf">http://www.cl.cam.ac.uk/~ey204/teaching/ACS/R202_2012_2013/papers/S7_Network_Structure/papers/hong_asplos_2012.pdf</a>
-           </p>
-           
-               <p>Salihoglu, Semih, and Jennifer Widom. <i>Optimizing Graph Algorithms on Pregel-like Systems.</i> (2014). <br/>
-               <a href="http://ilpubs.stanford.edu:8090/1077/3/p535-salihoglu.pdf">http://ilpubs.stanford.edu:8090/1077/3/p535-salihoglu.pdf</a>
-               </p>
-               
-               <p>Salihoglu, Semih, and Jennifer Widom. <i>HelP: High-level Primitives For Large-Scale Graph Processing.</i> <br/>
-               <a href="http://ilpubs.stanford.edu:8090/1085/2/primitives_tr_sig_alternate.pdf">http://ilpubs.stanford.edu:8090/1085/2/primitives_tr_sig_alternate.pdf</a>
-               </p>
-               
-     </section>
+      <p>Xin, R. S., Crankshaw, D., Dave, A., Gonzalez, J. E., Franklin, M. J., &amp; Stoica, I. <i>GraphX: Unifying Data-Parallel and Graph-Parallel Analytics</i>. 
+                 arXiv preprint arXiv:1402.2394. (2014)<br/>
+      <a href="http://arxiv.org/pdf/1402.2394">http://arxiv.org/pdf/1402.2394</a>
+      </p>
+     
+      <p>Khayyat, Zuhair, et al. <i>Mizan: a system for dynamic load balancing in large-scale graph processing.</i> 
+         Proceedings of the 8th ACM European Conference on Computer Systems. ACM, (2013). <br/>
+      <a href="http://www.cs.cornell.edu/~djwill/pubs/mizan.pdf">http://www.cs.cornell.edu/~djwill/pubs/mizan.pdf</a>
+      </p>
+      
+      <p>Salihoglu, Semih, &amp; Jennifer Widom. <i>Gps: A graph processing system.</i> 
+        Proceedings of the 25th International Conference on Scientific and Statistical Database Management. ACM, (2013).<br/>
+      <a href="http://ilpubs.stanford.edu:8090/1039/7/gps_ssdbm.pdf">http://ilpubs.stanford.edu:8090/1039/7/gps_ssdbm.pdf</a>
+      </p>             
+      
+      <p>Tian, Y., Balmin, A., Corsten, S. A., Tatikonda, S., &amp; McPherson, J. <i>From <b>Think Like a Vertex</b> to <b>Think Like a Graph</b></i>. 
+      Proceedings of the VLDB Endowment, 7(3). (2013)<br/>
+      <a href="http://researcher.ibm.com/researcher/files/us-ytian/giraph++.pdf">http://researcher.ibm.com/researcher/files/us-ytian/giraph++.pdf</a>
+      </p>
+   
+      <p>Schelter, S., Ewen, S., Tzoumas, K., &amp; Markl, V. <i>All roads lead to Rome: optimistic recovery for distributed iterative data processing</i>. 
+      In Proceedings of the 22nd ACM international conference on Conference on information &amp; knowledge management (pp. 1919-1928). ACM. (2013, October).<br/>
+      <a href="http://stratosphere.eu/assets/papers/optimistic.pdf">http://stratosphere.eu/assets/papers/optimistic.pdf</a>
+      </p>
+   
+      <p>Ewen, S., Tzoumas, K., Kaufmann, M., &amp; Markl, V. <i>Spinning fast iterative data flows</i>. Proceedings of the VLDB Endowment, 5(11), 1268-1279. (2012).<br/>
+      <a href="http://arxiv.org/pdf/1208.0088.pdf?origin=publication_detail">http://arxiv.org/pdf/1208.0088.pdf?origin=publication_detail</a>
+      </p>
+      
+      <p>Malewicz, Grzegorz, et al. <i>Pregel: a system for large-scale graph processing.</i> Proceedings of the 2010 ACM SIGMOD International Conference on Management of data. ACM, (2010). <br/>
+      <a href="http://static.cs.brown.edu/courses/csci2270/papers/pregel.pdf">http://static.cs.brown.edu/courses/csci2270/papers/pregel.pdf</a>
+      </p>
+          
+      <p>Valiant, Leslie G. <i>A bridging model for parallel computation.</i> Communications of the ACM 33.8 : 103-111. (1990).<br/>
+      <a href="http://web.mit.edu/6.976/www/handout/valiant2.pdf">http://web.mit.edu/6.976/www/handout/valiant2.pdf</a>
+      </p>
+      
+      <p>Hong, Sungpack, et al. <i>Green-Marl: a DSL for easy and efficient graph analysis.</i> ACM SIGARCH Computer Architecture News. Vol. 40. No. 1. ACM, (2012). <br/>
+      <a href="http://www.cl.cam.ac.uk/~ey204/teaching/ACS/R202_2012_2013/papers/S7_Network_Structure/papers/hong_asplos_2012.pdf">http://www.cl.cam.ac.uk/~ey204/teaching/ACS/R202_2012_2013/papers/S7_Network_Structure/papers/hong_asplos_2012.pdf</a>
+      </p>
+        
+      <p>Salihoglu, Semih, and Jennifer Widom. <i>Optimizing Graph Algorithms on Pregel-like Systems.</i> (2014). <br/>
+      <a href="http://ilpubs.stanford.edu:8090/1077/3/p535-salihoglu.pdf">http://ilpubs.stanford.edu:8090/1077/3/p535-salihoglu.pdf</a>
+      </p>
+      
+      <p>Salihoglu, Semih, and Jennifer Widom. <i>HelP: High-level Primitives For Large-Scale Graph Processing.</i> <br/>
+      <a href="http://ilpubs.stanford.edu:8090/1085/2/primitives_tr_sig_alternate.pdf">http://ilpubs.stanford.edu:8090/1085/2/primitives_tr_sig_alternate.pdf</a>
+      </p>
+    </section>
 
   </body>
 </document>
index e8cf3cb..f965d95 100644 (file)
@@ -33,6 +33,7 @@ under the License.
 <p>
 Here are our stable releases of Giraph.</p>
 <ul>
+  <li><strong>1.2.0</strong> - Download <a href="http://www.apache.org/dyn/closer.cgi/giraph/giraph-1.2.0">here</a>.</li>
   <li><strong>1.1.0</strong> - Download <a href="http://www.apache.org/dyn/closer.cgi/giraph/giraph-1.1.0">here</a>.</li>
   <li><strong>1.0.0</strong> - Download <a href="http://www.apache.org/dyn/closer.cgi/giraph/giraph-1.0.0">here</a>.</li>
 </ul>