1. A data processing system for finding connected components in a graph comprising: an input device that receives a list of edges in the graph; and a distributed processing arrangement coupled to the input device, the distributed processing arrangement including a plurality of processors operatively coupled to at least one memory that execute, in a distributed fashion, an iterative map and reduce process that generates adjacency for nodes in the graph; wherein the distributed processing arrangement is configured to map connected components in the graph without storing the entire connected components in the at least one memory, wherein the distributed processing arrangement uses the smallest node identifier in each connected component as the identifier of that component and the output comprises a mapping table from each node in the graph to the smallest node ID in the corresponding connected component.