System Code

The above system code includes the code for three systems: Pregel+, Blogel, and Quegel. All files are header files, one may include them into the application code and compile using GCC. The current system code runs in Linux.

The base classes of Quegel is defined in folder ol which relies on folders utils, basic and tools, and the relevant API can be found from here.

If you use Hadoop 2.x, please edit "utils/ydhdfs.h" and uncomment the line "#define YARN" to use "ydhdfs2.h" instead of "ydhdfs1.h".

Also, please make sure that the hostname and port are correct in the function "getHdfsFS()" of "ydhdfs1.h" or "ydhdfs2.h".

Client-Side Code

In Quegel, the client-side program is just responsible for sending query strings to the Quegel server, and the code is fixed. User only needs to write the server-side code to specify how they want to process each query string.

A client-side code should be compiled using the system code, and the compiled executable program can be used as a client program that takes user queries. See here for the detailed usage of a client program.

In the above package, "console_version/run.cpp" is the client code for users to type their queries in the console, while "batchFile_version/run.cpp" is the client code for users to type the name of a file that contains a batch of queries.

Toy Graphs

[1] Web-Stanford [Download]: a small web graph where each line represents a vertex.

Line format:    vertex_ID    \t    num_out-neighbors    neighbor1_ID    neighbor2_ID    •••

One may run BFS on this graph. To run Quegel algorithm with the toy graph, one may put the data to HDFS at path "/toy_out" as follows:

hadoop fs -mkdir /toy_out

hadoop fs -put {your local path of web_stanford.adj} /toy_out

Some algorithms like Bidirectional BFS (BiBFS) and Hub2-Labeling also require an adjacency list of in-neighbors.

Line format:  vertex_ID  \t  num_in-neighbors  in_1  in_2  •••  num_out-neighbors  out_1  out_2  •••

To convert the toy graph under "/toy_out" to this format, and put under path "/toy_inout", one may run this two-superstep Pregel+ job (i.e., a normal Pregel job).

[2] LiveJournal [Download]: a small undirected social network. Please decompress it to get "live.adj" first.

Line format:    vertex_ID    \t    num_neighbors    neighbor1_ID    neighbor2_ID    •••

One may run BFS, BiBFS and Hub2-Labeling on it directly. In our examples of running application code, we assume it is put to HDFS path "/toy_ug".

Application Code

Point-to-Point Shortest Path Distance

XML Keyword Search

Terrain Shortest Path Distance

Point-to-Point Reachability

RDF Keyword Search