随着互联网技术的发展,数宇信息正在成指数增加,根据Internet Data Cente:发布的Digital Universe报告显示,在未来8年中所产生的数据量将达到40 ZB,相当于每人产生5200 G的数据,如何高效地计算和存储这些海量数据成为互联网企业所要而对的挑战。传统的大规模数据处理大多采用并行计算、网格计算、分布式高性能计算等,耗费昂贵的存储与 计算资源,而且对于大规模数据计算任务的有效分配和数据合理分割都需要复杂的编程才可以实现。基于Hadoop分布式云平台的出现成为解决此类问题的良好 途径,本文将在综述Hadoop核心技术:HDFS和MapReduce基础上,利用VMware虚拟机搭建一个基于Hadoop分布式技术的高效、易扩 展的云数据计算与存储平台,并通过实验验证分布式计算与存储的优势。
1、Hadoop及其相关技术
Hadoop是并行技术、分布式技术和网格计算技术发展的产物,是一种为适应大规模数据计算和存储而发展起来的模型架构。Hadoop是Apache 公司旗下的一个分布式计算和存储的框架平台,能够高效存储大量数据,而且可以编写分布式应用程序来分析计算海量数据。Hadoop可在大量廉价硬件设备集 群中运行程序,为各应用程序提供可靠稳定的接口来构建高扩展性和高可靠行的分布式系统。Hadoop具有成本低廉、可靠性高、容错性高、扩展性强、效率 高、可移植性强、免费开源的优点。
Hadoop集群为典型Master/Slave、结构,基于Hadoop的云计算与存储架构模型如图1所示。
图 1 基于Hadoop的云计算与存储架构模型
1.1 Hadoop分布式文件系统HDFS
HDFS是一个运行在大量廉价硬件之上的分布式文件系统,它是Hadoop平台的底层文件存储系统,主要负责数据的管理和存储,对于大文件的数据访问 具有良好性能。HDFS与传统的分布式文件系统相似,但是也存在着一定的不同,具有硬件故障、大数据集、简单一致性、数据流式访问、移动计算的便捷性等特 点。HDFS的工作流程及架构如图2所示。
图 2 HDFS的工作流程及架构结构
一个HDFS集群中有一个NameNode和多个DataNode。如图2所示,NameNode是中心服务器, 它用来管理文件系统的元数据信息以及客户端对文件的读写访问,维护文件系统树及其子节点下的所有文件和目录。这些信息以编辑日志文件(Editlog)和 命名空间镜像文件(FsImage)的形式保存在磁盘中。NameNode还暂时记录着各个块(Block)所在的DataNode信息。其功能主要有: 管理元数据和文件块;简化元数据更新操作;监听和处理请求。
DataNode通常在集群中一个节点一个,用来存储、检索数据块,响应NameNode下达的创建、复制、删除数据块的命令,并定时向 NameNode发送“心跳”,通过心跳信息向NameNode汇报自己的负载情况,同时通过心跳信息来接受NameNode下达的指令信 息;NameNode通过“心跳”信息来确定DataNode是否失效,它定时ping每个DataNode,如果在规定的时间内没有收到 DataNode的反馈就认为此节点失效,然后对整个系统进行负载调整。在HDFS中,每个文件划分成一个或多个blocks(数据块)分散存储在不同的 DataNode中,DataNode之间进行数据块的相互复制而形成多个备份。
1.2 Map/Reduce编程框架
Map/Reduce是Hadoop用来处理云计算中海量数据的编程框架,简单易用,程序员在不必了解底层实现细节的基础上便可写出程序来处理海量数据。利用Map/Reduce技术可以在数千部服务器上同时开展广告业务和网络搜索等任务,并可以方便地处理TB、PB,甚至是EB级的数据。
Map/Reduce框架由JobTracker和TaskTracker组成。JobTracker只有一个,它是主节点,负责任务的分配和调度, 管理着几个TaskTracker;TaskTracker一个节点一个,用来接受并处理JobTracker发来的任务。
MapReduce针对集群中的大型数据集进行分布式运算,它的整个框架由Map和Reduce函数组成,处理数据时先执行map再执行 reduce。具体执行过程如图3所示。执行map函数前先对输入数据进行分片;然后将不同的片段分配给不同的map执行,map函数处理之后以 (key,value)的形式输出;在进入reduce阶段前,map函数先将原来的(key,value)分成多组中间的键值对再发给一个 reducer进行处理;最后reduce函数合并key相同的value,并输出结果到磁盘上。
图 3 MapReduce计算过程
123下一页