马超 黄良毅 张铁刚 李伟宁
[摘 要]随着信息时代的来临,企业的日常运营越来越依赖于IT系统的日常运行。企业对信息系统的依赖越深,系统的复杂度越高,IT运维的难度也随之加大,但由于受制于建设时期的技术制约,电力行业在大数据的分析处理方面已逐渐无法适应新环境、新运维模式下的管理要求。基于此,本文重点分析海南电网海量机器数据实时流处理技术。
[关键词]海南电网;海量机器数据;实时流处理技术
doi:10.3969/j.issn.1673 - 0194.2019.02.033
[中图分类号]TM76;TP311.13 [文献标识码]A [文章编号]1673-0194(2019)02-00-03
0 引 言
大数据是近年来受到广泛关注的新概念,是指通过对大量来源复杂的多种数据进行高速地捕捉、发现和分析,用经济的方法提取其价值的技术体系或技术架构。机器大数据是在大数据处理分类中,由机器直接生成的数据,也是发展最快、最为复杂,同时又极具商业价值的大数据组成形式,并且机器大数据具有数量大、增长速度快、复杂性高、多样化等特点。除了来自服务器、存储、网络中的传统IT数据以外,来自移动互联网、物联网中的大量非结构化数据也都属于机器数据,能够机器数据进行深入挖掘,充分利用数据价值,提升数据分析质量,保证IT系统稳定运行。
借助大数据流式处理技术,技术人员能够对全网范围内的主机、服务器、网络设备、数据库以及各种应用服务系统等产生的各类大数据进行规范采集,规范数据格式,统一持久化存储,统一策略制定,并进行分析,实时和准实时的可视化呈现。
1 国内外海量数据的流处理技术
目前,国内外主流的海量机器数据流式处理技术包括数据摄取技术和序列化技术。
1.1 数据摄取技术
(1)Flume。Flume从其他应用程序收集机器数据,然后将这些数据送入Hadoop,功能比较强大,具有容错性,还可以调优化及故障切换。
(2)Kafka。Kafka是一种高吞吐量的分布式发布订阅消息系统,负责处理消费者规模网站中的所有动作流数据。
(3)Sqoop。企业在关系数据库与Hadoop之间传输数据,Sqoop可以将数据导入Hive或HBase,并从Hadoop导出到关系数据库管理系统(RDBMS)。
1.2 序列化技术
(1)Protocol Buffers。Protocol Buffers可以把结构化数据串行化,很适合做数据存储或RPC数据交换格式。它可用于通讯协议、数据存储的序列化结构数据格式。
(2)Avpro。这个Apache项目提供了数据序列化系统,拥有丰富的数据结构和紧凑格式。
1.3 ETL(萃取、转换)技术
(1)Apache Falcon。Apache Falcon是一个面向Hadoop的数据处理和管理平台,设计用于数据移动、数据管道协调、生命周期管理和数据发现。它使终端用户可以快速地将数据及其相关业务上传到Hadoop集群中。
(2)Crunsh。Crunch是一个用Go语言开发的基于Hadoop的ETL和特性的抽取工具,特点是速度快。
2 海量机器数据处理在海南电力的技术研究及运用
2.1 项目背景
海南电网海量日志平台科技项目中的网络环境比较复杂,在日常的运维过程中,IT管理员经常需要提取日志信息以追踪系统故障及其他问题,但目前面临的问题包括以下几个方面。①海量的日志没有进行集中管理,管理员需要登录每一台服务器,使用脚本命令或程序查看日志,操作烦琐,效率低下,容易出错。②只能做简单搜索和统计,无法针对海量日志的多维度检索和统计分析,不能满足分析要求。③没有实时监控和报警,如针对程序出错、网络设备故障、业务响应超时不能第一时间获取报警信息并进行故障排查。④故障定位常常需要多个环节的日志进行关联分析,各设备之间的日志是孤立分散的,无法关联。⑤海量数据日志无法进行统一归档,不方便问题追溯。
目前,海量机器数据处理可以分为以下3个类型。①复杂的批量数据处理(Batch Data Processing),通常的时间跨度在数十分钟到数小时之间。②基于历史数据的交互式查询(Interactive Query),通常的时间跨度在数十秒到数分钟之间。③基于实时数据流的数据处理(Streaming Data Processing),通常的时间跨度在数百毫秒到数秒之间。
Spark Streaming提供了一套高效、可容错的准实时大规模流式处理框架,将流式计算分解成一系列短小的批处理作业。整个流式计算根据业务需求可以对中间的结果进行叠加,或者存储到外部设备,具备实时性和扩展性,而且吞吐量比Storm高出几倍。
2.2 试验验证
2.2.1 模块设计
模块设计如图1所示,包括数据接入、数据缓存。
2.2.2 模塊说明
日志易系统基于分布式集群设计,即使采用单机安装,未来横向扩展也非常容易。
①Nginx。用于日志易系统内模块(Collector,Frontend,Yottaweb)负载均衡和容灾。②Collector。处理Agent采集的数据,做转换后存入消息队列Kafka。③Zookeeper。用于存储很重要的配置信息和模块Leader选举。④Kafka。分布式消息队列。⑤Logriver。日志易的日志分析处理模块。⑥Yottaweb。日志易的Web模块。
2.2.3 测试方法
采集海南电网机器海量数据日志,数据接收端为单Collector,以5000 eps为基准值,每隔固定时间10分钟,逐级增加2 000 eps,通过Manager界面收集测试数据,直到数据接收性能达到拐点。测试方法如表1所示。CPU总体变化趋势如图2所示。内存总体变化趋势如图3所示。I/O总体变化趋势如图4所示。
如图2、图3、图4所示,5个凸起波纹分别为5次测试区间内的CPU/内存/磁盘IO的趋势变化,单台磁盘写入峰值可达到50 000 KBps,并未达到性能拐点。
3 结 语
经过实际测试,在总量1 000万条的海量数据,经过实时流处理,存在5类不同格式的样本数据量环境。①系统响应时间小于3秒;②并发用户数大于100个;③性能数据采集时间≤300秒;④资源利用率:CPU<50%、磁盘I/O<25%、网络吞吐量<20%
主要参考文献
[1]齐剑雄.分布式日志采集系统数据传输分析研究[J].软件,2012(10).
[2]朱璐.浅谈电网公司一体化、可视化、智能化的信息通信调度理论体系[J].中国新通信,2013(20).
[3]夏海元.面向Big Data的数据处理技术概述[J].数字技术与应用,2012(3).