基于大数据平台的管道泄漏辅助检测系统的制作方法

文档序号:18450913发布日期:2019-08-17 01:15阅读:240来源:国知局
基于大数据平台的管道泄漏辅助检测系统的制作方法
本发明涉及管道泄漏检测的
技术领域
,尤其涉及一种基于大数据平台的管道泄漏辅助检测系统。
背景技术
:随着石油管道输送工业的发展及管道泄漏事故频发造成的严重影响,管道泄漏检测技术得到了广泛的关注和研究。现有的管道泄漏检测方法很多,包括基于硬件、软件以及软硬件结合的方法,还有基于模型和非模型的方法。工况调节带来的压力波动与泄漏引起的压力波动极为相似,导致多工况下的泄漏检测变得更复杂。为了降低工况调节带来的误报率,提高检测的准确性,前人已从多方面展开研究工作:依据综合压力、流量信号的不同变化,进行工况识别和泄漏检测;通过提取压力信号的特征参数,运用模糊分类的方法实现工况调节与管道泄漏的区分;将动态压力信号相邻区间的特征差分值作为神经网络的输入来提高泄漏检测的工况适应性。上述方法在稳定的现场实验条件下取得了较好的检测效果,但是往往没有考虑到工况调节带来的影响。技术实现要素:为解决现有技术存在的局限和缺陷,本发明提供一种基于大数据平台的管道泄漏辅助检测系统,包括大数据批处理框架和大数据流计算框架,所述大数据批处理框架包括hadoop架构的mapreduce模块,所述大数据批处理框架设置有基于hdfs和mapreduce的hive模块,所述hive模块为大数据的批处理提供接口,所述大数据批处理框架设置有sparksql模块,所述sparksql模块用于实现基于数据库查询语言的大数据离线批处理;所述大数据流计算框架包括spark引擎的sparkstreaming模块,所述sparkstreaming模块用于对输入的数据流进行分割形成为micro-batches,对分割形成的micro-batches进行处理;所述辅助检测系统还包括数据采集层、zookeeper模块、数据访问层和hdfs分布式文件系统;所述zookeeper模块用于协调调度所述辅助检测系统的各个模块;所述数据采集层的flume模块和kafaka模块用于采集历史数据和实时数据,而且将所述历史数据和所述实时数据传输至所述hdfs分布式文件系统;所述hdfs分布式文件系统用于存储所述历史数据和所述实时数据;所述sparkstreaming模块用于根据朴素贝叶斯算法进行离线数据的训练学习和实时数据的预测分析;所述数据访问层用于显示分析结果,根据所述分析结果对管道泄漏状况进行判断。可选的,所述flume模块还用于将所述历史数据和所述实时数据传递给所述kafaka模块;所述kafaka模块还用于将所述历史数据和所述实时数据存储至hbase模块。可选的,所述hbase模块是基于hdfs的面向海量结构化、半结构化数据的分布式nosql列式数据库。可选的,所述spark引擎用于接收来自于kafaka模块的数据流,所述sparkstreaming模块用于进行在线的实时分析,而且定期读取所述hbase模块之中的历史数据,进行离线的分析和建模。可选的,还包括mysql数据库,所述mysql数据库用于存储实时分析的报警数据和离线分析的数据。可选的,所述数据访问层的前端界面用于从所述hbase模块之中读取实时数据,还用于从所述mysql数据库之中读取离线分析结果和报警信息,进行可视化和报警。本发明具有下述有益效果:本发明提供一种基于大数据平台的管道泄漏辅助检测系统,包括基于hadoop的ha部署模式下的集群,以及处理大规模数据计算引擎spark,针对所采集到的历史数据和实时数据,运用朴素贝叶斯算法,进行离线数据的训练学习和实时数据的预测分析,以便辅助液体管道运输中的泄漏检测。本发明提供的辅助检测系统实时地从采集点快速采集数据,再进行实时的在线分析与计算,以能够及时发现管道泄漏状况,进而及时报警。本发明提供的技术方案基于积累的历史数据,进行离线分析与建模,实现工况的识别和监测,为泄漏检测提供辅助依据。而且,本发明提供的技术方案运用朴素贝叶斯算法区分工况与管道泄漏,降低了误报率。附图说明图1为本发明实施例一提供的大数据平台架构图。图2为本发明实施例一提供的数据流程示意图。图3为本发明实施例一提供的ha集群示意图。图4为本发明实施例一提供的spark框架示意图。图5为本发明实施例一提供的调阀状态压力变化示意图。图6为本发明实施例一提供的泄漏状态压力变化示意图。图7a为本发明实施例一提供的正常状态压力的时域示意图。图7b为本发明实施例一提供的正常状态压力的频域示意图。图8a为本发明实施例一提供的泄漏状态压力的时域示意图。图8b为本发明实施例一提供的泄漏状态压力的频域示意图。具体实施方式为使本领域的技术人员更好地理解本发明的技术方案,下面结合附图对本发明提供的基于大数据平台的管道泄漏辅助检测系统进行详细描述。实施例一在hadoop出现之前,高性能计算和网格计算一直是处理大数据问题主要的使用方法和工具,它们主要采用消息传递接口(messagepassinginterface,mpi)提供的api来处理大数据。高性能计算的思想是将计算作业分散到集群机器上,集群计算节点访问存储区域网络(storageareanetwork,san)构成的共享文件系统获取数据,这种设计比较适合计算密集型作业。当需要访问pb级别的数据的时候,由于存储设备网络带宽的限制,很多集群计算节点只能空闲等待数据。hadoop却不存在这种问题,由于hadoop使用专门为分布式计算设计的文件系统hdfs,计算的时候只需要将计算代码推送到存储节点上,就可以在存储节点上完成数据本地化计算,hadoop的集群存储节点也是计算节点。在分布式编程方面,mpi属于比较底层的开发库,它赋予了程序员极大的控制能力,但是却要求程序员自己控制程序的执行流程、容错功能,甚至底层的套接字通信、数据分析算法等底层细节都需要自己编程实现。这种要求无疑对开发分布式程序的程序员提出了较高的要求。相反,hadoop的mapreduce却是一个高度抽象的并行编程模型,它将分布式并行编程抽象为两个原语操作,即map操作和reduce操作,开发人员只需要简单地实现相应的接口即可,完全不用考虑底层数据流、容错、程序的并行执行等细节,这种设计无疑大大降低了开发分布式并行程序的难度。近几年来,大数据机器学习和数据挖掘的并行化算法研究成为大数据领域一个较为重要的研究热点。早几年国内外研究者和业界比较关注的是在hadoop平台上的并行化算法设计。然而,hadoopmapreduce平台由于网络和磁盘读写开销大,难以高效地实现需要大量迭代计算的机器学习并行化算法。随着ucberkeleyamplab推出的新一代大数据平台spark系统的出现和逐步发展成熟,它拥有hadoopmapreduce的优点,但是不同于mapreduce的是job中间输出结果可以保存在内存之中,从而不再需要读写hdfs,因此spark的性能较hadoopmapreduce有显著的提升。针对已保存在hdfs上的数据,spark提供了sparksql实现基于数据库查询语言的大数据离线批处理。spark原生地由scala开发,其程序代码的复杂度与java开发的同功能的mapreduce程序相比十分简洁。spark还支持python、java、r等编程语言。根据目前的技术方案,一个采集点的采集频率可达到100次/秒(10ms/次)。如果每个数据保存为32位浮点数,那么每天将积累约33mb数据,30天将积累近1gb数据。若有10个这样的采集点,每月数据增长量约为10gb。若为了追求更高精度而以64位浮点数保存,则数据量还会翻倍。以上为数据增长量的估算,若再计入数据的实时分析与计算、历史数据的分析与建模等,传统单台服务器上以oracle、sqlserver、mysql等关系型数据库为基础构建系统的方式,将很快导致系统性能的大幅下降。随着系统运行时间的增长,数据不断增多,针对关系型数据库进行的系统优化和扩展将越来越无法满足系统性能的要求。本发明提供的基于大数据平台的管道泄漏辅助检测系统包括大数据批处理框架,其中,典型的大数据批处理框架就是hadoop的mapreduce,而基于hdfs和mapreduce的hive则为大数据的批处理提供了更为简洁方便的接口。spark基于内存计算,实现了大数据的高性能批处理框架。针对已保存在hdfs上的数据,spark提供了sparksql实现基于数据库查询语言的大数据离线批处理。spark原生地由scala开发,其程序代码的复杂度与java开发的同功能的mapreduce程序相比十分简洁。本发明提供的基于大数据平台的管道泄漏辅助检测系统包括大数据流计算框架,其中,spark是一个非常流行的提供了类似于sparksql、mlib这样内建的批处理框架的库,并且它也提供了sparkstreaming这样优秀的流处理框架。spark的运行环境提供了批处理功能,因此sparkstreaming毫无疑问是实现了micro-batching机制。输入的数据流会被接收者分割创建为micro-batches,然后像其他spark任务一样进行处理。本实施例中,数据不断快速产生与积累、实时数据在线分析、历史数据离线分析的需求,以及简化系统架构、尽量提高系统性价比的考量,采用同时具有批处理和流计算能力,而且性能较高的spark计算框架。图1为本发明实施例一提供的大数据平台架构图。如图1所示,在整个架构之中,zookeeper负责协调调度系统各个部分,通过数据采集层中的flume和kafaka采集数据,再传输到hdfs分布式文件系统中存储数据,由spark计算分析,最后在数据访问层显示分析结果。本实施例提供的辅助检测系统实时地从采集点快速采集数据,再进行实时的在线分析与计算,以能够及时发现管道泄漏状况,进而及时报警。图2为本发明实施例一提供的数据流程示意图。如图2所示,整个架构之中,从现场数据源采集的数据,通过flume传递给kafka,通过kafaka模块,将实时数据存入hbase。hbase是基于hdfs的面向海量结构化、半结构化数据的分布式nosql列式数据库,适合于长期监测数据的实时存入、高效分布式检索和分析。本实施例中,spark接收来自于kafaka的数据流,使用sparkstreaming进行在线的实时分析,而且定期读取hbase中的历史数据,进行离线的分析和建模。实时分析的报警数据和离线分析的数据存入mysql数据库。另外,前端界面一方面从hbase中读取实时数据,另一方面从mysql数据库中读取离线分析结果和报警信息,进行可视化和报警。本实施例提供的技术方案使用朴素贝叶斯方法,实现工况的学习和判断。简单说来,朴素贝叶斯方法是根据贝叶斯定理,实现对数据的分类问题,分类结果是数据属于某个类别的概率。在应用朴素贝叶斯方法实现工况学习和分类时,主要解决以下三个问题:特征选取问题、特征值的离散化问题和分类器的进化问题。朴素贝叶斯分类方法要求数据的特征之间相互独立,因此,“首末站差值”就不应与首站和末站的数值同时作为特征。工况数据属于连续数据,离散化程度较差,需要根据对历史数据的统计分析,在其值域范围内划分出离散区间,以方便分类器的训练。拟尝试对朴素贝叶斯分类方法进行改进,使其随着不断接收新的数据过程中,通过人为对其分类结果的判断和修正,实现分类器的自学习和演化,从而能够学习新的工况。本实施例中,系统前端的管道泄漏监测,主要采用声波法、负压波法等方法,这些方法最主要的缺点在于无法识别各种复杂的工况,从而产生较多误报。同时,这些方法对于渗漏的敏感性也十分有限。而基于大数据的工况分析与识别,恰好可以在这两方面对其进行补充。本实施例提供的技术方案基于积累的历史数据,进行离线分析与建模,实现工况的识别和监测,为泄漏检测提供辅助依据。图3为本发明实施例一提供的ha集群示意图。如图3所示,一个典型的ha集群,两个单独的机器配置为namenode,在任何时候nmaenode处于活动状态,另一个出于待机状态,活动的namenode负责处理集群客户端的操作,待机时仅仅作为一个slave,保持足够的状态,如果有必要提供一个快速的故障转移。为了保持备用节点与活动节点状态的同步,需要两个节点同时访问一个共享存储设备(例如从nas、nfs挂载)到一个目录。本实施例中,当活动节点对名字空间进行任何修改,它将把修改记录写到共享目录下的一个日志文件,备用节点会监听这个目录。当发现更改时,它会把修改内容同步到自己的名字空间。备用节点在故障转移时,它将保证已经读取了所有共享目录内的更改记录,保证在发生故障前的状态与活动节点保持完全一致。为了提供快速的故障转移,必须保证备用节点有最新的集群中块的位置信息,为了达到这一点,datanode节点需要配置两个namenode的位置,同时发送块的位置和心跳信息到两个namenode。本实施例中,任何时候只有一个namenode处于活动状态,对于ha集群的操作是至关重要的,否则两个节点之间的状态就会产生冲突、数据丢失或其他不正确的结果。为了达到这个目的,管理员必须为共享存储配置至少一个fencing方法。在宕机期间,如果不能确定之间的活动节点已经放弃活动状态,fencing进程负责中断以前的活动节点编辑存储的共享访问。这可以防止任何进一步的修改名字空间,允许新的活动节点安全地进行故障转移。图4为本发明实施例一提供的spark框架示意图。如图4所示,spark应用由集群上的一组独立的进程集构成,sparkcontext对象对这些进程进行调度和协调(sparkcontext对象在driver程序中创建)。在将应用运行在集群上时,sparkcontext可以连接几种不同的clustermanager(spark自带的standaloneclustermanager、mesos或者yarn),clustermanager可以为各应用分配资源。一旦sparkcontext与clustermanager连接,spark从集群的节点上获取executors,executor为可以运行计算代码和存储数据的进程。获取到executors后,spark将应用代码(jar或者python文件)发给各executor。最后,sparkcontext将tasks发给executors运行。本实施例中,特征包括采集系统所采集的压强作为训练的特征,标记位处理中将泄漏数据设置为1,其他数据设置为0,这里其他数据包含正常工作状态、调阀状态、停泵等实际运行中可能遇见的工况。傅立叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。当然这是从数学的角度去看傅立叶变换。那么从物理的角度去看待傅立叶变换,它其实是帮助我们改变传统的时间域分析信号的方法转到从频率域分析问题的思维。本实施例中,输入数据第一步是读取6000个压力点(这里读取的是7-6007),然后用快速傅里叶变换转化为频率特征,由于对称性所以取一半的特征值,又因为傅里叶变换后有许多低频噪声信息,所以采取算数平均值过滤,为了数据集的整齐性(方便之后设置标记位)将低于平均值的频率设置为0,最终输入的总计1500个特征值。图5为本发明实施例一提供的调阀状态压力变化示意图。图6为本发明实施例一提供的泄漏状态压力变化示意图。由以上图5和图6可见,调阀时压力变化与泄漏时压力变化有相似区间,因此会对最终泄漏检测造成干扰。本实施例提供的辅助检测系统实时地从采集点快速采集数据,再进行实时的在线分析与计算,以能够及时发现管道泄漏状况,进而及时报警。图7a为本发明实施例一提供的正常状态压力的时域示意图。图7b为本发明实施例一提供的正常状态压力的频域示意图。图8a为本发明实施例一提供的泄漏状态压力的时域示意图。图8b为本发明实施例一提供的泄漏状态压力的频域示意图。由图7a-7b和图8a-8b可见,将时序压力数据转化为频域数据时,(0,3000)区间内值域不同,可以作为特这来分类泄漏数据。本实施例提供的技术方案基于积累的历史数据,进行离线分析与建模,实现工况的识别和监测,为泄漏检测提供辅助依据。另外,本实施例提供的技术方案运用朴素贝叶斯算法区分工况与管道泄漏,降低了误报率。表1朴素贝叶斯算法的分类结果标记precisionrecallfl-scoresupport01.001.001.00217010.771.000.8723avg/total1.001.001.002193表2支持向量机算法的分类结果标记precisionrecallfl-scoresupport01.000.990.99217010.000.000.000avg/total1.000.990.992193以上两个表格是频域数据下分类器性能报告,可以看到同样数据特征下两种算法对于正常状态数据分类效果都比较好,但是对于泄漏数据朴素贝叶斯分类效果较好。数据训练特征是6000个压力点产生的1500个频域特征,每个特征包含压力点的幅值和相位信息,总共有2193条数据,包含23条泄漏数据,和2170条正常数据。本实施例使用训练好的算法对管道泄漏状况进行预测,首先进行数据准备:随机选取331个数据其中包含泄漏数据25个,最终获得预测结果:泄漏数据(标记1的数据)预测准确率为92%,。其它数据(标记0的数据)预测准确率为100%。本实施例提供一种基于大数据平台的管道泄漏辅助检测系统,包括基于hadoop的ha部署模式下的集群,以及处理大规模数据计算引擎spark,针对所采集到的历史数据和实时数据,运用朴素贝叶斯算法,进行离线数据的训练学习和实时数据的预测分析,以便辅助液体管道运输中的泄漏检测。本实施例提供的辅助检测系统实时地从采集点快速采集数据,再进行实时的在线分析与计算,以能够及时发现管道泄漏状况,进而及时报警。本实施例提供的技术方案基于积累的历史数据,进行离线分析与建模,实现工况的识别和监测,为泄漏检测提供辅助依据。而且,本实施例提供的技术方案运用朴素贝叶斯算法区分工况与管道泄漏,降低了误报率。可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1