In recent years, a new computing paradigm, cloud computing, has received a significant attention. The large scale data processing is easily obtained by utilizing the underlying programming model named MapReduce. According to the previous researches, one of the key challenges to the MapReduce performance is determining the appropriate number of mappers and reducers allocated to cluster nodes in a cloud. Although many research results have been proposed to improve the MapReduce performance, most of them assume that cluster nodes are homogeneous. However, in our study, the default uniform task allocation approach utilized in a homogeneous cloud is not suitable for a heterogeneous cloud. As shown in experiment results, the job execution time in a homogeneous cloud with 3 cluster nodes is longer than the job execution time in a heterogeneous cloud with 4 cluster nodes if the uniform task allocation approach is adopted. Thus, an adaptive task allocation approach for a heterogeneous cloud is proposed in this paper.