Scaling gradient descent with Hadoop