Buttercola: System Design: Introduction to Giraph



Buttercola: System Design: Introduction to Giraph

1. What is Giraph?
Apache Giraph is an iterative graph processing system built for high scalability. For example, it is currently used at Facebook to analyze the social graph formed by users and their connections. Giraph originated as the open-source counterpart to Pregel, the graph processing architecture developed at Google and described in a 2010 paper. Both systems are inspired by the Bulk Synchronous Parallel model of distributed computation introduced by Leslie Valiant. Giraph adds several features beyond the basic Pregel model, including master computation, sharded aggregators, edge-oriented input, out-of-core computation, and more. With a steady development cycle and a growing community of users worldwide, Giraph is a natural choice for unleashing the potential of structured datasets at a massive scale. 

2. Existing Solutions:
  1. MapReduce in Hadoop
    1. Classic map reduce overhead (job startup / shutdown, reloading data from HDFS, shuffling)
    2. Immediate results are stored in to disks. Too much disk accesses. 
    3. MapReduce programming model not a good fit for graph algorithms. 
  2. Google's Pregel:
    1. Requires its own computing infrastructure
    2. Not open sourced
  3. MPI
    1. not fault-tolerant 
    2. Too generic
3. MPI v.s Giraph

  • Giraph vertex centric API is higher level (and narrower) than MPI
    • Vertex message queue v.s process level messaging  
    • Data distribution, check-pointing handled by Giraph 
    • Giraph aggreators are user level MPI_Allreduce reductions.
    • Scheduled via Hadoop clusters.


3. Bulk Synchronous Parallel Moel (BSP):
  • Computation consists of a series of super steps
    • Superstep is an atomic unit of computation where operations can happen in parallel
    • During a superstep, components are assigned tasks and receive unordered messages from previous superstep. 

  • Components communicate through point-to-point messaging.
  • All (or a subset of) components can be synchronized through the superstep concept 

Read full article from Buttercola: System Design: Introduction to Giraph


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts