This document describes a MapReduce algorithm for determining the optimal k value in k-means clustering. It presents the G-means algorithm, which uses recursive k-means clustering and normality testing to split clusters until all points are normally distributed around cluster centers. The document outlines challenges in implementing G-means in MapReduce, and describes solutions to reduce I/O, jobs, maximize parallelism and limit memory usage. It compares the proposed MapReduce G-means approach to existing multi-k-means methods, finding it has better quality and comparable speed on synthetic datasets.