论文部分内容阅读
大规模流式计算作为大数据计算的重要组成部分已被广泛应用于实时统计、实时推荐、实时监控、个性化服务等场景中。大数据流式计算与传统大数据批处理在数据处理的要求、方法等方面有着明显差异,因而越来越多的学者开始专注于大数据流式计算的研究。Apache Storm是当前最知名且最具代表性的流式计算引擎之一。本文基于Storm流式计算引擎,按照工业界广为接受的系统工程方法,将典型大数据流式计算分解为数据采集、数据计算和数据存储三个连续阶段,这三个阶段也构成了大数据流处理链。针对大数据流式计算在当前实际生产中存在的如下问题进行研究,首先,数据采集有如下问题和难点:(1)传统数据采集方式中采集系统与数据源具有极高的耦合性且存在访问不可控问题;(2)每个数据源维护独立的采集管道,数据采集接口众多且格式混乱,采集接口难以扩展且不易维护;(3)分布式环境下难以集成多源异构数据源。其次,基于Storm的数据计算有如下问题:(1)流式计算要求系统能够应对数据流速的突发性变化,而Storm缺乏对这种不确定数据流的动态匹配的能力;(2)当系统过载时,Storm出现数据计算延迟显著增加,系统不稳定的情况;(3)Storm对于拓扑资源的重新分配必须先暂停系统,这可能会导致更长的数据计算延迟和数据丢失,此外,资源的分配还受限于拓扑运行前的设定。最后,数据存储有如下难点:(1)即使采用了连接池技术来适应高并发的Strom实时流数据转储(例如HBase提供的连接池HtablePool等),其写入性能仍然无法满足需求;(2)持久层写入的IO阻塞或错误可能会导致系统性能的剧烈变化。针对以上问题,本文以实验室承担的某省面向电梯产业联盟的云制造服务平台重大科技专项项目为背景,以搭建云制造平台实时监控系统为目标,以优化大数据流式计算为核心,从大数据流式计算的特征切入,围绕大数据流处理链的数据采集、数据计算和数据存储三个阶段对基于Storm的大数据流式计算关键技术进行研究,解决了上述难点及问题,并应用研究内容实现了云制造平台实时监控系统,为云制造平台提供实时监控服务。与同类型的工作相比,本文主要具有以下贡献:(1)对于数据采集,本文提出了流式数据分层采集策略,实现了分布式环境多源异构数据源的集成和采集进程的容错,统一了数据采集接口,解决了数据采集系统与数据源的高耦合问题和访问不可控问题,并在该策略基础上对数据采集工具Flume的负载均衡方法进行优化,提出了一种基于分组的双层哈希负载均衡方法,该方法能够降低分布式节点的数据迁移率并使系统整体的负载尽可能公平。实验结果表明,该负载均衡方法能够提高32%吞吐量,数据迁移率降到2%。(2)对于数据计算,本文针对Storm流式计算引擎在系统过载时表现出的数据计算延迟显著增加、系统不稳定以及缺乏大数据流量动态匹配能力等问题,设计并实现了三种优化方法,分别是动态逐级反压策略、无感知拓扑替换机制和并行数据回流方法。实验结果表明,优化后的引擎与Storm默认实现的引擎相比:(i)能有效提高系统吞吐量,最优情况下提高10%~25%,最差情况下与Storm默认实现接近相等;(ii)能有效改善数据计算延迟,最优情况下提高25%的处理时间,并能够抑制系统负载振荡;(iii)用户无感知地进行资源动态调整,系统无需暂停且资源的分配不受限于拓扑运行前的设定。(3)对于数据存储,本文提出了面向Storm转储的延迟持久化存储优化方法,包括延迟持久化存储机制和分批提交优化方法。实验结果表明,延迟持久化存储机制可以将针对磁盘的IO读写延迟到数据处理之外,提高持久层的写入性能并屏蔽数据存储性能对流式计算引擎的影响;针对写线程池的分批提交优化方法,将操作数的写入量提高了36%。(4)在上述工作的基础上,应用本文的研究内容设计并实现了云制造平台实时监控系统,为云制造平台提供实时监控服务,对研究内容的实用性和有效性进行了验证。