基于 hadoop海量数据分析系统设计与实现毕业论文.doc

上传人:laozhun 文档编号:2393220 上传时间:2023-02-17 格式:DOC 页数:59 大小:1.14MB
返回 下载 相关 举报
基于 hadoop海量数据分析系统设计与实现毕业论文.doc_第1页
第1页 / 共59页
基于 hadoop海量数据分析系统设计与实现毕业论文.doc_第2页
第2页 / 共59页
基于 hadoop海量数据分析系统设计与实现毕业论文.doc_第3页
第3页 / 共59页
基于 hadoop海量数据分析系统设计与实现毕业论文.doc_第4页
第4页 / 共59页
基于 hadoop海量数据分析系统设计与实现毕业论文.doc_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《基于 hadoop海量数据分析系统设计与实现毕业论文.doc》由会员分享,可在线阅读,更多相关《基于 hadoop海量数据分析系统设计与实现毕业论文.doc(59页珍藏版)》请在三一办公上搜索。

1、西安电子科技大学学位论文创新性声明秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说明并表示了谢意。申请学位论文与资料若有不实之处,本人承担一切的法律责任。本人签名:日期西安电子科技大学关于论文使用授权的说明本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究生在校攻读学位期间论文工作的知

2、识产权单位属西安电子科技大学。学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后结合学位论文研究课题再撰写的文章一律署名单位为西安电子科技大学。(保密的论文在解密后遵守此规定)本学位论文属于保密,在本人签名:导师签名:年解密后适用本授权书。日期日期摘要随着互联网的不断发展,国内大型互联网公司业务的不断复杂化,分析核心数据成为了公司发展的关键点,但是公司内部的核心数据原始文件庞大,目前大部分是通过人工分析得出结论,因此分析处理海量数据成为亟待解决的问题。本文研究了海量数据处理的国内外现状,阐述了分

3、布式 MapReduce 的编程思想,介绍了 Hadoop 的相关技术和 HDFS 文件系统,分析了企业的需求,使用了spring- mvc 和 hibernate 等 Web 开发框架对系统进行了分层设计,将系统分成了展现层、业务逻辑层、数据对象实体层、底层数据层和原始资源层。然后对系统结构展开设计和实现,结合实际业务设计了分布式 Hadoop 计算模块、数据结果存储模块和业务系统逻辑模块三个模块,最后对各个模块进行了测试,实现海量数据分析系统。本文所做工作被用于大型互联网公司系统的开发。实践表明,采用本文所设计的系统后,提高了数据分析的效率,改变了人工计算海量数据的情况,实现了数据分析统计

4、的高效性和集中性。关键词:Hadoop MapReduce 数据分析AbstractWith the continuous development of the Internet, business of a large domesticcompany is going to be more and more complex. Analysis of core data becomes a keypoint of the development of the company, but the internal core raw data files are huge.They get the

5、conclusion by manual analysis. Therefore, analysis and processingmassive data become problems to be solved.In this paper, we research the home and ab road status for massive dataprocessing. The MapReduce distributed programming idea is elaborated. Weintroduce technologies about Hadoop and the HDFS f

6、ile system, analysis of the needsof enterprises. Spirng-Mvc and Hibernate web development framework are applied tohierarchical designing in the system. The system is divided into five layers : viewlayer,business logic layer,data object layer,underlying data layer and originalresource layer. Then we

7、expand the design and implementation of the systemstructure. Hadoop calculation module, data storage module and business systemmodule are designed with actual business. Finally, each module is tested , Mass dataanalysis system is finished.The work in this paper makes use of the development of a syst

8、em of a largeInternet company. Practice shows that the system designed in this paper improves theefficiency of data analysis, it changes the status of artificially calculating the massdata and makes the statistical data analysis efficient and centralized.Keyword:HadoopMapReduceData Analysis目录第一章绪论 .

9、 11.1 论文背景及意义. 11.2 国内外研究现状. 21.3 本文研究内容. 31.4 章节安排. 3第二章基于 Hadoop 的分布式技术 . 52.1 分布式计算的思想. 52.2 分布式计算的技术. 72.2.1 Hadoop 原理 . 72.2.2 Hadoop 应用 . 82.3 本章小结. 9第三章基于 Hadoop 的海量数据分析系统的目标应用 . 113.1 目标应用的需求分析. 113.2 目标应用的设计架构. 123.2.1 目标应用的总体架构.123.2.2 目标应用的流程分析.173.3 本章小结.18第四章基于 Hadoop 的海量数据分析系统的设计实现 . 2

10、14.1 总体设计.214.2 数据结构设计. 234.3 模块详细设计. 294.3.1 分布式 Hadoop 计算模块 . 294.3.2 数据结果存储模块. 324.3.3 业务系统逻辑模块. 334.4 本章小结.39第五章基于 Hadoop 的海量数据系统的部署和测试 . 415.1 项目部署.415.1.1 文件命名规范. 415.1.2 代码工程文件部署. 425.2 系统测试.435.2.1 分布式 Hadoop 计算模块的测试 . 435.2.2 核心数据文件存储模块测试. 435.2.3 业务逻辑系统模块测试. 435.3 结果分析. 455.4 本章小结. 46第六章结束

11、语. 476.1 本文工作. 476.2 存在问题. 47致谢. 49参考文献. 51第一章 绪论1第一章 绪论本章首先阐述课题的背景和研究意义,接着介绍分布式技术的国内外研究现状,最后给出本文研究内容及章节安排。1.1 论文背景及意义随着计算机技术以及互联网的快速发展,特别是网络的普及,金融、通信等大众行业对信息的需求越来越高,亟待处理的数据量也越来越大。与此同时,人们对复杂查询操作能力的需求以及高性能联机事务处理能力也在不断提高。因此,如何存储计算海量数据成为当今的研究热点。当前单一节点服务器的计算能力已经达到了瓶颈,而现代大型企业的数据的异构性、复杂性和关联性非常强,数据量非常大,这样对

12、服务器存储资源、计算资源都提出了较高的要求,因此,利用云计算的分布式技术获取网络中强大的计算存储资源,将消耗大量计算资源的复杂计算通过网络分布到多节点上进行计算,是当前一种高效的解决方案。国内大型互联网公司,随着它的业务一步一步增大拓宽,所采用的系统也越来越多,相应的,开发和维护这些系统的团队也就越来越复杂,甚至出现了几个团队共同维护一个系统的局面。由于公司内部的许多核心数据是必须要产生并且加以分析的,而众多的公司系统则对产生和分析数据造成了相当大的困难,一方面,大规模的数据需要强大的运算能力才能够加以分析,传统的单机处理已经不能够满足当前业务发展的需求,另一方面,众多的业务系统,使得众多数据

13、的处理和分析更加困难,公司内部存在着手工分析分布式系统数据结果的现状不能够得到改善,工作效率严重受到影响。因此,企业迫切的需要一个可以大规模集中处理和分析展现数据的系统模式,统筹规划庞大的数据,实现高效处理。大规模数据的分析和计算,首要的问题就是庞大的计算量,分布式计算的通用的解决方案,用多个机器承载计算任务,优化任务的运算效率。但是分布式计算任务的实现中存在着一些问题,比如输入文件的优化处理和分布式任务的运行管理。所以,一种优化且良好封装的分布式框架,由底层封装文件调度、并行计算、容错处理等功能,用户进行分布式计算逻辑的设计,这样就可以优化传统的分布式任务流程。由谷歌公司研发的 Map/Re

14、duce 编程模型应运而生。同时,Hadoop 分布式框架实现了这个模型,有力的支持了这种新兴的分布式编程思想。另一方面,随着 Web 技术的飞速发展,基于 Web 的数据分析和管理系统能够集中统一的分析数据,并且在互联网上通过浏览器进行数据分析结果2基于 Hadoop 的海量数据分析系统的设计与实现的良好展现。这样就解决了人工分析大规模数据结果的弊端,为高效统一的数据分析展现提供了很好的解决途径。基于 Hadoop 的海量数据分析系统的意义在于:1. 避免重复性的工作。Web 数据分析系统可以通过规范可复用的流程对数据进行分析展现,它可以避免人工分析数据结果的弊端,从而节省人力物力、提高企业

15、工作效率。2提高大规模数据的处理能力,基于 Hadoop 的数据分析和计算可以应对海量数据级别的任务,通过快速高效的运算能力,使得企业迅速得到数据分析的结果,为今后的发展提供了保障。1.2 国内外研究现状首先介绍一下目前流行的分布式技术,MapReduce 编程模型。它的思想来源于一种函数式编程语言,名字叫做 Lisp,这种编程语言由谷歌公司提出并首先应用于计算机集群。Hadoop 框架的核心思想就是 Map/Reduce。谷歌研发出了 GFS等硬件模型来承载 MapReduce 模型。Map/Reduce 是一个用于海量数据运算的编程模型,于此同时它也是一种高效的任务调度模型1。在 2007

16、 年,谷歌对这个模型进行了更加深入的研发。谷歌公司以这种分布式编程规范作为基础,在互联网公司中渐渐地居于主导地位。Hadoop 是在 Doug Cutting 等人带领下进行设计研发的,同时他被 Apache 基金会认可,并成为了其旗下的一个著名的开源项目,它基于 Lucene 和 Nutch 等早前开源框架,基本上实现了谷歌自己的文件系统和最新的分布式编程思想。在2004 年,他们完成了 Hadoop 分布式文件系统并发布了最早的版本;2005 年,他们进一步研发不断增大 Hadoop 集群的数量,最终使得 Hadoop 集群的稳定数量达到了 20;2006 年 2 月 Apache Had

17、oop 项目开始资助这种分布式开发平台的研发。目前,在 Hadoop 引起了企业界和学术界的深入重视和广泛的研究与应用。2008 年 2 月,yahoo 公司研发出了世界上最大规模的分布式集群Yahoo!Search Webmap,这个集群对雅虎公司的广告收益和科研进程起到了非常重要的推动作用;Amazon 的搜索门户 A 的网站中创建商品的数据索引就是基于雅虎自身的分布式集群完成的2;许多著名的 SNS 网站,例如 facebook 都开始逐渐使用 Hadoop 大型集群进行分布式的数据挖掘、数据处理、日志分析和文件调度,推动了海量数据处理在全世界的应用。UC Berkeley 的 Mate

18、i Zaharia 等人改进了基于 Hadoop 的推测式执行技术,并发表了 Improving MapReduce Performance in Heterogeneous Environment3,其他很多世界高校也对 Hadoop 进行应用和研究;Tyson Condie 等人完善了 MapReduce第一章 绪论3整体架构,对它的整体进行了改进,他们在学术上推动了 Hadoop 的不断完善。2008 年之后,我国应用和研究 Hadoop 的企业也越来越多,包括淘宝、百度、金山等。淘宝是国内最早一批引入 Hadoop 分布式计算体系的公司之一4;百度在开发了自己公司内部的 Hadoop

19、应用系统。总之,互联网企业是 Hadoop 在国内的主要使用力量。同样的,很多科研院所也投入到 Hadoop 的应用和研究中,包括中科院、清华大学、浙江大学和华中科技大学等。其次,本文的另一个要点是基于 Web 的数据分析系统,目前国内的大部分互联网公司和绝大多数开源项目都以 J2EE 为解决方案,从最初的 struts1.0,spring和 hibernate 组成的 ssh 系统架构,再到后来的 ibatis 和 spring- mvc,不断有新兴的web 开发技术涌现出来,国内有很多公司,例如淘宝,也借鉴了国外的这些优秀的框架,开发了自己企业使用的 J2EE 技术。这也使得现在的 J2E

20、E 开发技术愈发成熟,增强了项目的健壮性和可维护性。1.3 本文研究内容分布式技术在国内国外都有着非常重要的地位,本文根据国内外相关领域的研究进展,结合自己对分布式技术的理解,以目前流行的 J2EE 开发技术作为技术支撑,构建出海量数据分析的 web 系统。本文从分析具体业务逻辑开始着手,抽象数据流程,根据业务的特性建立关系模型,并且根据数据的特点设计相应的存储方式,最终实现海量数据的计算、分析、处理和展现。基于 Hadoop 的海量数据分析处理系统主要由分布式计算模块和 Web 数据分析模块组成。根据海量数据分析处理系统的构成,本文的主要研究内容包括两部分:1. 海量数据分析 Web 业务系

21、统的分析和设计;2. 研究用于企业内部的海量数据分析处理的 Hadoop 计算模块的设计和应用。1.4 章节安排本文共分为六个章节,安排如下:第一章:绪论。阐述课题的背景和研究意义,介绍海量数据分析系统的国内外研究现状,概括本文主要研究内容及章节安排。第二章:基于 Hadoop 的分布式技术。介绍目前业界流行的分布式编程思想,介绍 Hadoop 的原理和应用,并从海量数据分析系统出发,对该系统中的技术应4基于 Hadoop 的海量数据分析系统的设计与实现用进行分析。第三章:基于 Web 技术的海量数据平台的目标应用。以海量数据分析的需求构建 Web 分析展现系统。对目标应用的背景、架构进行详细

22、的分析,确定系统的数据流程和基础架构。第四章:基于 Hadoop 的海量数据分析系统的设计和实现。给出该系统的总体设计方案,并对各组成部分及功能进行详细分析和设计,包括数据模型、中间文件及系统架构。并从业务角度分析设计系统,以达到规范、健壮和复用易维护的目标。第五章:基于 Hadoop 的海量数据分析系统的部署和测试。根据第四章给出的详细系统设计实现,详述系统的测试过程,并对测试结果进行分析。第六章:结束语。对本文的研究工作进行全面总结,分析其中的不足之处,讨论后续需要进一步改进的工作。第二章 基于 Hadoop 的分布式技术5第二章 基于 Hadoop 的分布式技术2.1 分布式计算的思想在

23、过去的互联网高速发展的几年里,很多程序员为了处理海量的原始数据,已经设计并且实现了数以千计的、专用的分布式计算方法。这些分布式计算方法用来处理海量的原始数据,这些分布式的方法被应用到许多领域,例如,网络spider 程序、日志文献的抓取等等。通过分布式计算的方法,得到网络上的大量数据信息和日志文献中的有效数据。这样的大数据处理在想象中是非常容易做到的,但是由于自身的输入文件过于庞大,所以分布式海量数据的计算时间成为了关键,只有将这些计算分布在成百上千的主机上。如何处理并行计算、分发数据、怎样处理错误?所有这些问题综合在一起,需要大量的代码处理,因此也使得原本简单的运算变得难以处理。为了解决上述

24、复杂的问题,本文设计实现了一个新的分布式模型,基于分布式思想,只要相应的计算逻辑即可,而不必关心分布式计算过程中的容错和负载均衡等复杂的细节,这些由一个统一的库函数解决。设计这个抽象模型的灵感来自 Lisp 和许多其他函数式语言的 Map 和 Reduce 的原语。意识到大多数的运算都包含这样的操作: 在输入数据 的 “逻辑 ”记录上应用 Map 操作 得出一个中间key/value pair 集合,然后在所有具有相同 key 值的 value 值上应用 Reduce 操作,从而达到合并中间的数据,得到一个想要的结果的目的。使用 MapReduce 模型,再结合用户实现的 Map 和 Redu

25、ce 函数,就可以非常容易的实现大规模并行化计算;通过 MapReduce 模型自带的“再次执行”(re-execution)功能,也提供了初级的容灾实现方案。这个工作(实现一个 MapReduce 框架模型)的主要将自动化分布式计算通过接口的方式表达,并且利用 MapReduce 模型接口实现在计算机集群上的高效的分布式运算MapReduce 编程模型的原理是:利用一个输入 key/value pair 集合来产生一个输出的 key/value pair 集合。MapReduce 库的用户用两个函数表达这个计算:Map和 Reduce5。首先通过一个 Map 函数接受任意输入的 key/va

26、lue pair 值,然后产生一个中间 key/value pair 值的集合。MapReduce 这个 Map 中的相同中间 key 值的 value 值集合在一起后进行排序和 combine 的操作,最后传递给后面的 reduce 函数。分布式计算过程中的 Reduce 函数以一个 key-value对作为输入的参数。Reduce6基于 Hadoop 的海量数据分析系统的设计与实现函数合并这些 value 值,通过一定的方式对这些生成的结果进行排序,输出一个比输入规模小的 value 集合。每次 Reduce 函数的输出结果是 0 或 1 个 value。一般只用迭代器把产生的 value

27、 值发送给后续的 reduce 作为输入,解决了无法将大量的 value 值的集合全部放入内存中的问题6。MapReduce 模式的主要思想是将自动分割要执行的问题(例如程序)拆解成map(映射)和 reduce(化简)的方式,流程图如图 2.1 所示。输入数据块1数据块2数据块3数据块4数据块5数据块6Map任务Map()Map()Map()Map()Map()Map()Reduce任务Reduce()Reduce()Reduce()输出结果结果结果图 2.1 MapReduce 的处理流程数据被分割之后通过 Map 函数将这些字文件发送到各个计算机集群的子节点上进行运算,在通过 Reduc

28、e 函数的程序将结果汇整,从而得到想要的最终输出结果。MapReduce 借鉴了函数式编程的思想,其软件实现是指定一个 Map 函数,把键值对 (key/value)映射成新的键值对 (key/value),形成一系列中间结果形式的key/value 对,然后把它们传给 Reduce(规约)函数7,把具有相同中间形式 key 的value 合并在一起。Map 和 Reduce 的相互依存的。函数描述如表 2.1 所示。表 2.1 Map 函数和 Reduce 函数的基本描述函数输入输出说明MapList()1. 将 小 数据 集 进 一步 解 析 成一 批对,输入 Map 函数中进行处理。第二

29、章 基于 Hadoop 的分布式技术7MapReduce 目标是解决分布式海量数据运算的高效性,因此在设计之初就考虑了数据的局部性原理,实现了分而治之的处理思想。MapReduce 集群由大量的普通计算机构成。在处理之前,将数据集发送到集群的子节点8。处理时,每个节点就近读取本地存储的数据处理(map),将处理后的数据进行合并(combine)、排序(shuffle and sort)后再分发(至 reduce 节点),避免了大量数据的传输,提高了处理效率。通过良好的复制策略维护系统的容错性,保证数据传输复制过程中的安全。以上就是海量数据分布式计算的基本思想 MapReduce 的介绍。2.2

30、 分布式计算的技术2.2.1 Hadoop 原理前一章已经提到过,Hadoop 是一个实现了 MapReduce 计算模型的开源分布式并行编程框架,程序员可以利用这个框架编写程序,实现对海量数据的计算和处理。此外,Hadoop 还提供了分布式文件系统(HDFS)及分布式数据库(HBase)用来管理节点上的分布式数据。利用 Hadoop 框架及 MapReduce 编程思想来实现海量数据的计算和存储,并且将 HDFS 分布式文件系统和 HBase 分布式数据库很好的融入到分布式计算系统中,从而实现海量数据处理的并行性和高效性,并且得以实现很好的处理大规模数据的能力。Hadoop HDFS 是 G

31、oogle GFS(Google File System)的开源实现,主要应用场景是作为并行计算环境(MapReduce)的基础组件,同时也是 BigTable(如 HBase、HyperTable)的底层分布式文件系统。HDFS 集群是由单独的 Namenode 联合若干的 Datanode 组成。HDFS 采用 master/slave 架构。Namenode 维护整个系统的文件系统。Datanode 每个系统集群单独配置,处理节点上的系统存储单元9。在内部,一个文件以 block 进行划分,每个 Datanode 集合管理若干个 block。如图 2.2 所示。2. 每一个输入的会输出一

32、批。是计算的中间结果。Reduce输 入 的 中 间 结 果 中 的List(v2) 表示是一批属于同一个 k2的 value8基于 Hadoop 的海量数据分析系统的设计与实现NameNode客户端ReadDataNode数据请求DataNode块信息DataNodeDataNode备份备份DataNodeDataNodeRack1WriteRack2Write客户端图 2.2HDFS 体系结构HDFS 的 Namenode 和 Datanode 支持普通计算机的部署和使用。这些节点集群安装 GNULinux 操作系统。HDFS 采用 Java 设计完成,Namenode 或 Datanod

33、e部署在可以运行 java 程序指令的计算机集群上。由于 java 语言自身的高效的移植性,使得 HDFS 可以部署到多种类型的机器上。其中最常见最经典的应用是一台机器上只运行一个 Namenod 的实例,而集群中的其它机器分别运行一个 Datanode实例,这样就可以维持集群的正常工作了。集群中单一 Namenode 的结构大大简化了系统的架构。Namenode 是所有HDFS 元数据的仲裁者和管理者,这样,Namenode 中只有系统数据而没有用户数据。为了增加系统的稳定性,Namenode 会维持一个备份,Secondary Namenode。2.2.2 Hadoop 应用首先介绍一下分布式计算体系处理数据的基本过程。Hadoop 分布式框架处理海量数据的过程主要涉及以下四个部分:1.客户端 Client:客户端的生成并提交任务 job。2.JobTracker:JobTracker 管理 job,是一个 java 版本的程序,这个程序的 mainclass 就是 JobTracker。3.TaskTracker: TaskTracker 维护 job 的生命周期,他也是一个 Java

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号