<vertex, message> map seems consume a lot of memory. We should figure out an efficient way to reduce memory.
Add a spilling message queue
Implement sorting in spilling queue.
Save space for Null valued edges
Keep new object creation to the minimum by reusing the Writable object