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
Format of a query: source_vertexID target_vertexID
BiBFS (Undirected)
[Download]
BiBFS (Directed)
[Download]
XML Keyword Search
Format of a query: a list of keywords separated by space
Vertex Level Computation
[Download]
SLCA (Level-Aligned)
[Download]
ELCA (Level-Aligned)
[Download]
MaxMatch (Level-Aligned)
[Download]
Terrain Shortest Path Distance
Format of a query: source_vertexID target_vertexID
Terrain Shortest Path Distance
[Download]
Point-to-Point Reachability
Format of a query: source_vertexID target_vertexID
Level Computation
[Download]
No-Label (Basic)
[Download]
No-Label (Level-Aligned)
[Download]
Yes-Label (Basic)
[Download]
Yes-Label (Level-Aligned)
[Download]
RDF Keyword Search
Format of a query: a list of keywords separated by space
Graph Keyword Search (N-Quads)
[Download]
Graph Keyword Search (N-Triples)
[Download]