Distributed Computing with MapReduce and Spark