大数据下实时流计算在石油企业中运用

大数据下实时流计算在石油企业中运用

摘要:随着数字化油田和企业信息化的发展,海量数据激增,现有的大数据处理方式不能满足日益增长的生产、分析需求,面对无穷无尽的数据洪流,需要一种手段来抓住并思考那些一闪而逝的瞬间。

关键词:大数据;石油行业;实时流计算

随着油田信息化的发展,数字油田迅速建立,大数据、实时数据、流式计算等概念广受关注。本文对目前各类实时流计算架构进行对比,找出适用于油田数字化建设的架构,并分析其应用前景,为油田数字化建设提供思路。

1研究现状

目前石油企业每天都产生海量生产数据、工作数据,不同用户对数据的需求也显著不同。现阶段针对不同需求进行数据推荐,可能要十几分钟、一小时,甚至更久,这远远不能满足需要更快完成对数据的处理,而不是进行离线的批处理。而实时流计算技术能够抓住数据流的瞬间,分析并挖掘出数据的实时价值。

1.1实时流式计算的概念

实时流式计算,就是RealTimeStreamingAnalyse,也称之为实时计算,或者是流式计算,可以理解为只要数据一直在产生,计算就持续地进行。实时流式计算被广泛应用于各个领域,并在大数据领域有了长足发展。实时流式计算作为一种新型计算方式,具有以下三个特点:(1)无限数据。是指持续增长并且基本上无限的数据集。这些通常被称为“流数据”,而与之相对的是有限的数据集。(2)无界数据处理。是一种持续的数据处理模式,能够通过处理引擎重复处理上面的无限数据,是能够突破有限数据处理引擎瓶颈的。(3)低延迟。并没有明确地定义延迟是多少,但我们都知道数据的价值将随着时间的流逝降低,时效性将是需要持续解决的问题。

1.2实时流式计算的现状与发展

目前在大数据应用的各种热门领域,比如推荐系统在实践之初,受技术所限推荐时间较长,远远不能满足需要。在进行数据建模时,得到的会是一条条的数据,并随着时间流逝不断增长,需要进行实时的数据分析,解决大数据量、灾备、时序、时间窗口、性能等问题[1]。不同于批量计算,需等待数据计算结果完成后,批量将数据传输到在线系统;流式计算作业在每次小批量数据计算后可以立刻将数据写入在线/批量系统,无需等待整体数据的计算结果,进一步做到实时计算结果的实时化展现。流计算是一种持续、低时延、事件触发的计算作业。用户使用流计算的顺序是:提交流计算作业,等待流式数据触发流计算作业,计算结果持续不断对外写出[2]。指标批量计算流式计算数据集成方式预先加载数据,实时加载数据,并且实时计算使用方式,业务逻辑可以修改,数据也可重新计算。但是业务逻辑一旦修改,之前的数据不可重新计算(流数据易逝性)。在大部分大数据处理场景下,受限于当前流计算的整个计算模型较为简单。流计算是批量计算的有效增强,特别在于对事件流处理时效性上,流计算对于大数据计算是一个不可或缺的增值服务。流式计算正是蓬勃发展的时期。为了反映现实世界事件驱动的特性,为了对接消息队列事件驱动的设计,还为了获得更好的时延,越来越多的业务采用流式计算系统来处理它们的数据。在批流统一的理论指导下,可想而知,未来的计算是属于流式计算的天下。

2技术选择

2.1流式计算框架的技术选型

随着这些年大数据的飞速发展,出现了不少流计算的框架、引擎。实时数据流计算主要是Storm和Spark以及ApacheFlink。三大类数据的实时处理逻辑在全链路上保证了流式计算的低时延。在过去几年,业界的主流计算引擎大多采用SparkStreaming,随着近两年Flink的快速发展,Flink的使用也越来越广泛。SparkStreaming是Spark最早推出的流处理组件,它基于流式批处理引擎,基本原理是将输入数据按一定时间间隔进行微批次批处理,随着处理时间缩短至秒级,便可以用于实时数据流。它是以批处理引擎为基础产生的,所以它的处理存在延时较大的问题,一般为秒级延迟[3]。Storm提供了AtLeastOnce消息保障机制。主要分为以下三种:第一个就是一次性最大值(AtMostOnce),但不能保证消息不丢失。第二个就是至少会收到一次(重复)信息(AtLeastOnce)。第三个是只有一次(AtExactlyOnce),精准传输。如果你采用了Storm的LowLevel实现,根据业务场景,可能需要去处理重复消息。Storm要先设计一个针对实时计算的拓扑。拓扑将被提交到集群中,由主控节点分发代码并将任务分配给工作节点执行。一种拓扑结构包括两种角色:分别是Spout角色和Bolt角色,前者在其中发送信息并负责以元组形式发送数据流。后者负责数据流的转换,完成计算、过滤等。由Spout发出的Tuple是一个不可变数组,有固定的键值对相互对应。2014年12月,ApacheFlink作为Apache的顶级项目诞生,历经数年发展,在这两年逐渐出现在大众面前。ApacheFlink作为一个框架和分布式处理引擎,具有毫秒级的流处理引擎,可以对有界数据流和无界进行状态计算。ApacheFlink是新的Stream计算引擎,用Java实现,既可以处理StreamData也可以处理BatchData,可以同时兼顾Spark以及SparkStreaming的功能。与Spark不同的是,ApacheFlink本质上只有Stream的概念,Batch被认为是SpecialStream。ApacheFlink在运行中主要由三个组件组成,JobClient,JobManager和TaskManager。ApacheFlink是真正的流式计算,和SparkStreaming相反。ApacheFlink把离散的数据,当成流式数据来处理。ApacheFlink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时(FlinkRuntime),提供支持流处理和批处理两种类型应用的功能。ApacheFlink在实现流处理和批处理时,与传统的一些方案完全不同,它从另一个视角看待流处理和批处理,将二者统一起来:ApacheFlink完全支持流处理,也就是说作为流处理看待时输入数据流是无界的;批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。基于同一个ApacheFlink运行时(FlinkRuntime),分别提供了流处理和批处理API,而这两种API也是实现上层面向流处理、批处理类型应用框架的基础[4]。Flink支持增量迭代,具有对迭代自动优化的功能,在迭代式数据处理上,比Spark更突出,Flink基于每个事件一行一行地流式处理,是真正的流式计算,其本质与Storm性能差不多,支持毫秒级计算,而Spark则只能支持秒级计算。基于石油行业的迅速发展,智慧油田的建设日新月异,Flink显然更适应当前油田发展的需要。

3应用前景展望

随着智慧油田、智能油田的建设,实时数据流计算将更广泛地应用于以下场景。

3.1日志分析

比如对网站的用户访问日志进行实时的分析,计算访问量、用户画像、顿率、延迟、丢包、存率等等,帮助企业进行决策部署。

3.2出行、生产监控联网

如今的油田联网是已不限于物联网,还包括对用户、交通等进行分析的一个庞大的系统,改善用户出行,规划路线巡检,以及油田安保问题监控。并针对监测结果反馈实时分析,远程调控,实时跟踪并显示设备(比如汽车)的位置。

3.3油田物联网

比如对油水井采集系统进行实时的数据检测、报警、实时的显示,或根据历史数据进行实时的分析、预测。设备故障报警:极快感知、识别到故障的发生,并及时发出警示通知。

3.4实时数仓

实时数仓是在当下流行的数仓、它综合了StreamAnalytics和Pipeline。它与传统数仓最大的区别是,它能够把前方的业务数据实时进行清洗、汇聚、加工,最后写入实时服务这一层。实时数仓最核心的是把业务的整个链路进行实时化了,这就极大满足了一些需要实时看数据的业务需求。

3.5在线培训行业应用

由于近两年疫情的关系,在线培训应用广泛,倒逼传统教育向在线教育的转型。在线教育行业面临着很大的实时自动化的需求,对实时化有强烈的诉求,实时流计算在在线教育方面有着广阔的应用前景。此外,还有更多的领域需要应用到实时流计算。在这个过程中具体的业务,以及与技术结合能产生什么样的价值,还需要不断地探索。

4结论与认识

随着大数据时代的到来,在油田开发的过程中,油田数字化建设不断深入,积累了大量数据资源,数据发展已经到了变革时代,这迫使工作者们必须具备处理海量数据的能力。随后,大数据技术日趋完善、逐渐发展的过程又进一步促进社会产生更多、更丰富的数据资源。同时,随着数据实时价值日益提升,工业生产、企业发展对数据时效性要求也更加强烈,石油企业对实时数据的管理需求也日益迫切。实时流计算作为一种前沿的技术,能够很大程度地支撑油田企业信息化、数字化的发展需求。

作者:王琪 单位:大庆油田有限责任公司第七采油厂数字化运维中心