论文部分内容阅读
随着Web2.0时代的开启,互联网中的数据以井喷的方式增长。大数据已经成为当前互联网产业中重要的组成部分。构建自有大数据分析系统已经成为各互联网公司的首要任务。在大数据相关领域中,已经出现许多经过实际检验的优秀产品,通过这些产品的组合,就可以形成多种大数据分析系统。但是在现有的大数据分析系统中,任务调度算法和数据分布算法考虑不足,且并行处理层和数据存储层缺少协作,无法保障任务本地性,使系统负载不均衡,最终使系统中资源利用率不高。因此,设计一种调度算法合理利用大数据分析系统中的资源是大数据分析领域一个重要课题。针对上述问题,本文通过对大数据分析系统的建模,提出了一种在大数据分析系统中运行的逻辑数据块亲和性调度算法。该算法利用从并行处理层和数据存储层获取的实时信息,采用干涉任务调度和调整逻辑数据块分布的方式,在满足任务本地性的基础上,减少系统中过载的工作节点,平衡系统中的负载,达到提高系统资源利用率的目的。本文具体包括以下工作内容:(1)分析热点问题评估因子,制定热点判定规则。当大数据分析系统中出现热点问题时,工作节点的某些硬件检测指标会发生明显变化,从这些指标中确认热点问题的评估因子,然后根据评估因子特性,最终决定热点判定规则。(2)实时监控系统状态,为算法决策提供数据支持。实时监控并行处理层的任务划分情况和数据存储层中逻辑数据块的分布情况,周期性采集工作节点与负载状态相关的信息,并及时根据任务执行状态和逻辑数据块移动消息更新缓存信息。(3)设计并实现JLQ算法。通过系统建模和分析任务本地性,提出位于并行处理层的JLQ算法。JLQ算法通过干涉任务调度,将任务分配到数据所在节点,再依据空任务队列解决方案对任务进行实际派发,使任务初步满足本地性。(4)设计并实现LAS算法。LAS算法在大数据分析系统中数据独立模块,在已有的数据分布算法基础上,根据任务分配信息和逻辑数据块分布信息,利用热点判定规则,对现有的逻辑数据块作出适应调整,在尽力满足任务本地性的基础上,平衡节点负载,提升系统利用率。本文以TPCx-BB和实际生产集群中的数据作为数据集,选择Spark默认调度算法和另外两种调度算法作为对比算法进行实验。实验结果证明本文提出的逻辑数据块亲和性调度算法在两种数据集中相比于Spark默认算法分别有20.48%和23.97%的性能提升。最终对本文提出的调度算法进行适用性分析,讨论算法使用场景。