In hybrid HPC applications, load imbalances that can be caused by either hardware or software, may have a significant performance impact. Software-induced load imbalances can be caused by the operating system or by applications with changing load distributions such as Adaptive Mesh Refinement algorithms. Unpredictable latencies in complex memory hierarchies or clock frequency boosts are causes for hardware-induced load imbalances. Using a task-based programming paradigm is an approach to dynamically achieve dynamic load balancing. There are established task-based frameworks for shared memory environments, but frameworks for distributed memory environments face the additional challenge of balancing the load across process boundaries. The goal of this thesis is to analyze and compare different scheduling and load balancing mechanisms used in task-based frameworks. Three frameworks were considered: Charm++, StarPU and Chameleon. Charm++ is a message-driven framework that uses migratable objects. StarPU provides taskbased programming capabilities with an a-priori cross-rank load balancing mechanism. Chameleon is a framework designed for fine-granular, reactive load balancing using task migration. Using two benchmarks, empirical experiments were performed to test the frameworks scalability, their reaction to hardware- and software-induced load imbalances and the effects of task-granularity on the performance. It was found that Chameleon offers the most fine-granular load balancing capability, but also introduces overhead with a dedicated communication thread. Chameleon was superior to the other frameworks in experiments with hardware-induced load imbalances and achieved a speedup of up to 1.15 compared to the baseline implementation. Charm++ was found to be the most versatile framework with a range of load balancing strategies. It performed best in experiments with software-induced load imbalances in an iterative application where it achieved a speedup of up to 1.36 compared to the baseline implementation. StarPU was unable to provide the desired load balancing properties.