Cloud computing (CC) has become the best way to manage a large-scale computing paradigm. Resource management (RM) in the cloud environment is critical due to the heterogeneity of computing resource types and their inter-dependencies. Recently, significant research has been done on RM techniques focusing on efficiently sharing resources among multiple users. Machine learning techniques manage various resource management functions, such as VM consolidation, resource optimization, energy optimization, workload estimation, and task scheduling. This article contributes a comprehensive and concise review of RM approaches within cloud environments. Moreover, it suggests design goals and research challenges that must be considered while developing novel RM strategies.