of points and linearly with the number of clusters. This allows for clustering with tens of thousands of centroids and millions of points using commodity hardware 7 1.1 Introduction Consider a dataset with R records, each having M attributes. Given a constant k, the clustering problem is to partition the data into k subsets such that each subset behaves "well" under some measure. For example, we