Improving Distributed Graph Processing By Load Balancing And Redundancy Reduction