FMEM: A Fine-grained Memory Estimator for MapReduce Jobs