libcrunch
Libcrunch is a lightweight mapping framework that maps data objects to a number of nodes, subject to user-specified constraints.
The libcrunch implementation was heavily inspired by the paper on the CRUSH algorithm.

