随着社会的发展和科技的进步,信息交互更加频繁,数据累积与日俱增,大数据时代随之到来。大数据从字面意义的解释来说,即为体量很大的数据。维基百科中将大数据定义为[1]:大数据是指足够大和复杂而致使传统数据处理应用不再适用的数据集合。其含义为所涉及的资料量规模及复杂程度已远远超过当前主流软件工具的处理能力,而不能在合理时间内达到撷取、管理、处理并整理成为帮助企业经营决策更积极目的的资讯。
大数据与传统数据不同,大数据整体呈现多样性、规模性和高速性,因此需要更加先进的数据处理工具才能应对如此之大数据量的处理,同时保证其高效性。
大数据除了在信息量上不同于传统数据的量级,此外大数据还意味着可以对海量数据进行挖掘和分析,当今大数据已经渗透到各个行业,通过对数据的有效运用可以发现新的知识,使得数据为人们创造更大的价值。如信息专家涂子沛在其著作《大数据》中提出的大数据可以带来“大知识”、“大科技”、“大利润”和“大发展”[2]。
国际上以麦肯锡为代表的研究人员认为,大数据是数据量已经大到在数据获取、数据存储、数据管理、数据分析等方面远远超过传统的数据库工具处理能力的数据集,这一观点与维基百科关于大数据的定义基本一致。
综合上述观点可以看出,我们不能简单地总结海量数据和大数据是同一个概念的不同表示,另外从“数据”或者“海量数据”到“大数据”,也不只是修饰词层面的改变,关于它们之间的区别我们总结为以下3点:
1)大数据这一概念中的“大”是指用目前主流软件工具无法实现在响应时间范围内可以解决的大,需要采用大数据的技术对其实现处理:
2)大数据技术是一种全新的架构和技术,为了处理海量数据应运而生,大数据的一个主要目的是高速、高效地处理海量异构的数据;
3)大数据之“大”的基本属性是“量大”,但是其更具内涵的属性是“价值大”。所谓价值大是指通过数据处理方法对数据本身进行发掘和分析,从而发现数据背后潜在的规律和知识等,这是简单的数据分析无法体现的含义,是一种新的发现。
本文认为,以上3点是根据众多学者总结出来的大数据核心思想,这3点内容并非并列重复的,它们是一个层级推进的关系。而这3点中,最能体现大数据核心的是第3点,采用大数据技术挖掘分析新知识,创造新价值。当然,在近年关于大数据的学术报告中,很多都会讲到大数据的“5V”特性,即大数据的5个主要特征属性:Volume,Velocity,Variety,Value,Veracity。这其实和上面提到的3点是有异曲同工之妙,至于5V或者更多V的具体内容在此不多赘述。
1 问题与挑战
1.1 数据大爆炸
IDC国际数据公司曾对全球信息量进行相关计算,据统计结果分析,全球信息量整体呈不断上升趋势,即使在被金融危机打击的2009年,全球信息量依旧相比前一年增长了惊人的62%,此时全球信息量已经达到80万PB级。之后经过2年时间的迭代,截至2011年,全球数据总量已经达到1.8 ZB(1 ZB等于1万亿GB)。此后,全球数据总量以每2年翻一番的速度极速增长。以此估计,到2020年,全球信息数据总量将会达到40 ZB。数据大爆炸时代的到来,不仅体现在数据规模的急剧增长,这一时期的数据类型也开始呈现多样化。数据类型包括结构化数据、半结构化数据、非结构化数据等多种类型。所有数据类型当中非结构化数据将占到所有类型数据的3/4,这意味着将产生大量采用传统数据处理手段无法处理的数据[3]。
1.2 大数据到底是噱头还是未来
传统意义上的数据处理有数据挖掘、数据仓库、OLAP等。随着大数据时代的到来,数据分析处理的对象已经不仅仅是数据本身,更重要的是人们需要通过更加专业的数据分析知识和数据处理工具,从海量看似杂乱的数据集中,分析出数据背后所承载的各类行为、数据足迹等,从而为社会行为预测、企业行为规划和商业领域的决策提供强有力的支持。所以,各大互联网公司越来越看重数据的商业价值,各大创业公司采用大数据分析的技术进行辅助决策,而大数据技术也成为了当前众说纷纭的热门话题。
那么,大数据真的就只是一个噱头吗?当然不是。现如今,我国国内的主要互联网公司已经将大数据技术融入到了各自的领域中,有效地利用了大数据技术,取得了非常好的社会和经济效益。此外,在能源、医疗、交通等不同的行业领域,都使用大数据技术取得了不错的成绩。
在大数据领域,现阶段国际上已经开始实际运用的相关项目包括:
1)Google知识图谱和深度学习、自动驾驶技术、Google眼镜;
2)Facebook开放社交图谱数据;
3)NSA棱镜计划;
4)IBM Watson;
5)LinkedIn,Amazon,Netflix推荐系统等。
综合来看,大数据并非是一时兴起的噱头,而是未来科技发展的一个重要方向。因此了解、认知及掌握大数据技术显得尤为重要,对发现科学生产知识和规律、改良及提出新的科学技术、降低能耗提高效率以及提升竞争力具有重要现实意义。
2 研究现状分析
2.1 大数据发展历程
Google在2003~2004年的2年间,公布了关于GFS,MapReduc和BigTable 3篇技术论文,被称为“三驾马车”。这也成为后来大数据云计算发展的重要基石。
[4]
2005年,雅虎公司为了解决其产品的网页搜索问题开发了Hadoop项目,Hadoop项目大大提高了数据处理速度,Apache Software Foundation公司发现了Hadoop技术的高效性,引入该项目并将其发布为开源应用。Hadoop不是一个单体项目,完整的Hadoop生态系统由多个子项目共同构建,每个软件实现数据处理的相关子模块,最终共同实现功能全面,组织灵活的大数据分析系统。
从技术角度来看,Hadoop底层架构由2个关键服务模块组成:用面向大规模数据使用的分布式文件系统实现的可靠的数据存储服务HDFS,以及针对大规模数据集并行计算的高性能并行数据处理服务MapReduce。以上2个模块为Hadoop项目核心模块,将为大量异构数据的快速、高效分析提供基础技术支撑。
2011年5月,一篇名为《大数据:创新、竞争和生产力的下一个新领域》的文章发布,自此大数据开始成为备受关注的新技术。这篇来自国际著名咨询公司麦肯锡全球研究所的文章认为,在相关政策支持下,大数据技术将对生产力的增长提供强有力的支持,同时可以不断推动科技的创新。
2012年,维克托·舍恩伯格发表论文《大数据时代:生活、工作与思维的大变革》,标志着大数据概念开始在全球范围内进行传播。
2012年3月,美国总统奥巴马宣布启动,“大数据研究和发展计划(Big Data Research and Development Initiative)”。美国政府的多个部门将总
共投入2亿美元,其目的在于积极发展本国大数据技术,实现海量数据收集、落地、转发、分析相关研究工作,最终为美国的安全、科研等相关领域提供强大的支持以提高其领域职能。
2012年4月,一家针对信息领域基础设施进行大规模快速索引研究的信息技术公司Splunk成功在纳斯达克上市,成为大数据行业第一家上市的技术公司。
2012年7月,联合国发表了一篇名为《大数据促发展:挑战与机遇》白皮书,联合国在该白皮书中确定了大数据技术是全球科技发展和政府工作的历史转折点,同时阐述了各个政府部门应该如何把握好大数据发展机遇,从而更好地服务于人民[3]。
2013年5月,麦肯锡全球研究所再次发表研究报告《颠覆性技术:技术改进生活、商业和全球经济》。报告指出,大数据技术会成为未来10余种新兴技术的基石。
2015年8月,即我国多位院士联合致信建议将大数据上升为国家战略2年后,国务院发表《促进大数据发展行动纲要》。该文标志着大数据已成为国家战略级项目,未来要重点推进大数据领域的发展,以确保我国向着数字强国的目标稳步前进。
2.2 小数据与大数据的区别
所谓的小数据和大数据,首先体现在数据量的差距上。小数据(量)采用传统的关系型数据库,处理起来更为简单高效。大数据(量)采用传统的数据库无法处理,只能用大数据的技术架构去分析处理。但是采用大数据的技术处理小数据并不一定是最合适的解决方案。首先,系统越复杂所要处理的问题越多,不仅仅在实现上困难,而且在维护方面也举步维艰。其次,采用大数据的技术不会带来更好更高效的结果,相反,小数据采用传统的关系型数据库,无论是技术还是实现方式都更为成熟,数据查询分析的速度也更为高效。
当然,以上关于小数据与大数据的讨论主要体现在数据量和处理方式方面,小数据和大数据主要差异还有很多其他内容。《大数据时代》作者维克托·舍恩伯格提出了大数据三原则:要全体不要抽样、要效率不要精确、要相关不要因果[1]。从中可以看出,大数据时代的核心特征是相关性,其特点是全量、多元、数据价值密度低等。而小数据应该指采用调查方法获得的抽样数据或者是结构化的海量数据,通常采用传统的统计分析方法,往往依托数理统计的大数定律,描述抽样理论下样本最终服从中心极限定理的正态分布理论,强调描述性统计学和推断统计学。两者之间的对比可以简略地概括为:大数据重预测、发现、相关、全体、感知;对应的小数据重解释、实证、因果、抽样、精确。由此也可以看出,大数据与小数据没有孰好孰坏,在做好大数据的基础上,能够提取具有鲜明特征,具有高密度价值的小数据,从个体角度量身定做,进行更加精准的个性化推荐和预测,也是实现科学数据分析和管理的重要目的。
2.3 大数据技术
和传统数据处理类似,大数据技术主要包括:数据采集、数据传输、数据存储、数据查询、数据分析和数据可视化。由于数据量以及数据的多源异构,每一个过程都是一个非常复杂的系统,比如从一个位置向另外一个位置传输数据是比较简单的,但对大量数据却是非常复杂的问题,这些都需要非常先进的技术才能够解决。比如如何保证海量数据的传输速度,如何保证海量数据的不丢失,如何保证不同的模型所选取数据全部集中所需要的子集,如何保证数据源产生的海量数据毫无压力地全部存储到磁盘或者文件系统等等。这些都是大数据技术中需要解决的问题。
对数据的管理和查询分析大概包括:数据的传输、数据的处理、数据的存储和数据的查询,每个过程包括不同的组件去实现各自的功能。
2.3.1 数据传输
在数据传输领域可以说通用的标准式组件有Kafka(由Apache软件基金会开发的一个开源流处理平台)。Kafka是一种分布式的消息队列,可以实现消息的发布订阅功能。Kafka可以实现高吞吐量的消息传输,经验证,即便在TB级的消息量上Kafka依旧能保持高质量的数据持久化和稳定的数据传输性能。Kafka对生产者和消费者进行区分,生产者作为队列的消息发布者将消息写入Kafka,消费者从队列里获取消息并发送到相应的业务逻辑中进行处理。Kafka具有高吞吐量、低延迟性、可扩展性、持久性、可靠性、容错性、高并发性等特点[5]。
2.3.2 数据处理
数据处理又分为离线处理、在线处理、流式处理。这里仅简单地对比一下基于文件系统、基于内存和流式处理3种方式。
基于文件系统的数据处理是类似于基于Hadoop的MapReduce批处理技术,主要通过磁盘和网络移动数据,每次数据处理之后的结果存入磁盘。这种处理方式有很大的局限性,因为要磁盘读取,并通过网络传输,处理速度相对较慢,比较适合于离线的批处理操作。
基于内存的数据处理是近几年非常流行的Spark的工作方式。为了保证计算的高效性,Sprak将所有的工作提交至内存中进行处理,计算过程中Spark会将数据处理的各个环节的中间结果进行保留,通过这种高效的迭代方式,Spark可以在相当短的时间内完成数据处理工作。为了简化机器学习的实践复杂度,Spark在项目中集成了MLlib库,MLlib由一些通用的算法和工具构成,机器学习中涉及诸多迭代式算法,这与Spark的内存式处理可以很好地契合。大数据处理和机器学习的发展使得Spark在几年的时间里迅速发展成为批处理的标配组件。
关于流式处理方式,目前流行的数据处理框架有Storm和Spark Streaming。Hadoop的确可以实现高吞吐量,并在海量数据处理的能力上表现出色。但是Hadoop技术也有其自身的局限性,该技术专注于批处理领域,并不擅长实时流式数据的处理。而Storm等相关流式处理组件正好弥补了这一缺口,Storm可以不间断地处理当前最新数据,而不用等待响应时间间隔再提交计算任务。正是由于Storm的这一特性,人们通常可以运用其去完成需要实时分析的数据,
相对于批处理,Storm在持续计算、在线机器学习和分布式远程调用等领域有较高的性能表现[6]。
2.3.3 数据存储
大数据的存储层需要负责存储数据量异常大且结构复杂的信息,传统的存储方式无法容纳这样的数据量,为此我们需要使用低成本、高速高可靠性的存储系统。在Hadoop生态系统中,完全可以应对传统关系型数据库无法处理的场景。随着大数据技术的发展,开源的Hadoop项目逐步扩大,现在已经囊括诸多应用场景。目前最为典型的应用场景是针对互联网的海量数据进行存储和分析,通过扩展当前Hadoop项目实现支撑。在大数据领域。NoSQL是相对典型且常用的存储系统。NoSQL是指非关系型数据库或至少非SQL数据库解决方案。在Hadoop系统中,有众多NoSQL技术支持数据库,如HBase等。这些数据库可以很好地支持大数据中对于异构数据、半结构化数据的处理,完成复杂的ETL流程及繁琐的数据分析过程。
2.3.4 数据查询
目前,数据查询有以下3种形式:
1)基于Hadoop的SQL查询。传统的数据查询语言是SQL语言,因此在大数据中很多工具的开发是为了在Hadoop中完成SQL查询。通过SQL可以方便地得到搜索结果。但传统SQL数据查询的缺点是数据处理速度非常慢,这一缺陷在Hadoop所支持的SQL查询中并没有显著提升。究其根本,在分布式数据处理过程中需要从HDFS中读取数据,处理之后再写回存储器中。在大数据环
境中,如果需要快速进行数据查询,可以考虑从数据存储的角度出发,改进数据存储模式,以支持高效的数据查询,最大幅度减少数据延迟。
2)Key/Value存储。Key/Value存储模式可以显著提升数据查询速度,其关键点在于对存储数据进行优化操作,以此打造出一种非常快速的查询架构。更改为Key/Value存储模式之后,再次测试数据查询和数据写入速度,二者均有显著的性能提升。在实际应用中,很多数据库均支持这种经典的Key/Value存储模式,如时间序列数据库等[7]。
3)Column存储。目前大数据的存储解决方案可以分为2类:行存储和列存储。通过大数据的发展进程可知,列存储可以更有效地处理海量数据。列存储首先扫描所存储的数据,然后把这些数据拆分成单列进行存储,根据查询的关键字,可以快速查询各个列。这样的操作就可以在不同的列当中创造不同的关键字以及指标。当每次读取数据时仅读取集合中的部分数据,不存在冗余性问题。列存储可以在读取过程中发挥更大的优势。
3 未来研究方向
大数据可以应用在各行各业、各个领域,其中信息安全领域便是大数据应用的一个十分广阔的舞台。对于信息和网络安全而言,大数据发挥着举足轻重的作用,比如大数据隐私、舆情监测、高级持续威胁(APT)检测等。结合各种安全需求场景,搭建对应的大数据分析平台是无比重要的。
接下来本文将结合流量监测分析、日志分析和电磁数据分析的业务场景,展示并分析在大数据分析平台建设方面的应用实践。下面将从需求、架构等方
面详细阐述如何利用大数据技术进行网络流量监测分析、日志分析以及海量电磁频谱数据分析。
3.1 流量监测分析
随着互联网的发展,网络流量和会话规模呈现出爆炸式增长,在这种情况下,如何实现对大规模网络流量的实时监测和处理,已成为网络流量监测分析面临的重要挑战。近年来大数据技术的快速发展,为网络流量监测分析提供了新思路。基于大数据的网络流量监测分析架构如图1所示:
图1主要采用Filebeat和ELK Stack技术架构,通过对非结构化原始数据包Packets进行采集和处理,生成结构化的Netflow文件,并在采集服务器上部署轻量级的数据收集工具Filebeat来监视和实时发送到传输层。该架构提供了实现结构化网络流量Netflow流数据和非结构化的Packets包数据的收集、
传输、存储和分析以及可视化展示的全套解决方案,可以比较好地解决大规模流量的存储、快速检索问题。当然,中间处理需要根据业务对平台进行优化和定制,例如为了有效避免单点故障问题,可在传输层设置Logstash,以多节点协作的方式进行数据接收,并对数据存储配置多个目的主机。此外,根据业务需求,在传输过程中还可以直接对数据进行各类处理,包括过滤处理、数据分割处理、数据类型转换、IP地理信息等额外信息添加处理等,以更好地适配大量接入的Netflow数据。
图2所示为该平台性能测试,我们使用4台普通服务器(单核、32 GB内存、500 GB硬盘)对当前系统进行了性能测试,当系统中存储有312 699条Netflow流时,对IP、端口、包数等简单查询,平均耗时为0.007 s;多个条件的符合查询,平均耗时为0.14 s。基本可以满足网络安全监测中海量Netflow流实时查询分析需求。
3.2 日志分析
通过全面地日志分析获取设备故障、用户异常行为、网络运行状况等信息,能够弥补现有各类数据处理工具在威胁分析方面的不足,有利于及时处置网络安全事件和软硬件故障,保证服务的稳定性和安全性。
日志是由众多用户与不同服务器产生,它具有数据源多样性、海量性、传输不确定性等特点,而完整的日志是分析工作的保证,从日志收集到分析需要经历相当复杂的工作流程。整个流程对系统的可靠性要求较高,同时还需要保证系统时效性。面对每秒数MB/GB的网络请求,每天新增的海量日志,基于单机处理技术的传统日志分析系统在存储和计算性能方面遇到了极大的挑战,同
时基于Hadoop的海量离线分析系统在日志分析的时效性方面也存在着极大的瓶颈。
本研究设计的日志分析大数据处理架构如图3所示,相对于流量分析系统主要变化有2个:在数据存储传输方面,增加了Kafka集群,在实时分析方面增加了Spark Streaming计算组件[8]。通过从Kafka中实时抽取消息,进行消费利用,并基于滑动时间窗口进行实时计算。Spark Streaming提供2种Kafka消费数据方式,直接去读取Kafka的数据,并进行数据偏移量的检查,避免重复读取,同时保证数据的一致性。此外,在实时日志流上有相应的应用处理函数,统计每一个请求日志类型的出现次数,并将前TOP20输出到应用层进行实时展示。
在类似的配置下,我们分析在特定的时间区间内请求日志数据,通过分析其响应时间来对系统的检索能力进行评价。从图4所示的日志分析系统响应时
间可以看出,对141.5 GB的数据查询返回时间在800 ms左右,能很好地满足系统的性能。
在这个大数据处理平台的具体实践过程中,有以下3个方面的实战经验:
1)为了保证系统的稳定性与可靠性,保障Logstash,Kafka,ElasticSearch及Kibana的长期稳定运行,需用守护进程进行实时监控。利用daemontools工具对各个后台服务的运行情况进行监测,如果发现服务意外停止,daemontools工具可以将服务自启动,保证各进程的正常运行,从而实现服务的可靠性。
2)Spark Streaming性能调优涉及很多其他方面的技术,具体实践中主要在以下3方面进行改善:①设置作业为明确持续的RDD,这可以显著地减少Spark在RDD上的内存使用,同时也可以改善GC行为;②设置spark.streaming.
concurrentJobs,修改默认值,这样可以提高Spark Streaming的吞吐量;③对于长期运行的Elastic-Search集群,由于网络或者意外宕机等原因,可能会导致集群产生多个master,即“脑裂”的现象。目前还没有彻底解决的技术和方法,实践中通过设置discovery.zen.minimum_master_nodes参数为(N/2)+1(其中N为master节点资格的数量),可以减缓“脑裂”现象的发生。
3.3 电磁频谱数据分析
电磁大数据处理平台能够及时发现部署设备周边环境的电磁信号状态,使电磁信号管理更为主动,为电磁环境的持续、高性能、安全地运行提供主要保
障。电磁大数据处理平台一般由电磁信号收集、电磁信号存储和电磁数据分析3个部分组成。电磁频谱数据分析整体架构如图5所示。
其中电磁信号数据的存储是电磁数据平台系统的基础。电磁信号存储的核心工作是收集前端设备采集好的电磁信号和告警数据并进行落地。传统的存储方式已经不能适应现在的平台运行要求,尤其在电磁信号数据量比较大时,无法提供实时的电磁信号数据给分析人员,进而影响电磁信号的分析效果,因此平台采用Elasticsearch进行持久化。
由于电磁数据统计分析和异常分析需要保证高实时性,以使得异常告警有意义,本平台核心性能改进工作主要在实时数据处理模块。
如图6所示,电磁频谱数据的统计分析工作采用Storm工具作为计算引擎。Storm中定义了2个bolt,Spout部分直接配置KafkaSpout,从服务器的Kafka缓存队列上获取异常数据,2个bolt中的ExtractWarningBolt从Spout中推送过来的数据提取出时间戳、设备Id等信息,查询出设备所对应的会场Id,并将提取出的信息发送到下一级的HazardLevelCountBolt进行统计。为了提高处理的效率,我们可以认为最近一段时间内的统计结果会被频繁访问,因此在平台中我们接入Redis存储模块,将Storm中计算出的结果数据写入Redis内存存储模块中作为数据缓存。
我们在平台内部实现性能分析监控模块,实时监测前端可视化平台的响应速度,并在集群响应性能异常时实时提醒开发人员进行集群调试。从图7电磁分析前端响应时间可以看出,在集群数据规模处于百GB量级的环境下,其前端响应速度稳定在800 ms左右可以保证响应速度在检测平台允许的时间延迟范围内。
4 结论
随着科技的进步和发展,网络互联通信的愈加频繁使我们进入了大数据时代,面临大数据的海量、复杂等特性,大数据技术应运而生,而大数据技术也是推动生产力进步和发展的有力工具。本文在阐述大数据背景的同时,对大数据平台建设在信息安全领域的应用案例进行展示和分析,从实际出发,对网络流量分析和日志分析进行了实际操作,从而验证了大数据技术对信息安全问题的解决能够提供有力支撑,也能够为后续的信息安全方面的数据分析平台建设提供支持。
因篇幅问题不能全部显示,请点此查看更多更全内容