第三章 云检测平台的架构设计
3.1 引言。
本章节从数据采集、存储、计算等三个方面进行了阐述,这三个方面都需要结合分布式计算框架。本章设计了异常流量云检测平台,在计算层中我们采用了 apache spark 分布式计算框架,使用该框架来检测网络异常流量。本章节着重讨论平台设计思想和体系结构, 并介绍如何利用 Spark 集群对 darknet 数据集进行分类的方法。平台检测异常流量所采用Naivebayes 和 Cart 决策树算法将在第四章讨论。
本章节具体内容安排如下:本章分别从采集层,计算层,存储层详细介绍了所采用的相关技术。
3.2 云平台安全分析架构设计。
基于大数据异常流量检测平台架构图如图 3.1 所示,其中包括数据采集层,数据存储层和数据计算层,计算层采用的 spark 框架。
本系统采用了 Flume 作为数据采集层工具,flume 可以将分散在系统中节点产生的许多日志信息与流量信息数据,通过 flume 数据收集器进行采集并且推送到 HDFS 分布式存储当中去,或者也可以对抓取的原始数据进行简单的处理,用以产生能够适合计算层运算的输入数据,最终存储到 HDFS 分布式文件系统当中去。Spark 分布式框架的计算引擎通过调用 textFile方法从 HDFS 上读取数据,将 darknet 攻击数据到集群内存中,同时将 darknet 数据格式转换成 HadoopRDD 的格式。然后就可以调用 RDD 上的如 map、filter、reduce、join 等编程接口,同时使用机器学习算法对数据进行分析。每次对 RDD 的操作会由于 RDD 的只读特性,都会生成新的 RDD,整个 rdd 变换过程便形成了 "管道"[32].在计算过程中也可以根据具体的需求对任意 RDD 通过调用 persist 方法将该 RDD 的值缓存在集群内存中,以便后续基于该 RDD的分析效率更高。对于不再需要的 RDD 则可以通过调用 unpersist 方法即可将该 RDD 从集群内存中清除,释放该 RDD 占用的内存空间。当分析完成之后,对保存数据集的 RDD 调用saveAsTextFile 方法,便可将结果 RDD 中的数据持久化地存储到 HDFS 上。
3.2.1 数据采集层。
该系统的采集层使用的 flume 框架。使用该框架以 darknet data 数据文本为 source,以内存为 channel,将 darknet 数据集 sink 至 HDFS 中,供 spark 机器学习算法使用并进行数据分类。Flume 被称为是一个分布式、可靠和可用性高的海量日志采集、聚合和传输的系统。flume支持在日志系统中,来定制各类数据发送方,同时也用于收集数据;同时,Flume 提供对数据进行简单的处理,并写到各种数据接受方(比如文本、HDFS、Hbase 等)的能力。
flume 的数据流由事件(Event)贯穿始终。Flume 的基本数据单位是事件,它不仅携带日志数据(字节数组形式)并且携带有头信息,这些 Event 由 Agent 外部的 Source 生成,当 Source捕获事件后会进行特定的格式化,然后 Source 会把事件推入(单个或多个)Channel 中。Channel可以被看作是一个缓冲区,它将会一直保存事件直到 Sink 处理将事件处理完为止。Sink 负责持久化日志或者把事件推向另一个 Source.
3.2.2 数据存储层。
(1)HDFS 在本系统中的作用。
本文使用 HDFS 分布式文件系统对收集到的安全日志,异常流量数据进行存储,从Flume 采集的异常流量数据集当中提取出计算层所需要的特定的数据格式。 存储在 HDFS中的数据供 spark 机器学习库使用。
HDFS 作为一种分布式文件系统,它和现有的分布式文件系统有很多共同点。比如,Hadoop 文件系统管理的物理存储资源上是通过计算机网络与节点相连而不一定直接连接在本地节点[33].对于 Client 端而言,HDFS 就像一个传统的分级文件系统,可以创建、删除、移动或重命名文件等等。与此同时,HDFS 与其他的分布式文件系统的区别也是显而易见的。
首先,HDFS 其中的设计目标之一,就是能够在在通用硬件(commodity hardware)上进行部署的分布式文件系统。因为 HDFS 分布式文件系统是面向于成百上千的服务器集群,因此每台服务器上只存储着文件系统的部分数据,并且这些机器的价格都很低廉。这就意味着总是有一部分硬件因各种原因而无法工作。因此,HDFS 最核心的架构目标是错误检测和快速、自动的恢复。从这个角度说,HDFS 具有高度的容错性。
第二,HDFS 的另一个设计目标是支持大文件存储。这就意味着 HDFS 应该能提供比较高的数据传输带宽与数据访问吞吐量。相应的,HDFS 开放了一些 POSIX 的必须接口,容许流式访问文件系统的数据。
第三,HDFS 还要解决的一个问题是高数据吞吐量。HDFS 采用的是"一次性写,多次读"这种简单的数据一致性模型。网络爬虫程序就很适合使用这样的模型。
第四,移动计算环境比移动数据划算。HDFS 提供了 API,以便把计算环境移动到数据存储的地方,而不是把数据传输到计算环境运行的地方。对于数据量比较庞大的文件,这不但可以有效减少网络的拥塞,同时还能提高系统的吞吐量[34].
(2)HDFS 的体系结构与工作流程。
下面简单看一下 HDFS 的结构。图 3.3 所示为 HDFS 的体系结构图。HDFS 采用的是Master/Slave 架构[35].
NameNode 节点可以当作 Master 服务器,有三个部分功能。第一:对来自客户端的文件进行处理访问。第二:管理文件系统的命名空间操作,如'打开'、'关闭'、'重命名'等操作。第三:负责数据块到数据节点之间的映射。从这个意义上说,它扮演中心服务器的角色[36].
DataNode 节点作为 Slave 服务器,同样有三部分功能。第一:对挂载在节点上的存储设备进行管理。第二:对客户端的读写请求进行响应。第三:每个大文件都被切分成一个或多个数据块,用以分散放到一组 DataNode 中,在 Namenode 的统一调度下进行数据块的创建、删除和复制。
3.2.3 数据计算层。
该模块是安全分析平台数据计算量最大的模块,利用 Spark 平台[37].采用 Naivebayes 和Cart 决策树等数据挖掘的算法对暗网络中的数据进行离线分析[38].该模块的作用是对攻击行为进行分析分类Spark 比 Hadoop 的传统处理方式 MapReduce 有着很大的差别,spark 计算效率至少提高 100 倍以上。
Spark 可以分为四大模块:SparkSQL-RDD(其中 RDD 是数据执行的基本单元)、Graphx(图计算),MLlib(机器学习),Spark Streaming(实时处理)。RDD 是他们处理数据的基本单元。所以整个框架,就形成了大数据用来处理各种应用场景编程的一致性。
3.2.4 本章小结。
本章节主要介绍了大数据分析平台的架构设计和各个模块描述,本文分别对数据采集、存储、数据存储方案进行了介绍。
随着我国居民生活水平的提高,居民可支配的收入越来越高,随之而来的是居民生活压力增加,不健康饮食、不健康的生活习惯和生活压力导致居民的健康水平却越来越低,近些年我国居民对健康越来越重视。...
2.4Sparkmllib库与基于spark的数据挖掘算法。Spark之所以在机器学习方面具有得天独厚的优势,有以下几点原因:(1)机器学习算法一般都有很多个步骤迭代计算的过程,机器学习的计算需要在多次迭代后获得足够小的误差或者足够收敛才会停止,迭代时如果...
第五章系统测试整个智能家居系统的硬件平台搭建完成,软件编程和调试结束后,需要对系统进行一个全面的测试,来验证系统的功能的实现和稳定性。系统测试分为功能测试和性能测试。功能测试主要检测系统设计的功能是否都能完成;性能测试主要检验系统的稳定...
第四章个人防火墙系统设计与实现4.1开发环境操作系统:Windows7开发工具:VisualStudio20104.2防火墙系统设计架构4.2.1防火墙系统总体结构PSFW个人防火墙分为三个模块(总体模块划分见表4.1):(a)PSFWIOCONTROL为动态链接库模块和可执...
本文以软件开发为主线论述了主要的系统分析、设计与实现工作。在需求分析方面,从嘉饰公司亟需解决的主要营销问题出发,着重从营销基础信息管理、营销方案管理和营销的定价与成本信息管理方面进行了分析。...
第五章结论本文通过对物联网智能家居市场走访调查,结合行业发展趋势进行综合分析,充分考虑大众需求,研究和分析智能家居设备的控制技术,主要研究工作有以下几个方面:?1、对物联网和智能家居的发展历史,智能家居的发展现状进行了深入细致地研究,通...
第1章绪论随着计算机技术、互联网技术和嵌入式技术的日趋成熟,物联网开始逐渐走进人们的生活。在国家的政策支持下,科技在飞速的发展,智慧中国的概念也已经逐渐走入我们的城市。智能城市、智能家居、智慧医疗等基于物联网的智能系统已经为人们的生活...
本文的研究目标是以软件工程理论为指导,采用 PHP+My SQL 技术设计并实现科学合理、实用好用、能够满足实际需求的作业管理系统,以提高教学中作业管理环节的效率,增强教学效果,提高人才培养的质量。...
摘要微信是腾讯公司于2011年1月21日推出的一款通过网络快速发送语音短信、视频、图片和文字,支持多人群聊的手机即时通信软件,截止到2014年底,微信注册用户已接近8亿,海外用户突破1亿。面对如此庞大的用户群体,各种各样基于微信的应用系统...
第3章酒店客房预订管理系统的数据库分析及系统设计3.1数据库分析软件系统在工作的过程中,相关的数据信息都保存在数据库中,数据库的主要作用就是对软件系统中的数据信息进行存储和管理,保证这些数据信息的稳定和安全。数据库就是软件系统的后台,是...