摘要

MapReduce是大数据计算领域广泛使用的编程模型,默认的Hash分区方法易导致数据倾斜,使各计算节点负载不均衡,影响了整体计算性能并造成了大量集群资源浪费。针对这一问题,提出一种结合节点计算能力的分区方法。通过运行一个独立的抽样作业,利用Reservoir抽样算法抽取待处理数据并统计样本里关键字的位置和频次;根据关键字的统计数据制定分区策略,使各分区负载与节点计算能力达到平衡,同时优化网络开销;以全量数据为输入运行计算作业,并采用已制定的分区策略对中间数据进行分区,得出计算作业的运行结果。实验结果表明,方法使各节点负载更加均衡,可明显提升计算作业执行效率。