论文部分内容阅读
随着移动互联网和社交媒体的不断发展,政府和企业对海量数据的存储和管理需求也急速增长。由于单节点数据管理系统存在严重的单点失效问题,同时也缺乏对海量数据的管理能力,为此分布式集群数据管理系统已成为未来发展的趋势,将极大地增加系统的处理能力和可用性。近年来,分布式集群数据管理系统越来越受到人们的关注,并已广泛地应用于民航、金融、工业控制等任务关键型领域(mission-critical)。就整个系统总体而言,分布式系统比传统集中式系统更可靠,但是分布式系统存在着部分失效问题、时钟不一致问题、消息传递失效等问题,最终将导致数据管理的失败,并造成重大经济损失。容错技术是解决上述分布式系统问题的重要手段,可以有效提高系统的可靠性。基于内存计算的无共享并行数据库系统已然成为快速分析关系型数据的利器,CLAIMS系统为此类系统之一,旨在充分利用内存计算的迅捷性来提升数据处理的性能。内存数据的存取速度是磁盘数据存取速度的200倍左右,内存计算是实时数据分析的基础,但是内存的易失性也对内存集群计算系统的容错性提出了更高的要求。因此,如何提高分布式集群下高速计算系统的容错性,保证系统运行的可靠性和可用性已成为首当其冲需要解决的问题。目前主流系统中的容错手段还比较单一,并不能满足规模日益增长的集群系统的需求。CLAIMS系统同样面临着这样的问题,设计出一套完整的高可用容错机制迫在眉睫。目前实际应用中主要的容错手段包括组件备份,检查点设置,作业迁移等,在一定程度上解决了分布式系统容错的问题,但无法满足内存集群计算系统的需求。针对复杂任务长时间连续作业的情形,我们提出了更加先进的混合容错机制,并且针对每一种容错手段进行优化、改进、组合,并提出新的算法理念。本文立足于CLAIMS分布式内存数据库系统,设计了CLAIMS系统中的容错系统,采用混合容错方式,将k-safe多投影存储、自适应动态心跳检测机制、执行计划切分选择性持久化和动态检查点设置进行了实现和优化。设计了CLAIMS系统中针对QoS服务级别的编程框架。充分的实验证明在OLAP系统中处理任务中具有较好的容错性。解决了传统方法中检查点设置单一,恢复效率低下的问题,本文主要的工作以及贡献包括:1.基于HDFS分布式文件系统,设计了CLAIMS的底层文件存储系统。数据不再是单一的多文件备份,而是采用k-safe的文件存储方式,将系统查询中的数据表以列存储方式投影多份,并保证原数据表中的每一列至少有k份。每一份列存储投影均被哈希水平切分成多个数据块,每一个数据块大小为64MB。该k-safe数据处理方式,一方面能加速查询时数据的加载数据速度,另一方面在系统出现故障之后可以保证数据的可恢复性,从而大大提高了系统失效时数据恢复效率,为系统容错提供数据保障。2.在容错系统设计中加入了自适应式的心跳检测机制,改进了以往单一的固定频率心跳消息传递机制,从而大大降低了平均发现故障的时间延迟。具体操作上依据实时系统资源状态动态调整集群中各个节点之间消息传递的频率,结合主机的负载变化制定节点直接心跳消息传递的策略。在考虑到集群达到一定规模情况下心跳消息会增加负载的情况下,本文还采用了多播的消息传递方式降低心跳检测造成的数据延迟问题。3.将QoS服务功能应用到CLAIMS系统中来,针对不同的数据查询操作划分不同的执行功能,按照各自功能的标准定义每个阶段的处理方法,将QoS服务质量作为指标加入到容错模块中来,使得故障的部分指标得以量化;同时在代码实现层面采用OpenMPI编程函数库,针对容错特性进行了改进,在消息传递和数据交互的时候采用这种编程模型,提高容错性能。4.提出了动态设置检查点的方法,为每一个查询的执行计划计算出对应设置检查点的消耗模型,基于动态规划的思想从全局最优化出发,通过迭代为每一阶段的操作计算设置检查点的代价,比较当前节点设置检查点所带来的磁盘I/O开销和从底层叶子节点回溯重新执行任务至当前节点的开销,最终为整个执行计划树确定设置检查点的方案,使得整个查询在出错的情况下重新恢复执行的时间最小。上述功能的设计与实现,形成了CLAIMS系统中的容错模块,本文详细叙述了上述功能以及之间的关联关系。通过实验比较,证明了该方法在内存集群计算环境下,与传统单一的容错方案相比,在可靠性和可用性方面具有显著的提升。