Hadoop网络流量分析
NetFlow产生大量的数据,但大多时候我们只需要这些数据的统计结果。用普通的串行方法可以在少量的数据集上进行统计,并且达到很理想的效果,但是一旦数据超过一定量级,便不能有效地进行处理,这时一些基于分布式的并行计算框架就有了用武之地。为了实现并行计算,已经有很多组织机构提出了多种方法,其中以Google提出的MapReduce框架最为著名。该框架已被广泛应用于文本搜索,海量数据挖掘等场合。
概述
图1展示了我们进行流分析时的机器拓扑结构。其中Hadoop云平台提供了分布式文件系统HDFS和云计算功能。
首先从各个数据源中提取数据,然后把各个数据源数据解析出来的可读数据上传云平台上。云平台的计算由一个主节点组织,若干从节点协同。主节点用来存储元数据、分配资源和任务调度。我们可以对其进行相应的系数配置如缓冲区大小、数据分片大小、处理线程的多少等因素,以更好地达到实验效果。从节点则接受主节点的调度,主要参与运算,同时也会定时反馈自己所在节点的状况。每个从节点上会根据HDFS的配置有若干份,在进行分布式计算时,从节点计算时通过Hadoop自带的RPC协议来进行通信。具体的计算过程则是由MapReduce框架完成。
MapReduce下的Flow分析
MapReduce计算框架下,任何数据都可以被看做是一对键值的组合。Map函数和Reduce函数是 Map-Reduce的两大组成部分。Map函数用来对原始数据进行过滤,然后产生中间结果(也是键-值的形式)该中间结果作为Reduce函数的输入。之后,Hadoop会把具有相同键的值归为一个列表,然后再遍历列表进行数据的统计。Reduce过后,通常中间数据集都会缩小,因为Reduce过程中仅提取了该部分的有效信息。为了能使用MapReduce框架进行不同流字段的分析,应当设计自己Map和Reduce函数,如果要做某时间段的流量检测,那么Map函数要设计成带有可以提取某时间段所有流量的功能。如果我们要查看是否有潜在的DDos攻击,那么Map函数被设计成可以提取知名端口字段,其他的功能与此类似。
图2详细地介绍了统计某时间段流量的MapRed-uce的工作流程。图中有一个上文没有提到combiner的过程,该过程主要用于再从节点进行部分归并,以提高程序的运行效率。
1.输入文件
首先,我们把提取的原始NetFlow字段利用SILK自带的工具rwfilter解析成Hadoop可以读出的数据字段,即文本字段。接着把这些解析出来的字段由Hadoop客户端上传到HDFS中,由于解析出来的文本字段远远大于原来的二进制形式的文件,所以需要把这部分输入规模变小一些。SILK本身并不提供解析二进制文件的接口,所以采取了把源数据进行压缩的方法,采取的压缩格式最好是能支持 Hadoop的LZO,通过实验也证明了这种压缩方式确实有最好效率。
2.Mapper
Mapper首先读入存在在HDFS中的文件作为自己的输入,它的读入以行为单位。然后再用文本处理工具对这些行字段进行提取,提取的字段和要进行的操作有关。以统计某时段的某IP的流入流量为例,Mapper输入中会有IP、端口、协议、时间戳等字段。由于是进行某时间段流量的统计,我们把该时间段内的IP字段提取出来作为键,把该时间段内的流量提取出来作为值,这样就构成了一个Mapper。
3.Reducer
Reducer把Mapper的输出作为输入,同样以统计某IP地址某时间段流入流量为例。Mapper中得到了IP-Bytes键值对,Reducer中把相同的键所对应的值归并在一个列表L中这样,键值对就变成(IP,L),这样就可以遍历L并把所有的流量相加,就得到了我们想要的结果。
实验及结果对比
为了进行实验,我们搭建了1个主节点以及4个从节点的Hadoop-2.4.1版本的集群,集群的每个从节点带有2.83GHz的12核CPU,内存大小为48G,硬盘大小为40TB,集群的主节点带有一个12核2.83GHz的CPU和64G内存。为了提高效率,主从节点均在同一个机架上,连在同一个交换机上。SILK的对比试验则是在单节点上进行,配置相同。
可以看到当数据量不大时,SILK往往具有更快的速度,这是因为Hadoop在进行计算前,要做一些集群间的通信及初始化工作,在小数据集上并不占优势。然而当我们把实验数据逐渐加大时,发现Hadoop会在某个点超越SILK的分析速度,当数据集再逐渐扩大时,Hadoop的优势变得更加明显,如图3所示。
本文主要展示了如何利用Hadoop和MapReduce框架进行大规模的网络流的分析的方法,并列举了几个利用这种方法进行实际分析的实例以及和传统方法进行网络流分析的对比。实践中,该方法在大量数据的情况下相比于传统的流分析工具具有更高的效率。另外它在可靠性、可扩展性方面也有着突出的表现,随着Hadoop更高版本的推出,现在的单点故障问题以及分布式系统安全方面也有了显著的提升,使得该方法的应用更成为了可能。
如何让Hadoop结合R语言做大数据分析?
两种技术放在一起,刚好是最长补短!\\x0d\\x0ad. 模拟场景:对1PB的新闻网站访问日志做分析,预测未来流量变化\\x0d\\x0ad1:用R语言,通过分析少量数据,对业务目标建回归建模,并定义指标d2:用Hadoop从海量日志数据中,提取指标数据d3:用R语言模型,对指标数据进行测试和调优d4:用Hadoop分步式算法...
怎么做数据分析(做数据分析的软件)
做数据分析的软件数据分析软件最好用的有:一、大数据分析工具——HadoopHadoop是一个能够对大量数据进行分布式处理的软件框架。但是Hadoop是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop是高效的,因为...
hadoop的数据存储
存放到HDFS 一般都是要分析的数据。分析完成的数据直接存储到MYSQL 或者ORACLE 中。这种处理方式是离线处理。如日志文件存储到hdfs 分析出网站的流量 UV PV 等等。一般都是用pig hive 和mr 等进行分析的。存放到HBASE 一般都是数据拿过来直接用的。而且他是实时的。也就是说数据就是成型的而且不需要...
如何架构大数据系统 hadoop
此外,目前大多数服务厂商都已经推出了带4GB以上SSD的解决方案,利用内存+SSD,也可以轻易达到内存分析的性能。随着SSD的发展,内存数据分析必然能得到更加广泛的应用。 BI级别指的是那些对于内存来说太大的数据量,但一般可以将其放入传统的BI产品和专门设计的BI数据库之中进行分析。目前主流的BI产品都有支持TB级以上的数...
如何架构大数据系统 hadoop
5)大数据的价值:决策支持系统 大数据的神奇之处就是通过对过去和现在的数据进行分析,它能够精确预测未来;通过对组织内部的和外部的数据整合,它能够洞察事物之间的相关关系;通过对海量数据的挖掘,它能够代替人脑,承担起企业和社会管理的职责。 6)数据的使用 大数据有三层内涵:一是数据量巨大、来源多样和类型多样的数据...
如何进行大数据分析及处理?
基于如此的认识,大数据分析普遍存在的方法理论有哪些呢?1. 可视化分析。大数据分析的使用者有大数据分析专家,同时还有普通用户,但是他们二者对于大数据分析最基本的要求就是可视化分析,因为可视化分析能够直观的呈现大数据特点,同时能够非常容易被读者所接受,就如同看图说话一样简单明了。2. 数据挖掘算法。...
大数据基础教程:大数据概念
- **Hadoop MapReduce**:用于并行处理大型数据集的系统。Hadoop的诞生背景源于2002年的Nutch项目,为了解决大量网页的存储和索引问题。随后,Hadoop基于Google的GFS和MapReduce思想,实现了分布式文件存储系统DFS和Mapreduce机制。Hadoop的广泛应用案例包括大型网站的日志分析和运营商流量经营分析。大数据技术生态...
什么叫埋点?
在2的位置插入 悬浮导航那里插入点击我连接到2 锚点的名字是可以随便改的。页面埋点的作用,其实就是用于流量分析。而流量的意思,包含了很多:页面浏览 (PV)、独立访问者数量(UV)、IP、页面停留时间、页面操作时间、页面访问次数、按钮点击次数、文件下载次数等。问题五:SPM埋点,CNZZ埋点是什么意思 ...
大数据分析Apache Spark的应用实例?
Spark最显着的功能之一就是其交互式分析功能。MapReduce是为处理批处理而构建的,而Hive或Pig等SQL-on-Hadoop引擎通常太慢,无法进行交互式分析。但是,Apache Spark足够快,可以执行探索性查询而无需采样。Spark还与包括SQL,R和Python在内的多种开发语言接口。通过将Spark与可视化工具结合使用,可以交互地...
hadoop适合解决web 的高并发吗?
10)内网LB适用在内部WEB接口、多台数据库Slave、多台Nosql Slave、公共服务等应用的负载均衡,可以使用LVS、Haproxy来实现,可用性要求不高的应用可行直接使用Localhost DNS轮询;11)hadoop适合海量数据的存储与处理,如做网站日志分析、用户数据挖掘等;12)管理集群,平台的核心,运维的阵地;...