Energy efficiency of cloud computing attracts a great deal of attention recently more than ever. In this paper, based on the characteristics of virtual cloud environment and MapReduce workload, an energy-efficient VM placement is presented. The method involves two algorithms: Tight Recipe Packing (TRP) and Virtual Cluster Scaling (VCS). TRP aims at minimizing an energy consumption and making trade-off between VM duration and resource utilization, so that data center can place the VMs in request to the least amount of physical servers. VCS further enhances capacity utilization of active physical servers while reducing the energy consumption, which can work together as a complement with other existing placement algorithms. In addition, an estimation method is proposed to predict the completion time of a running MapReduce job. The experimental results both in simulation and Hadoop test bed show that our approach achieves greater energy savings over existing algorithms.