胡昕
摘 要:对现有多款云计算平台做了分析与对比。之后选定 Hadoop 开源云平台作为项目的基础研究平台,对其进行深入的分析与讨论。
关键词:Hadoop;数据处理;挖掘
曾有一句话在互联网业界广为流传:“大量的数据胜于好的算法”,这句话的意思是说对于某些应用,相比与优秀的算法,大量可用的数据能够带来更好的推荐效果。这就是数据处理和挖掘。数据处理的根本目的是利用有效的手段快速准确的获取数据、加工数据、应用数据。这其中,数据挖掘技术是将收集到的数据得以有效应用的核心技术。数据挖掘(Data Mining)技术又被称作数据库中的知识发现,其核心就是从大量杂乱无章的、难以理解的数据中获取有效的、新颖的、具有潜在应用价值的信息的过程。
目前比较有研究价值的 Web 挖掘的方向有:(1)数据预处理技术方向。(2)现有挖掘算法改进方向。(3)智能搜索引擎方向。(4)电子商务领域应用方向。
海量数据处理虽然刚刚兴起,但数据在企业中一直处于核心地位,传统的数据产品,在企业中部署运行多年,为企业的经营决策贡献巨大。企业现有数据产品的服务商,排在前六位的分别是 Oracle(27.93%)、IBM(15.99%)、Microsoft(14.41%)、Apache Hadoop(9.01%)、EMC(8.33%),以及SAP(7.66%)。Oracle 以绝对优势拔得头筹,可见其在数据库、数据分析和大数据方面的地位。值得一提的是Hadoop 的普及水平已超出我们的想象,成为继 Oracle、IBM和 Microsoft 之后又一主流平台产品。
Hadoop 云平台由分布式文件系统 HDFS 与并行计算构架MapReduce两个核心组件构成。接下来将对 Hadoop 的核心组件、主要构造模块及拓扑结构进行分析与讨论。
分布式文件系统 HDFS。HDFS(Hadoop Distributed FileSystem)是为Hacloop项目开发的分布式文件系统,它采用主/从( master/slave)架构。HDFS 由一个NarneNode(文件索引服务器)以及众多DataNode(数据节点)组成。HDFS 提供给用户相应的文件命名空间供用户将数据以文件的形式存放。HDFS 一般会把这些文件切分为几个文件块,切分后的文件块将被存放在一组数据服务器上。然后由NameNode提供打开、关闭、重命名文件与目录等基本功能,同时负责将文件块映射到DataNode上。再由DataNode负责响应客户端具体文件的读写操作,同时处理由NameNode发起的创建、删除和备份数据块的请求。
一般而言 HDFS 在 Linux 操作系统上运行。由于采用了Java语言,所以理论上任何支持Java语言的操作系统都可以运行NameNode与DataNodeo HDFS 采用主/从式系统架构,其中的所有元数据都存储在NameNode上,故客户端可以方便地通过NameNode得到全局数据存储状况,但如果出现NameNode死机的情况,用户也将失去访问数据的能力,为此 HDFS 在新版本中加入了备份NameNode功能,以防止上述故障。
并行计算架构MapReduce。MapReduce是一种为多台计算机并行处理大量数据而设计的并行计算框架。MapReduce通常工作的输入数据分割成獨立的数据块,分割后的数据一般由多个 Map 任务并行处理。Mapper 从 HDFS 上取出数据,处理后将结果存储在本地硬盘,Reducer 在本地硬盘或通过网络方法取得Mapper 的输出结果后进一步计算,将结果输出到 HDFS。
MapReduce框架关注调度任务,并监视任务的执行状况,如果执行失败,将重新执行该任务。
在 Hadoop 中计算节点通常与存储节点在一起。这就使得MapReduce框架可以根据数据的存储分布。情况来调度任务。
MapReduce框架包含一个独立的主服务器JobTracker(工作分配服务器)及一组与DataNode安装在一起的从服务器TaskTracker(任务执行服务器)。主服务器负责将任务调度到从服务器上,并监控任务,重新执行失败的任务。应用程序在 HDFS 上指定输入与输出位置,并通过实现专门的接口来提供相应的 Map 和 Reduce 方法。 Hadoop 客户端负责发送工作相配置信息给JobTracker,由JobTracker来分发、调度任务给TaskTracker,并将相应的状态信息反馈给 Hadoop 客户端。
首先由JobClient向部署于 Master节点上的JobTracker守护进程提交MapReduce作业。JobTracker在接受到作业请求后计入队列中去。驻留在 Slave 节点上的TaskTarcker守护进程在完成自己分配到的作业后会不断向JobTracker发送心跳信息,查询 Job 队列中是否有新的任务可做,若队列中有新的任务,JobTracker会在第一时间发送给空闲的TaskTracker进行处理。
Hadoop 有 5 大构造模块构成,其分别为:NameNode(名字节点)、SecondaryNameNode(次名字节点)、DataNode(数据节点)、TaskTracker(任务跟踪)、JobTracker(作业跟踪)。每个模块具备不同的功能,共同完成分布式数据处理任务。
在 Hadoop 云平台基础上,进行了海量 Web 日志数据预处理模型的研究,提出了改进型预处理模型,并在单机及Hadoop分布式平台下分别进行了仿真验证,对仿真结果进行了对比分析与研究。在海量 Web 日志数据预处理研究基础上进行了Apriori并行分层搜索算法的研究,分析传统 CD、DD 算法的优劣、提出改进型并行Apriori算法,并对其进行MapReduce化,部署于 Hadoop 平台下做仿真分析,最后对仿真结果进行分析研究。