论文部分内容阅读
近年来互联网上数据的急速增长,其中很大部分是流数据,具有无序性、突发性、易失性、无限性等特点。流数据有较强的时效性,其实际价值随着时间的流失而减少。为了应对流数据的处理,数据流处理技术成为了研究热点,学术界和产业界提出了很多具有代表性的数据流计算平台,比如Storm、Spark Streaming、S4、Mill Wheel、Flink、Heron等等。由于数据的易失性,流数据处理平台的容错机制就变得至关重要。这些平台由于面向不同的应用场景,其需求不同,因此所需要的语义保证以及对应的容错机制皆有不同。 本文首先分析了业界流行的各数据流处理平台的容错语义和实现机制,比较其异同,分析归纳其关键点。然后,针对自主研发的流数据处理引擎Mars,提出一套高可靠的容错机制,实现了at-most-once、at-least-once和exactly-once三重语义的完整容错。文章主要工作如下: (1)针对Mars现有容错机制的隐患和不足提出了一套基于内存的N备份容错算法,该方法利用Mars系统的数据组织特点,在N个独立节点的内存进行高效的容错,解决了Mars系统原容错机制额外开销大、可靠性差、时效性差的问题。 (2)提出了针对Mars系统的三重语义容错结构,面对不同数据处理场景、不同资源状况使用不同的容错语义,实现了系统在不同条件下的可靠性需求。 (3)提出了多搜索任务分配算法,该算法是面向Mars系统、基于一致性哈希的容错节点分配算法,能够在(1)、(2)的基础上对系统容错结构进行进一步优化,增强了处理引擎的可靠性和可扩展性。 实验结果和实际应用表明,以上策略增强了Mars系统的容错性能,且使得容错模块对Mars数据流处理系统的性能影响在可接受范围内。