第四章,首先介绍了项目平台的搭建,然后给出算法类的设计与关键函数说明,之后再 给出算法加载,最后介绍实验结果与分析。
2Hadoop 平台介绍
2。1Hadoop 平台简介
本科毕业设计说明书 第 3 页
云计算的的应用如今已经越发的普遍,它指的是服务的交付和使用的模式,具体指通过 互联网依据按需、易扩展的方式获得所需的资源。Hadoop 是云计算下的一个分布式系统框架, 用户利用此平台可以方便地开发分布式程序,充分利用整个集群的资源进行运算和存储。它 是 Google 集群系统的一个开源实现,是一个项目总称。主要由 HDFS、MapReduce 和 HBase 组成。其中 HDFS 是 Google File System(GFS)的开源实现;MaoReduce 是 Goigle MapReduce 的开源实现;HBase 是 Google BigTable 的开源实现。主要包括以下两个项目:(1)Hadoop 子 项目:Hadoop Common、HDFS、MapRedece、BigTable;(2)Hadoop 相关项目:Avro、Cassandra、 Chukwa、Hamma、HBase、Hive、Pig、ZooKeeper。Hadoop 存在诸多的优势,具有高可靠性, 高扩展性,高效性和高容错性[12]。
2。1。1Hadoop 存储管理
分布式文件系统(HDFS)由三个部分构成:客户端(Client),命名节点(NameNode),数据节 点(DataNode)。客户端是应用程序,先从客户端把作业所需的所有文件提交到文件系统的某 个目录上,然后再提交所要执行的作业;命名节点负责管理 HDFS 中配置信息、目录结构和 文件块(Block)的复制;数据节点存储文件块,负责将存储在其上的文件块信息周期告知命名 节点。一般情况下,数据节点有好多个,但命名节点只有一个。
HDFS 相关技术的简单说明[13]:
(1)Block 的放置:在平台的默认配置中,文件块会有三份备份,用于防止数据的丢失损坏, 这三份备份分别放置在 NameNode 指明的 DataNode、与指定的 DataNode 同 Rack 的 DataNode 和不同 Rack 的 DataNode 上;
(2)心跳检测:心跳指的是周期性的检测,即 NameNode 和 DataNode 之间周期性地进行信 息通信,NameNode 与 DataNode 之间的信息通信通过 DataNodeProtocol 接口实现,JobTracker 和 TaskTracker 之间通过接口 InterTrackerProtocol 实现。每隔一个具体的时间,从节点都会向 主节点报告自己节点上的信息,以此让主节点知道从节点上发生了哪些变化;
(3)数据复制:HDFS 是以 Block 序列的形式存储文件,并且除了文件中最后的一个 Block, 其余的 Block 大小都是相同的,具体切分的 Block 大小可以自己配置。复制 Block 用于容错, 具体的 Block 备份数目可由用户自身设定;文献综述
(4)数据校验:HDFS 会校验所有写入的数据,同时支持在读取数据时进行验证;
第 4 页
本科毕业设计说明书
(5)单个 NameNode:如果失败,任务处理信息将会记录在本地和远端的文件系统中; (6)数据管道性的写入;
(7)安全模式:NameNode 可以进入一个特殊的状态,称为安全模式。该模式下不允许复 制文件 Block。
2。1。2MapReduce 计算框架
MapReduce 是一种分布式并行计算模型,由 Google 首先提出,开始主要用于搜素,现多 使用在大数据的并行计算上。该模型主要由两部分组成:Map 操作和 Reduce 操作。作业的任 务也分为两种:Map 任务和 Reduce 任务,首先进行的是 Map 操作,当客户端提交一个作业 后,会按照自定义的分片大小分成许多个 Map 任务,这些 Map 任务通过 assignTasks()函数分 配到不同的 TaskTracker 上去执行,执行结束后会产生许多中间的文件,当 Map 任务执行完 后,开始执行 Reduce 任务,把这些中间文件信息整合到一起然后输出结果。