论文部分内容阅读
近年来,云计算、物联网、移动互联网等新兴技术的发展与应用,使人类快速进入大数据时代。随着大数据的到来,分布式数据处理技术不断被提出,业界涌现了各式各样的分布式大数据处理框架,从最初的Hadoop及其生态系统,到基于内存计算的Spark、Storm等。目前,虽然关于大数据离线批处理分析的研究与应用已经相当成熟,但越来越多的领域提出了对快速、海量的流数据进行实时分析和快速响应的要求。其中,在流数据查询优化、网络流量监控、网络安全、数据压缩等领域,基数计算具有重要的应用价值,已有的基于概率统计原理的基数估计算法层出不穷,但这些算法需要通过扫描历史静态数据才能进行基数统计。而流数据具有持续、快速、实时等特点,不可能先进行持久化再处理分析,因而传统的基数估计算法并不能应用在大数据流处理中。因此,本文针对以上问题,调研目前流行的Storm和Spark Streaming实时分布式流处理平台和现有的基数估计算法,针对实时的流数据去重处理,设计和实现了基于流数据实时分析平台的基数估计改进算法,主要研究工作如下:首先,论文对目前典型的批处理技术Hadoop、内存计算Spark以及流计算Storm的平台架构、数据计算模型以及框架的安全性进行研究分析,并总结三种大数据处理技术的异同点,以及分析讨论了流数据处理中的关键技术和流平台基数估计的重要性。其次,在大数据平台和传统基数估计算法研究的基础上,结合传统基数估计算法无法适用大数据流式计算的问题,提出了一种基于流平台的Hyper LogLog算法应用模型,该模型从Kafka消息系统中消费流数据,在Storm和Spark Streaming处理引擎中进行基数计算。然而,流数据具有无界、快速、量大等特点,传统的基数估计算法根本无法处理,因此引入窗口数据采样技术,对传统的HyperLogLog算法进行并行化设计。最后,通过实验分析比较了Storm和Spark Streaming两种流平台上实现的HyperLogLog并行化算法的精度、延迟和吞吐量。结果发现流平台实现的HyperLogLog并行化算法在保证精度的前提下,性能大大提高,其中,Storm平台上实现的HyperLogLog并行化算法数据处理时延要低于Spark Streaming,但吞吐量方面小于Spark Streaming。