《Hadoop海量数据处理》(第2版)阅读整理

[img]http://dl.iteye.com/upload/picture/pic/136745/8c8659cd-f6e4-3b9b-95eb-1ccb42797037.jpg[/img]

[b]《Hadoop海量数据处理——技术详解与项目实战》(第2版)阅读整理。[/b]

[b]Hadoop官网[/b]: [url]http://hadoop.apache.org[/url]

-------------------------------------------------------------------------
[b]以下是我本人的书评 [/b]
云计算的概念是在2006年提出来的,而2013年被称为“大数据元年”,标志着世界正式进入了大数据时代。我们有幸在技术飞述发展的当下,见证着一个个伟大的技术诞生,开源意味着每个人都能学习、使用。作为Apache软件基金会的项级项目——Hadoop的学习,我选用了《Hadoop海量数据处理——技术详解与项目实战》(第2版)作为我的入门书籍。原因是它第2版是在2016年6月出版,时间上比较新。另一原因是本书不仅有基础概念的解释,还有实战的演示,做为一本入门技术书籍,是很不错的选择。在此,感谢作者的分享。

另外,Hadoop的官网上的文档写的非常全且详细,但是由于Hadoop涉及的内容实在太多了,一时间竟不知道从何学起,所以有本书带着进入Hadoop的世界,事半功倍!(我的体验是可以结合着看)。

最后,书摘写的有点多,但都是我随手记的,没有具体参考意义,我只拜读了基础篇,即前9章,对于应用篇,还需要一点时间去做demo。

重要: 若要系统的学习Hadoop,建议买书学习。

-------------------------------------------------------------------------
[b]本书目录[/b]
[list]
[*]第1章,绪论
[*]第2章,环境准备
[*]第3章,Hadoop的基石: HDFS
[*]第4章,YARN: 统一资源管理和调度
[*]第5章,分而治之的智慧: MapReduce
[*]第6章,SQL on Hadoop: Hive
[*]第7章,SQL to Hadoop: Sqoop
[*]第8章,HBase: HadoopDataBase
[*]第9章,Hadoop性能调优和运维
[/list]
-------------------------------------------------------------------------

[b]如何阅读本书[/b]
本书一共分为三个部分: 基础篇、应用篇和结束篇:
[list]
[*]基础篇: 1-9章,第3-8章主要介绍HDFS、YARN、MapReduce、Hive、Sqoop、Hbase的原理和使用。
[*]应用篇: 10-19章,主要内容为一个基于Hadoop的在线图书销售商业智能系统的设计和实现。
[*]结束篇: 对全书进行总结。
[/list]
-------------------------------------------------------------------------
[b]以下是摘录:[/b]

[color=blue][b]【第1章】绪论[/b][/color]
Hadoop的特点:
1. Hadoop是一个框架。
2. Hadoop适合处理大规模数据。
3. Hadoop被部署在一个集群上

Hadoop的组成(这部分Hadoop官网上的首页就有介绍,贴上英文介绍):
[u][b]狭义的Hadoop: 由以下四个模块组成[/b][/u]
[list]
[*][b]Hadoop Common[/b]: The common [u]utilities[/u] that support the other Hadoop modules.
[*][b]Hadoop Distributed File System (HDFS™)[/b]: A [u]distributed file system[/u] that provides high-throughput access to application data.
[*]H[b]adoop YARN(Yet Another Resource Negotiator)[/b]: A framework for job scheduling and cluster [u]resource management[/u].
[*][b]Hadoop MapReduce[/b]: A YARN-based system for [u]parallel processing[/u] of large data sets.
[/list]
[u][b]Hadoop生态圈(广义上):[/b][/u]
[img]http://dl.iteye.com/upload/picture/pic/136747/9fe83770-5fc2-3a25-8cff-f8587e3f1f45.png[/img]

[list]
[*][b]Spark[/b]: 由Scala语言开发的新一代[u]计算框架[/u]。Spark在多个领域和MapReduce展开正面交锋,并且具有很多MapReduce所没有的特性,潜力巨大。
[*][b]HBase[/b]: 分布式的、面向列族的开源[u]数据库[/u]。
[*][b]ZooKeeper[/b]: 分布式的服务框架,提供[u]配置维护、名字服务、分布式同步、组服务[/u]等。
[*][b]Hive[/b]: 最早由Facebook开发并使用,是基于Hadoop的一个数据仓库工具。Hive对于Hadoop来说是非常重要的模块,大大降低了Hadoop的使用门槛。
[*][b]Pig[/b]: 和Hive类似,是对大型数据集进行分析和评估的工具。
[*][b]Impala[/b]: 由Cloudera公司开发,对存储在HDFS、HBase的海量数据提供交互式查询的SQL接口。
[*][b]Mahout[/b]: 机器学习和数据挖掘库。
[*][b]Flume[/b]: 由Cloudera公司提供的分布式的海量[u]日志[/u]采集、聚合和传输系统。
[*][b]Sqoop[/b]: [u]SQL to Hadoop[/u],在结构化的数据存储(关系型数据库)与Hadoop之间进行数据双向交换。
[*][b]Kafka[/b]: 分布式订阅[u]消息系统[/u],连接了平台里面的各种组件。
[/list]
(Hadoop官网上所列的其它模块和本书作者列的有交集,但也略有不同,可以结合看。具体戳Hadoop官网。)

围绕Hadoop做[b]二次开发[/b]的公司如: Cloudera、Hortonworks、MapR。

[color=blue][b]云计算[/b][/color],由Google首席执行官埃里克.施密特于2006年8月9日在搜索引擎大会上提出。

云计算定义: 是一种通过网络方便地接入共享资源池,按需获取计算资源的服务模型。共享资源池中的资源可以通过较少的管理代价和简单业务交互过程而快速部署和发布。

之所以称这“云”,是因为云计算在某些地方和现实中的云非常符合,云的规模可以动态伸缩,它的边界是模糊的,云在空中飘忽不定,无法也无需确定它的具体位置,但它确实存在于某处。

云计算的类型:
[list]
[*]基础设施即服务(Infrastructure as a Service, IaaS): 如目前大热的Docker。
[*]平台即服务(Platform as a Service, PaaS): 如Hadoop。
[*]软件即服务(Software as a service, SaaS)
[/list]
Hadoop是云计算的产物,可以看做云计算技术的一种实现。而云计算的概念则更广阔,并不拘泥于某种技术。

[color=blue][b]大数据[/b][/color](Big Data): 庞大容量、极快速度和种类丰富的数据。

大数据的结构类型:
[list]
[*]结构化: 数据库中的数据
[*]半结构化: 如XML
[*]准结构化: 具有不规则数据格式的文本数据,使用工具可以使之格式化。
[*]非结构化: 如text,PDF,图片,视频等
[/list]
云计算和大数据之间的关系: 云计算是你在做的事情,而大数据是你所拥有的东西。从另一个角度讲,云计算是一种IT理念、技术架构和标准,而云计算不可避免地会产生大量的数据。

[color=blue]对于Hadoop来说,首先HDFS解决了海量数据存储的问题,Hive负责结构化数据的分而,而半结构化、非结构化数据的分析和数据清洗可根据需要编写MapReduce作业完成,整个过程都是基于分布式存储的数据进行分布式计算。
另外Hadoop生态圈的Sqoop、Flume等实现了传统商业智能的一些功能模块。如日志收集、数据抽取等。[/color]

【第2章】环境准备
下载:
1. 官网下载
2. 由Cloudera公司提供的名为CDH的版本(Cloudera‘s Deistribution for Hadoop),也是开源的。Cloudera公司针对目前Hadoop各个组件存在兼容性问题,为各种不同的生产环境提供安装文件。同一个CDH版本之间的组件不存在兼容性问题。
目前: 最新版本是CDH5,基于Hadoop2.6开发。

结论: 选择Hadoop的版本取决于用户想要的功能和是否稳定,[u]对于稳定的需求,一般就考虑Cloudera的CHD[/u]。

以下是Hadoop架构的内容:
[b]HDFS架构:[/b] 以[color=blue][b]主从(master/slave)模式[/b][/color]组成的节点。

HDFS守护进程
[table]
|守护进程|集群中的数目|作用|
|NameNode|1|存储文件系统的元数据,存储文件与数据块映射,并提供文件系统的全景图。|
|SecondaryNameNode|1|是NameNode的一种,备份NameNode数据,并负责镜像与NameNode日志数据的合并。|
|DataNode|1个或多个|存储块数据|
[/table]

[b]YARN架构:[/b] 构成YARN集群的是两类节点: ResourceManager和NodeManager。同HDFS类似,YARN也采用主从(marster/slave)架构。

YARN守护进程
[table]
|守护进程|集群中的数量|作用|
|ResourceManager|1个|负责集群中所有的资源的统一管理和调度。|
|NodeManager|1个或多个|负责管理单个计算节点、容器的生命周期管理、追踪节点健康状况。|
[/table]

DataNode和NodeManager需要配对部署在同一个节点上。

安装Hadoop: 略
安装Hive: 略
安装HBase: 略
安装Sqoop: 略

【第3章】认识HDFS
HDFS的设计理念源于非常朴素的思想: 当数据集的大小超过单台计算机的存储能力时,就有必要将其进行分区(partition)并存储到若干台单独的计算机上,而管理网络中跨多台计算机存储的文件系统称为分布式文件系统(distribute filesystem)。

HDFS的设计理论
作为Hadoop生态圈的基础,HDFS非常适合运行在廉价硬件集群之上,[b]以流式数据访问模式来存储超大文件[/b]。

[color=blue]缺点(或叫短板): [/color]
[list]
[*]实时的数据访问弱: 如果应用要求数据访问的时间在秒或是毫秒级别,那么HDFS是做不到的。由于HDFS针对高数据吞吐量做了优化,因而牺牲了读取数据的速度,[color=blue]对于响应时间是秒或是毫秒的数据访问,可以考虑使用HBase。[/color]
[*]大量的小文件: 如果NameNode的内存为16GB的话,大概只能存放480万个文件。
[*]多用户写入,任意修改文件: HDFS中的文件只能有一个写入者。不支持多个写入者。
[/list]
HDFS架构
[u]SecondaryNameNode -- NameNode -(1:n)- DataNode -(1:n) Block[/u]
SecondaryNameNode -- NameNode -(1:n)- HDFS客户端

[b]所有的数据均存放在运行DataNode进程的节点的块(block)里。[/b]

[color=blue]1. 块(block)[/color]
如果HDFS的块大小没有经过配置,默认为64MB(如此大的原因是为了最小化寻址开销)。与其它文件系统不同的是,HDFS小于一个块大小的文件不会占据整个块的空间。

比如一个大小为150MB的文件,存放到HDFS中,block1 = 64MB,block2=64MB,block3=22MB。

hdfs-site.xml配置文件中,dfs.replication: 表示每个HDFS的block在Hadoop集群中保存的份数,值越高,冗余性越好(就是备份数越多)。

块的设计实际上就是对文件进行分片,从而使文件可以保存在集群的任意节点上,从而使文件存储跨越了磁盘甚至机器的限制。

NameNode是HDFS的大脑,它维护着整个文件系统的目录树,以及目录树里所有的文件和目录。

NodeNode中的[b]FSImage[/b]文件是文件系统元数据的一个永久性检查点。另一种是编辑日志([b]edit log[/b])。
DataNode: 数据节点,它在NameNode的指导下完成I/O任务。
HDFS客户端: 如命令行接口、Java API、Thrift接口、C语言库、用户空间文件系统等。

[b]如何访问HDFS[/b]
1. 以shell命令的形式访问本地文件系统,如hadoop dfs -ls /
2. Java API:
Hadoop是由Java编写的,所以通过Java API可以调用所有的HDFS的交互操作接口。
代码示例:
[list]
[*]读取文件
[*]写入文件
[*]创建HDFS目录
[*]删除HDFS上的文件或目录
[*]查看文件
[*]列出目录下的文件或目录名称
[*]文件存储的位置信息
[*]写入SequenceFile
[*]读取SequenceFile
[/list]
3. Web UI: 通过Namenode的50070端口号访问HDFS,如本地的[url]http://localhost:50070/[/url]

[color=blue]NameNode HA(High Availability)架构[/color]: 解决了一代Hadoop的NameNode的单点故障,[u]是目前生产环境必备的功能。[/u]该架构其实是将单点故障转移到了共享存储。

NameNode Federation: 解决NameNode的扩展性、隔离性,以及单个NameNode性能方面的问题。当集群规模在1000台以下时,几乎是不需要NameNode Federation的。
(Federation的意思是联邦)

HDFS snapshots

[color=blue][b]【第4章】YARN: 统一资源管理和调度平台[/b][/color]
YARN: 统一资源管理和调度平台。YARN脱胎于MRv1,并克服了MRv1的种种不足。

整个Hadoop是以YARN为中心的,计算框架都是可插拔的。而MapReduce(v2)失去了所有资源管理的功能,进而退化为单一的计算框 架,并且所有的计算框架都可以共享底层的数据。

目前的资源管理和调度平台:
[list]
[*]集中式调度器(monolithic scheduler): 全局只运行一个中央调度器。如MRv1的JobTracker,目前已经被淘汰。
[*][color=blue]双层调度器(two-level scheduler)[/color]: 将整个调度工作划分为两层: 中央调度器和框架调度器。目前的主流调度器,具体的实现如: Apache YARN,Apache Mesos。
[*]状态共享调度器(shared-state scheduler): 该框架还不太成熟,具体提出者: Google的Omega调度系统。
[/list]
YARN的架构
(官网上有图片,讲的也不错: [url]https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/YARN.html[/url])
双层调度范型中,ResourceManager属于中央调度器(一级),而ApplicationMaster属于二级调度器。

1. ResourceManager的主要职责是资源调度,当多个作业同时提交时,它在多个竞争的作业之间权衡优先级并进行仲裁资源。

访问ResourceManagerUI: 8088端口,如单个节点的YARN就是: [url]http://localhost:8088[/url]

2. NodeManager
是YARN集群中单个节点的代理,和理YARN集群中的单个计算节点。包括与ResourceManager同步,管理Container生命周期(核心功能)等。

3. ApplicationMaster
生命周期随着应用的开始而开始,结束而结束。它的启动是由ResourceManager完成的。[u]当作业被提交后,ResourceManager会在集群中任选一个Container,启动作为ApplicationMaster。[/u]

4. Container
YARN的Container模型,对不同计算框架都是无差别对待的,即Container中完全没有计算框架的逻辑,非常简洁和干净。

YARN的工作流程,略

YARN调度器的不同实现: FIFO Scheduler,Fair Scheduler,Fair Scheduler,Capacity Scheduler等。[color=blue]资源调度器是YARN中最核心的组件之一[/color],并且是可插拔的,用户可以根据它的一整套接口,编写自己的Scheduler,实现自己所需的调度逻辑(第一层调度逻辑)。

YARN命令行: yarn version等

[b]介绍Apache Mesos: [/b] 和Spark一样,是加州伯克利大学AMP实验室出品,对Spark支持的很好。

[color=blue][b]Apache Mesos VS Apache YARN:[/b][/color]
虽然都是双层调度,而且YARN和Mesos有很多相同的地方,如调度模型、主从可用性、资源隔离,但是它们也有一些不同之处,如二级调度器实现等,不过它们之间最大的不同是设计目标有一些差别。YARN和Hadoop结合的非常紧密,使得它非常适合处理大数据作业(如MR,Spark,Storm),但是YARN对其它长服务类型的作业(如Web Service)却支持得较差,需要通过Apache Slider(一个孵化器项目,旨在让不同应用运行在YARN上)。而Mesos在设计之初就是面向整个数据中心的,而不单单是大数据处理平台,它可以支持各种各样的计算服务框架,包括数据库服务,Web Service等,从这方向来说,Mesos的愿景比YARN还要大。

[color=blue][b]【第5章】分而治之的智慧: MapReduce[/b][/color]
MapReduce介绍: 将一个数据处理过程拆分为主要的[color=blue]Map(映射)和Reduce(化简)两步[/color]。这样,即使用户不懂分布式计算框架的内部运行机制,[u]只要能用Map和Reduce的思想描述清楚要处理的问题,即编写map和reduce函数[/u],就能轻松地使问题的计算实现分布式,并在Hadoop上运行。

MapReduce的编程思想:
(input) <k1, v1> -> map -> <k2, v2> -> combine -> <k2, v2> -> reduce -> <k3, v3> (output)

要理解MapReduce的编程思想,[u]其核心的一点就是将数据用键值对表示[/u]。在现实生活中,很多数据要么本身就是键值对的形式,要么可以用键值对这种方式来表示,例如电话号码和通话记录,文件名和文件存储的数据等,键值对并不是很高端数据挖掘独有的数据模型,而是存在于我们身边非常普通的模式。

MapReduce运行环境
因为采用了YARN来进行统一资源管理和调用,所以新一代的MapReduce的运行环境可以说就是YARN。

MapReduce的局限性:
1. MapReduce的执行速度慢。
2. MapReduce过于底层,与SQL相比,MapReduce显得过于底层。
3. 不是所有算法都能用MapReduce实现。

Example1: Word Count V1.0
官网上的参考: [url]http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#Example:_WordCount_v1.0[/url]

MapReduce的过程:
一个MapReduce作业经过了input、map、combine、reduce和output五个阶段。

MapReduce的工作机制。

MapReduce编程:
旧的API: org.apache.hadoop.mapred
新的API: org.apache.hadoop.mapreduce

[b]1. Writable接口[/b]: Hadoop序列化
实现的类有很多,如BooleanWritable, ByteWritable, IntWritable等,也能自己手动实现Writable类。
[b]2. Mapper类[/b]: 作为map函数的执行者,Mapper类对于整个MapReduce作业有着很重要的作用。编写自己的Mapper类需要继承org.apache.hadoop.mapreduce.Mapper类。
方法: setup(), map(), cleanup(), run()
[b]3. Reduce类[/b]: 编写自己的Recude类需要继承org.apache.hadoop.mapreduce.Reduce类。
方法同Mapper类。
[b]4. 控制shuffle[/b]: shuffle的工作主要是将中间结果分发到Reducer上。
[b]5. 控制sort[/b]
[b]6. 编写Main函数[/b]: 代码略,可以看官网的word countV1.0
Configuration类代表了作业的配置,该类会加载mapred-site.xml、hdfs-site、core-site.xml、yarn-site.xml,而Job类代表了一个作业。

总结
[color=blue]在学习MapReduce时,对于过程和工作机制要深入理解,这样在调优时才更有针对性。MapReduce编程不是大数据处理的重点,难点在于优化。[/color]

[color=blue][b]【第6章】SQL on Hadoop: Hive[/b][/color]
Hadoop最常用的工具——Hive。

Hive是由Facebook开发的海量数据查询工具,目前已经捐献给Apache软件基金会,是Apache的顶级项目。

[color=blue]在实际开发中,80%的操作都不会由MapReduce程序直接完成,而是由Hive来完成,所以说Hive本身实践性非常强,具体使用频率非常高,它没有高深的原理,只需要用户对SQL熟练即可。掌握Hive对于使用Hadoop来说非常重要。[/color]

Hive可以说是HiveQL(SQL)到MapReduce的映射器: HiveQL ————>(Hive)————>MapReduce;

顺带提: Hadoop生态圈里还有一个叫Pig的组件,作用类似Hive: Pig Latin ————>(Pig)————> MapReduce;(相对来说Pin Latin更加灵活但学习成本更高。)

Pig Latin和HiveQL都是对MapReduce进行了一种封装,使用户不必直接编写MapReduce程序,所以它们可以说是Hadoop的“高级语言”。

访问Hive:
[list]
[*]CLI(命令行接口),这种方式比较常见。
[*]HWI(Hive网络界面)
[*]Thrift Server(JDBC、ODBC)
[/list]
Hive架构:
Hive不是分布式的,独立于集群之外,可以看做是一个Hadoop的客户端。
Hive通过与YARN通信来初始化MapReduce作业,所以Hive并不需要部署在YARN节点上,通常在大型的生产环境集群,Hive被独立部署在集群之外的节点。

[b]Metastore[/b]是Hive的元数据的集中存放地(表名,列名,字段名等)。包括两个部分,元数据服务和元数据存储。

Metastore三种安装方式:
[list]
[*]内嵌模式;
[*]本地模式;(推荐)
[*]远程模式;(推荐)
[/list]
[b]Hive与关系型数据库(RBDMS)的区别:[/b]
[table]
||Hive|RMDBS|
|查询语言|HQL|SQL|
|数据存储位置|HDFS|Raw Device或者Local FS|
|数据格式|用户定义|系统决定|
|数据更新|[u][b]无[/b][/u]|有|
|执行|MapReduce|Executor|
|执行延迟|高|低|
|可扩展性|高|低|
|数据规模|大|小|
|支持事务|[u][b]不支持[/b][/u]|支持|
[/table]
Hive数据类型:
[list]
[*]基本数据类型: TINYINT, INT, STRING等8种。
[*]复杂数据类型: STRUCT, MAP, ARRAY
[/list]
Hive存储格式
[list]
[*]TEXTFILE: 默认格式,即文件格式,CSV\TSV。
[*]SEQUENCEFILE: 二进制格式。
[*]RCFILE: 行列存储相结合的存储。(优点较明显)
[*]PARQUET: 面向分析型业务的列式存储格式。
[/list]
HQL语法介绍:
数据库、数据表的操作。
数据的插入、导出。
数据查询:select from/where/group having/join/order by/sorted by/...等

Hive函数: 系统标准函数、自定义函数。

[color=blue][b]【第7章】SQL to Hadoop: Sqoop[/b][/color]
Sqoop是Apache顶级项目,主要用来在Hadoop和关系型数据库中传递数据。使用Sqoop我们可以方便地将数据从关系型数据库导入HDFS,或者将数据从HDFS导出到关系型数据库。(双向)。

Sqoop和Hive一样,都属于Hadoop的客户端,Sqoop作为一种高效的数据导入导出手段在大数据平台,得到了广泛的使用。

导入过程
Sqoop是通过MapReduce作业进行导入工作。
Sqoop命令: 将数据从数据库——>导入HDFS
Sqoop命令: 将数据库数据库——> HDFS——>Hive

导出则反之。

Sqoop的本质还是一个命令行工具。

[color=blue][b]【第8章】HBase: Hadoop Database[/b][/color]
[color=blue]NoSQL并不意味着排斥SQL技术,相反,它意味着Not Only SQL,代表的是对SQL技术的有益补充。[/color]

[color=blue]CAP定理是由Eric Brewer在2000年首次提出,表明任何分布式数据系统最多只能满足C(consistency,一致性)、A(availability,可用性)、P(partition tolerance,分区容错性)三个特性中的两个,不可能三个同时满足。[/color]

CA: RDBMS(关系型数据库)
CP: MongoDB, HBase, Redis
AP: Couch DB, Cassandra, DynanoDB, Riak

在目前的分布式系统中,分区容错性是很难绕开的,所以只能在C和A之间做选择。

NoSQ的构构模式:
1. 键值存储(Redis)
2. 图存储(Bigdata)
3. 列族存储(如HBase, Cassandra)
4. 文档存储(如MongoDB, CounchDB)

HMaster可以认为是HBase的管理节点,它不存在单点故障,通过Zookeeper选举机制保证总有一个HMaster节点正在运行。主要负责Table和Region的管理。

RegionServer -- (1:n) --> Region(可以认为是分片)-- (1:n) --> Store -- (1:n) --> StoreFile

Zookeeper
HBase使用Zookeeper作为其博同服务组件,其主要功能包括跟综RegionServer,保存根region地址。

[u]HBase最好的查询数据方式是用行键加列名去定位某个值(单元格)。[/u]

HBase基础API:
JAVA代码: 创建表、插入、读取、扫描、删除单元格、删除表等。
近几年,云计算产业飞速发展,大数据处理技术也在不断成熟。与此同时,国内移动互联网市场规模不断扩大,用户数量已经超过5亿,并带来了海量的移动互联网流量数据。在此背景下,如何基于云计算大数据处理技术来承载海量网络数据处理业务,是一个非常有研究价值的课题。从移动互联网的现状来看,一方面移动数据流量猛增,给运营商带来了巨大的运营压力,需要其投入更多的资金来进行网络建设与升级,另一方面由于移动数据业务增长,传统的语音短信等业务出现下滑,导致运营商出现增量不增收的现状。因此研究如何使用通过流量通道获取到的海量移动互联网数据流量资源,对于电信运营商有着十分重大的意义。针对移动互联网流量数据的特性,本文对基于Hadoop海量网络数据处理平台的关键技术进行了深入研究。具体来说,本文的主要研究内容和创新点如下: 1.提出了一种针对移动互联网的海量数据处理架构针对移动互联网中海量网络数据处理业务的特点和存在的问题进行相关研究,提出了一种承载海量网络数据处理业务的分布式数据采集、存储和分析的安全云计算平台架构。整个平台包含数据采集,数据存储,数据处理及流量安全检测四个部分,可以完美解决移动互联网流量数据从数据的采集到最后的数据处理这一业务流程,通过引入云计算技术实现了对海量数据的存储及高效的数据处理,并基于云计算技术进行快速的异常流量检测来提高该平台的安全性。通过实验和具体的实际应用证明了该架构的可行性,且优化技术的应用对于提高海量网络数据处理业务的服务质量和安全性都有着明显的效果,后续基于该平台架构对其中的关键技术进行深入研究。 2.提出了一种基于分布式故障检测机制的高可靠数据采集框架数据采集是海量网络数据处理业务的首要工作,只有保证采集数据的完整和可信,后续进行的数据处理工作结果才有意义和价值。因此本文首先针对当前移动互联网流量数据采集的技术特点和难点进行了详细分析,包括分布式、高动态性、采集终端多样性、节点异构等等,然后针对这些数据采集的难度问题,本文引入了分布式网络故障检测技术,设计了一种适合移动互联网网络流量数据采集机制的分布式节点监控框架,该框架中提出了应用于数据采集的节点故障检测与处理算法和节点负载均衡算法,实现对海量网络数据采集框架的节点进行实时监控,并提供快速高效的故障检测机制,避免数据丢失。同时,该算法还实现了对节点的负载进行动态均衡,防止某些节点出现负载过重的情况。实验结果表明,该分布式节点监控框架,能够实现采集节点故障检测的快速处理和节点负载的动态均衡,保障移动互联网流量数据采集的可靠性和完整性。 3.提出了一种异构环境下的高效数据存储机制针对当前基于Hadoop海量网络数据处理平台中数据存储问题,本文对分布式数据存储技术进行深入研究,并结合服务器性能评估技术提出了一种适用于异构环境下的高效数据存储算法。该算法在存储数据时引入节点的性能参数,并将节点间的数据块分布与节点性能相关联。一方面,该算法可以提高大数据的读写效率,另一方面可以提高后续数据处理作业的运行速率,提高数据本地化的任务比率。最后实验证明,该算法可以有效地提高存储空间利用率和异构云计算集群的数据处理性能。 4.提出了一种基于节点动态性能推断的任务分配算法海量网络数据的处理分析是海量网络数据处理平台最为核心的功能,数据处理的效率关系到整个海量网络数据处理平台的性能,因此对于该平台数据处理性能的优化是本文需要考虑的关键问题。当前,在构建云平台时,需要根据需求对云平台的硬件进行逐步扩容和升级,因此集群往往存在着硬件异构的情况。默认的数据处理计算主要是针对同构集群设计,在异构集群中性能会有很大程度的降低。因此结合当前海量网络数据处理平台的集群现状,本文研究并设计一种基于节点动态性能推断的任务分配算法。首先该算法在主节点中引入了节点动态性能推断模块,该模块采用基于指数平滑预测法实现对该集群中运行的作业历史数据学习分析,从而计算出集群中各个节点的计算能力。然后本文结合集群节点的性能指标对Reduce任务分配算法和推测性任务执行机制进行改进,实现集群可以动态选择最佳节点来运行数据处理任务。实验结果表明该算法可以有效地提高异构集群数据处理性能和集群的稳定性,减少异构集群的计算资源浪费,提高了云计算平台的资源利用率。5.一种基于分类器联合的分布式异常流量检测算法海量网络数据处理平台中存在着大量的实时数据流,该数据具有价值高、流量大等特点。同时,云计算平台本身具有强大的计算能力和存储资源,极易成为黑客的攻击目标。而云计算的环境极其复杂和多样化,具有跨地域、异构化、虚拟化等特点,使用传统的网络安全防御技术已经无法满足云计算的信息安全防御需求。因此在传统网络安全防御技术的基础上,本文需要进一步加强云平台的安全保障。针对当前海量网络数据处理平台的业务特点,本文对异常流量检测技术和云计算技术的结合进行了相关研究,提出了一种基于云计算技术的分类器联合检测算法。该算法联合了无监督的模糊K-均值分类算法和有监督的朴素贝叶斯分类算法,有效地避免单一分类算法在检测大流量数据时的缺陷,更为全面地对网络流量进行异常检测。同时,本文基于Mahout技术实现了这两个分类算法在MapReduce框架上的海量数据流的分类计算,极大地提高了异常流量检测的效率。最后通过实验证明,基于分类器联合的分布式异常流量检测算法可以快速有效地对海量网络数据流进行检测,并保持较高的检测准确率和较低的误报率。该算法可以有效地提高云平台的安全性,是对云平台网络安全防御体系的有效补充。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值