第一章绪论
1.1硏究背景与意义
互联网的出现使得数据以惊人的速度进行增长,各类门户网站、搜索引擎、社交网络的快速发展加剧了传统互联网数据的不断膨胀。而从2008年开始,智能手机和平板电脑的快速普及又推动了移动联网数据的迅猛増长。随着智能手机上像素的提高,社交网站图片上传的普通,互联网上的图片数据存储量已经远超文本数据。大数据的时代已经到来,原有打系统的计算和存储能力受到了很大的挑战。可以有效进行大规模数据存储和处理的平台受到互联网企业的高度关注。
因此通过Hadoop分布式平台用户可以轻松地搭建自己的分布式计算平台,能够很好地利用集群的分布式存储和计算能力,完成大规模数据的处理工作。Hadoop已经被众多互联网企业作为处理大规模文本、图像、视频等数据的基础平台,在Hadoop处理过程中输入的大规模数据被切片成大小相等的数据块然后被分配到不同的计算机上进行处理。送种数据处理方案的优势在于,从存储空间来看,对于大规模数据处理过程中数据线性増长的问题,可通过加入新的计算化来增加存储空间;另一方面从数据吞吐量来看,多台计算机同时进行数据的读写操作大大的提高了数据的读取效率;从计算的角度看,Hadoop将需要处理的海量数据分配到不同的计算机上,而每台这样的计算机上可以启动一定数量的java虚拟机(JVM)进行处理,这些JVM在Hadoop中被称作Child,每个Child各自实现了Map和Reduce操作,用户可化通过编写Map函数程序和Reduce函数程序来实现具体的处理细节。在MapReduce编程模型中,输入的数据以key/value(键值对)的方式来进行描述,用户可以将输入的数据进行不同的键值对定义从而满足不同的处理需求。
……
1.2本课题的研究进展
20世纪90年代以来,分布式存储技术已经逐步应用于商品化领域、互联网领域、电子商务领域,在互联网的浪潮冲击下,传统的单机存储技术如关系数据库开始走上了通过网络传输交换数据、并行处理的道路,分布式存储技术依赖于通信网络,架构于B/S模式。
Hadoop集群通常是通过大量的低配置机器搭建而成,每个机器由一定数量的组件组成,这些大量的组件发生故障是很平常的事,所以如何快速的处理这些随时发生的机器故障而不影响系统的数据存储和计算是首要考虑的问题。Hadoop的也跳机制和副本策略成功的解决送一问题,当主节点检测不到某台机器的也跳时,Hadoop则认为该机器出现故障,这时Hadoop会将该机器置为丢失状态,该机器上运行的MapReduce进程会在其他机器上重新启动,而因为有副本机制,同一份数据存储不止一份,该机器上的数据可以通过从其他机器上复制而得到。HDFS设计的第一个目标是能够对数据进行高效批量处理,由于HDFS所面对的应用场景都是流式的数据处理,于是怎么高效的批量处理数据是HDFS的首要设计目标;第二个设计目标是高吞化率,由于HDFS要处理的数据都是海量的,所以搞高吐率就显得十分重要,HDFS简化了数据文件的诘问模式,采用"一次写入多次读取"的文件访问策略极大的提高了吞吐率;第三个设计目标是就近数据处理,因为处理的数据量十分庞大,如果将数据移动到计算节点去进行处理,这样将产生极大的网络带宽开销,从而耗费大量的时间,极大的降低了系统的吞吐率。为了降低这部分时间和网络的开光彩,Hadoop采用了移动计算到数据节点的处理策略。简单来说,就是将数据的计算处理过程尽可能的安排在该数据所在的机器。
……
第二章平台相关技术研究
2.1Hadoop数据存储技术
Hadoop的系统架构如图2-1所示,Hadoop为主从架构,整个系统由NameNode、SecondaryNameNode、JobTracker、TaskTracker、DataNode五个部分组成。NameNode是系统的主节点,负责元数据信息的管理和接收节点的必跳汇报。SecondaryNameNode是NameNode的备份,定期进行fsimage和edits日志的合并,出于安全性考虑一般将SecondaryNameNode和NameNode部署在不同的机器上。JobTracker负责任务的调度,接受客户端提交上来的任务,并监控TaskTracker的运行。DataNode是数据的存储节点,定时向NameNo化汇报数据块信息。TaskTracker是任务真正执行的节点,向JobTracker汇报也跳。
Hadoop从2.0之后采YARN架构,它的基本思想是将Mrvl中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster。ResourceManager管理和分配整个系统的资源,ApplicationMaster则管理单个应用程序。YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,民esourceManager为Master,NodeManger为Slave,ResourceManager负责对各个NodeManage上的资源进行统一管理和调度。
HDFS是Hadoop进行一系统操作的数据基础,如何向HDFS中读取和写入数据是关键。HDFS进行文件写入时,首先由Hadoop客户端向NameNode发送文件写入请求,NameNode会根据要写入的数据的大小和文件块配置情况等信息,向客户端返回要进行数据写入的DataNode信息,客户端将文件划分为多个块,顺序写入到DataNode的块中。HDFS进行数据读取时,NameNode接受到Hadoop客户端发起的数据读取请求后进行元数据信息查找,返回数据所存储的DataNode信息,客户端从DataNode中读取数据。
HDFS的扩容操作十分方便,只需要通过一系列配置就可以将新的节点加入到集群,在添加过程中不影响集群的正常运行。由于HDFS的所有文件都要在NameNode中存储元数据信息,这样在存储大量小文件时会导致NameNode的内存开销十分严重,为了解决送一问题,Hadoop引入了archive归档机制。HDFS通过运行MapReduce程序按照一定规则对多个小文件进行归档,归档后的文件对客户端的访问是透明的,这样对于客户来说看到的还是多个文件,但在后台多个小文件已经被合并为了一个文件,大大的提高了HDFS的存储效率。
……
2.2MapReduce编程技术
在Map阶段所做的主要操作就是在多个节点中将要处理的数据转化为Key/Value键值对形式,然后对这些键值对进行Map函数处理,生成生新的键值对Map阶段生成的结果按Key值进行排序,相同的Key值将被放在一块,然后进行合并得到新的Key/Value数据项。在Reduce阶段所做的主要操作是数据聚合,将Map阶段产生的新的Key/Value数据项,在一个或多个节点中通过Reduce处理画数,按照一定的规则,聚合成一个新的数据面。换成公式,Map民educe可以表示。
在计算方面,Hadoop的任务分配机制是优先分配给空闲的节点,这样可以保证所有的任务都可以公平的分享集群计算资源,使得在最短时间内完成整个任务的处理。在I/O方面,Hadoop的MapReduce模型采用移动计算到数据这一思想,尽量将Map任务分配给该任务的分片数据所在的机器上进行执行,这样做的好处是能最大限制的减小网络开销,为任务的执行节省时间。
MapReduce的模型导致它在处理少量的大数据上具有优势,而在处理大量的小数据时,MapReduce性能会大幅度下降。所在提交MapReduce任务前可以先对要处理的数据进行一次预处理操作,将大量的小数据进行合并以提高任务的执行效率。输入采用大文件能很好的提交MapReuce的运行效率。另外,如果不对小文件做合并的预处理,也可以借用Hadoop中的CombingFilelnputFormat,它可以将多个文件打到一个输入单元中,从而毎次执行Map操作就会处理更多的数据。
数据过滤主要指在面对海量输入数据时,在执行MapReduce任务前先将数据中无用数据和异常数据进行清除处理。通过数据过滤可以降低数据处理的规模,较大程序提交数据处理效率。
在运行MapRedcue程序时,每次都需要开发人员手工进行一些技巧Reduce参数的设定,指定任务的输入和输出,人工干预时间比较多。当进行大批量Hadoop任务提交时,在送种操作模式下开发人员的人工成本开销千分严重。如何平台化、流程化、批量的提交MapReduce任务是Hadoop系统作业平台需要考虑的问题。
……
第三章平台需求分析与总体构架……………………23
3.1基于Hadoop的数据作业替理平台需求分析………23
3.1.1平台需求分析概述………………………………23
3.1.2Hadoop存储计算平台需求分析………………24
3.1.3平台用户管理业务需求分析………………25
3.1.4平台图片数据作业业务需求分析………………26
3.2基于Hadoop的数据作业管理平台总体设计………29
3.2.1设计原则………………………………………29
3.2.2平台结构………………………………………30
3.2.3平台模块………………………………………34
3.3部署环境设计………………………………………35
3.4本章小结…………………………………………38
第四章平台关键模块的详细设计与实现…………41
4.1原始数据上传模块的详细设计与实现…………41
4.1.1原始数据上传模块设计方案…………………41
4.2图片拼接处理模块的详细设计与实现………43
4.2.1图片拼接处理模块设计立案………………43
4.2.2图片拼接处理模块具体实现………………45
4.3图片隐私处理模块的详细设计与实现………47
4.3.1图片隐私处理模块设计方案………………47
4.3.2图片隐私处理模块具体实现………………50
4.4关系数据库的设计与实现………………………52
4.5Hadoop集群部署详细设计………………57
4.6本章小结………………………………58
第五章平台的验证与分析………………………59
5.1平台运行环境………………………………59
5.2平台功能验证与与分析………………………60
5.3平台性能验证与分析………………………64
5.4本章小结………………………………………67
……
第五章平台的验证与分析
5.1平台运行环境
平台在实际作业环境中部署运行,平台客户端和FTP客户端运行在普通Windows台式机上,分别与系统后台服务器和FTP服务器进行交互;系统后台服务器、单点拼接服务器、FTP服务器、数据中转服务器都运行在Linux环境上,除了要接收处理相应客户端发送过来的请求外还需要与Hadoop集群进行交互;Hadoop集群的NameNode、ResourceManager、DataNode、NodeManager分别运行在不同配置的Linux服务器上,组成一个集群对外提供数据存储和计算服务。
原始数据上传模块支持多个客户端并发上传,后台部署了12台中转处理机器,通过原始数据上传模块的后台服务进行负载均衡策略处理。在客户端界面能进行每次上传日志查询,可查询每次上传的用时、成功和失败的图片数量以入数据上传后后台中转机器的处理日志。
图片拼接处理模块包括拼接模板生成、拼接批处理、照片批处理和单点拼接。拼接模板生成在平台后台服务器上进行,按照特征规则选取100个场景点进行拼接模板生成,然后拿该模块来进行拼接批处理操作。拼接批处理和照片批处理通过右键菜单来进行启动,启动后处理请求进入平台批处理队列,如图所示,由批处理队列来进行Hadoop任务调度。
通过菜单栏的批次创建按钮可以完成图片隐私批次的创建功能,包括批次内任务的图片作业状态检查,任务数和场景数计算,符合要求的才允许进行批次创建。批次创建后会在主界面显示该批次的创建信息,之后可通过右键菜单对批次进行系统的操作,批次在不同的状态下会动态加载自己的右键操作菜单,如在"批次封版"状态下可以进行数据准备操作,这时批次进入数据准备中操作状态,数据准备任务加入到批次处理队列,由队列来调度Hadoop资源从HDFS进行数据下载和处理操作。
……
结论
本文首先介绍了基于Hadoop的数据作业管理平台的研究背景和意义,通过对目前分布式存储和分布式计算以及Hadoop数据作业平台的分析,指出当前企业的Hadoop任务作业主要存在重复MapReduce程序编写、人力成本投入大、作业周期长等问题,分析了开发一套Hadoop数据作业管理平台的必要性和迫切性。本课题主要完成了以下几个方面的工作。
1.通过对平台进行详细的需求分析,结合平台的总体要求、性能指标、设计原则等设计了平台的总体架构。介绍了各模块功能所使用的关键技术和主要架构。
2.设计和架构一套200+节点规模的Hadoop处理集群,对Hadoop的数据批处理MapReduce程序进行了封装,设计了集群任务的调度机制,完成了Hadoop任务队列的开发工作。
3.详细介绍了平台中使用的关键技术,主要包括分布式存储技术、分布式计算技术、负载均衡、MFC客户端开发技术、Nginx+FastCGI后台服务技术。
4.本文主要从原始数据上传模块、图片拼接处理模块、图片隐私处理模块、后台数据库设计等方面阐述了系统的详细设计与实现。设计了平台的数据作业处理流程,实现了数据的平台化作业。
参考文献(略)