论文部分内容阅读
近几年来,随着互联网技术和移动互联网设备的发展,网络中产生的数据日益加大。业内知名公司如腾讯、百度和阿里每天都会产生TB级数据,面对如此大规模数据,过去采用基于Hadoop的离线处理架构,能让用户对数据的认知速度达到小时级别。然而随着公司业务的发展,对实时数据的分析需求不断增大,大数据实时流处理技术的出现很好的解决了实时数据处理的问题,让用户能达到秒级的分析实时数据,但目前主流的实时处理系统却不能很好的处理网络流量波动的情况,当网络流量突然爆发,系统很容易陷入不稳定状态,导致处理延迟增加,然而很多生产场景对数据可靠性要求比较强,如交易数据,需要数据可靠的传输。针对以上问题,本文主要提出基于Spark Streaming的可靠稳定流数据传输模块,主要对模块的可靠性和稳定性两个方面进行设计:1、在可靠性方面,以Flume为输入数据源,通过对Spark Streaming源码中的Sink端和接收数据的Receiver端进行改造,增加了数据校验功能,对接收到的batch数据先进行条数检验,再进行校验码校验,达到对数据完整性的验证的目标。2、在稳定性方面,首先对该实时流处理模块在map、reduce和join负载情况下进行分析,找到数据处理时间(processing time)和数据分片时间(batch interval)的关系,发现map和reduce的工作负载曲线是线性关系,而join的工作负载曲线是非线性关系。根据这个特性,提出了基于斜率的动态自适应batch interval调整算法,让实时流处理模块在面对不同工作负载和数据流量的情况下自适应调整batch interval,从而达到保持流处理模块稳定的目标。通过对模块的设计和实现,提高了流处理模块在不同场景和数据流突发情况下的稳定性和可靠性,降低数据处理延迟。此外该设计方法相对于传统停掉服务从而手动调整batch interval的方法有较大实际价值,显著提高了流处理系统自动化运维能力。