How khayyatzy/mizan works
Mizan is a distributed graph-processing system: users select a graph algorithm and run it over partitioned graph input, with vertices processed in supersteps and messages exchanged between workers. The tree also contains a separate Hadoop graph-preparation and partitioning suite. The README provides no capability details, and several runtime files were not sampled, so links into those unsampled internals are kept conservative.
Main entry points: computeManager.h Superstep manager · dataManager.h Graph data manager · main.cpp Program entry · Mizan.cpp Mizan runtime
Components 22
Graph runtime
- Program entry
src/main.cpp - Argument parser
src/tools/argParser.h - Mizan runtime
src/Mizan.cpp - Superstep manager
src/computation/computeManager.h - Graph algorithms
src/algorithms - Aggregators
src/IAggregator.h
Graph data
- Graph data manager
src/dataManager/dataManager.h - Graph readers
src/dataManager/graphReaders - Vertex and edges
src/dataManager/dataStructures/graph/mObject.h - Graph writers
src/dataManager/graphWriters
Worker communication
- Message manager
src/computation/messageManager.h - User communication
src/communication/userComm.h - Communication manager
src/communication/commManager.h - MPI transport
src/communication/pt2ptb.h
Hadoop preparation
- METIS graph preparation
preMizan/src/prePartition/preMetisCountAppend_hadoop.java - Hadoop partitioning
preMizan/src/partitioning/semiBlockPartitioning_hadoop.java
Partition management
- Dynamic partitioning
src/dynamicPartitioner.cpp - Post-partition processing
preMizan/src/postPartition - Partition quality
preMizan/src/statistics/partitionQuality_hadoop.java
Other components
- User
- Graph files
- Graph results
Connections 23
- User → Argument parser: supplies options
- Program entry → Argument parser: parses arguments
- Program entry → Mizan runtime: starts selected run
- Program entry → Graph algorithms: selects algorithm
- Argument parser → Program entry: returns settings
- Mizan runtime → Superstep manager: runs computation
- Superstep manager → Graph data manager: accesses graph
- Superstep manager → Graph algorithms: invokes user code
- Superstep manager → Message manager: manages messages
- Superstep manager → Aggregators: aggregates values
- Graph data manager → Graph readers: loads graph
- Graph readers → Graph files: reads
- Graph data manager → Vertex and edges: stores vertices
- Graph data manager → Graph writers: writes graph
- Graph writers → Graph results: writes results
- Message manager → User communication: dispatches messages
- User communication → Communication manager: routes messages
- Communication manager → MPI transport: sends worker traffic
- METIS graph preparation → Graph files: transforms graph input
- Hadoop partitioning → Graph files: partitions graph input
- Mizan runtime → Dynamic partitioning: supports migration
- Post-partition processing → Hadoop partitioning: processes partitions
- Partition quality → Hadoop partitioning: assesses partitions