关键词:基于hadoop 分布式文件系统;系统模型;云计算
中图分类号:tp311 文献标识码:a 文章编号:1009-3044(2016)17-0229-02
hadoop是apache软件基金会所研发的开放源码并行运算编程工具和分散式档案系统根据google公司发表的mapreduce和google档案系统的论文自行而成。hadoop 主要由hdfs(hadoop distributed file system)和mapreduce两部分组成。hdfs在最底部它主要是用来存储hadoop 集群中存储节点上的文件,为海量的数据提供存储。mapreduce在hdfs 的上一层由概念\"map(映射)\"和\"reduce(归约)\"组成,主要是用于大规模数据集的并行运算,为海量的数据提供了计算。
hadoop对数据采取可靠、高效、可伸缩的分布式方式进行并行处理,使开发软件平台和运行海量数据变得更加容易。hadoop是一个分布式计算框架并且由 apache 开源组织的,能使一些低成本的硬件设备得到充分利用并且在它们组成的集群上运行应用程序,为应用程序提供了一组稳定可靠的接口,目的在于构建可靠性高和扩展性比较好的并行分布式系统。hadoop 有以下优点:扩展性好、成本廉价、效率较高、可靠性有保障、免费开源并且有良好的可移植性。
1 分布式文件系统模型
分布式文件系统作为分布式系统中的关键技术,它最大的作用就是使信息资源共享,它采取以文件的方式把文件集中在一起管理,使文件资源达到共享的目的。在云计算环境中,分布式文件系统和本地磁盘提供的服务相比,它能使用户在查看、保存在云中的文件时能够获得更高的服务质量 ,使系统性更加可靠从而为用户带来良好的文件服务。
用户对远程文件的访问的服务质量能否满足是分布式文件系统的透明性需求的要求。可靠性高、良好的可用性,能够并发快速的访问文件等一些其他的设计要求也要满足,并且使文件得数据具有一致性和容错性等。针对以上的设计要求,设计出由扁平文件服务、目录服务和用户端模块 3部分为主要组成的分布式文件系统服务模型。对服务器磁盘上曾经保存的文件的操作是由扁平文件服务负责,比如查看文件的属性和内容还可以创建新文件删除不用的文件,为每一个创建的新文件创建一个唯一的标示符能保证以后操作时能够引用;文件的名字和与其对应标识符之间的映射关系主要是由目录服务负责,包括创建、查找和删除目录,然后对新生成的目录由扁平文件服务管理,把它也是以文件方式保存在服务器磁盘上;扁平文件服务的封装以及目录服务的访问都需要在客户端上运行的用户模块负责,同时用户模块提供一种调用有关功能的映射:是从用户端本地文件系统的文件操作接口到远程服务器之间。相反扁平文件服务和目录服务也向客户端模块提供一种调用接口:它是一种高效、基于网络通信并且能够组成完备的文件操作集合。 用户端模块与本地文件操作接口接近的方式提供给应用程序的同时将操作接口进行进一步封装,使透明化进一步提高。 2 hdfs分析与建模
当前的hdfs(hadoop distributed file system)架构非常容易实现,因为整个架构集群上只能存在一个namespace并且这个namespace也只能被仅有的一个namenode管理。但是执行起来并不是这么简单,可能在具体实现过程中会导致了一些局限性和模糊点,比如限制
namenode的扩展,当添加机器用水平扩展来解决时却发现集群存储空间不足,所以namespace不可以扩展namenode。集群中数据块,文件和目录的数量也要受到限制,因为namenode在内存中存储了分布式文件系统中的所有元数据信息,但是当前的namespace只能存放在单个namenode上。还有block storage和namespace高耦合性,当前namenode中的namespace和block management的结合使得这两层架构耦合在一起,难以让其他可能namenode实现方案直接使用block storage。 鉴于以上不足,hdfs 的设计与实现更加重注重大量数据在存储和管理上的高可扩展性和高可靠性,hdfs采用主从(master/slave)结构模型,一个hdfs集群是由一个namenode和若干个datanode组成的,多个namenode的配置已经在最新的版本中实现。namenode在hdfs架构中作为主服务器主要负责用户端对文件的访问操作和对文件系统命名空间的管理,存储的数据是由datanode负责管理并且hdfs还支持以文件形式的数据。从内部结构来看,文件把数据分成若干块然后把这若块数据存放在一组的datanode上。如果想查看、修改文件或者目录的名字和关闭保存文件,由文件系统的命名空间发出命令namenode负责执行同时也负责数据块到具体datanode之间的映射。namenode作为所有hdfs元数据的管理者,在namenode的统一调度下,用户在客户端对文件的读写操作和创建、删除和复制数据库相关工作是由datanode负责执行,因此,namenode不在用户数据上经过。用户端负责将要访问得文件的信息其中包含了文件的名字发送给namenode,然后namenode 负责反馈在 datanode 上存储文件数据块位置的相关信息给客户端,最后客户端直接和对应的datanode 建立连接并进行具体的文件操作。namenode定期对datanode监控并负责管理 datanode 提交的已保存文件的数据信息。
根据以上描述的hdfs体系架构中的文件服务模型,就可以建立起hdfs的模型,namenode 负责提供服务器的主要目录服务,包括查看、修改文件或目录的名字和关闭文件等操作以及对文件系统名字的空间操作,同时还需要负责调度 datanode与数据块之间的映射关系。datanode负责提供服务器侧的扁平文件服 务,而处理客户端发来的文件读写请求与执行数据块的创建、删除等操作是由服务器侧的扁平文件服务负责,最后按照 namenode 发出的指令对语言文件进行访问操作。
通过以上可以分析出 hdfs的主要特征:
多种通信机制并存。根据通信对象分为远程过程调用,根据传输内容的不同提供数据流通信方式,提高了访问性能。
一个扁平文件可以支持众多的服务器运行。文件数据块分布广泛并且互为备份,有多个datanode为数据库为此提供服务用户服务得到显著提高,从而保证每个节点级在系统中的高可靠性,普通的pc服务器也可以担当每个节点,有利于降低系统的成本价格。
指定的服务器为目录服务提供服务。namenode可以使系统具有高透明性和高扩展性,因为在用户访问时可以提供统一的文件名字空间使用户访问更加高效,不但提高了对文件元数据的管理,而且还达到了从全局上对系统进行控制的目的。 3 文件系统的比较
nfs的 设计 体 现 了以前主 流 分 布 式 文 件 系 统 的 典 型 特 征 ,而hdfs 则是面向云计算的分布式文件系统的代表,nfs和hdfs 在满足系统需求方面侧重点不同。hdfs具有位置透明性在访问空间时用文本文件名和统一的标示符访进行空间访问,同时具有文件移动透明性因为在namenode节点管理和维护上使用统一的名字空间;在并行访问过程中能让多个文件数据块同时访问,有可靠的访问性能,实现了性能的透明化;在系统的扩展过程中不用通过用户直接根据负载规模增删datanode,实现了扩展透明性;在文件方面很好的保持了文件数据的一致性,在对文件进行修改过程中在文件的一致性协议下通过原子化修改,然后把修改后的文件块自动复制多份并且分别保存在多个datanode上;具有良好的容故障性,
能去除在文件和数据块中的的冗余,pc服务器可以linux系统下作为客户端和服务器,使文件服务有可靠的兼容性;在安全方面,用安全套接字的网络安全机制服务访问,文件的安全得到有效保障。 从以上可以看出,hdfs 具有良好的透明性、可靠的扩展性,很好地满足了系统设计的要求,以这类新型的分布式文件系统为 基 础,将会促进了分布式计算 和 分 布 式 数 据 库 等 重要技术 的 发 展 ,这些技术将会促进云计算的新的发展,所以将会对当今产生巨大影响。 另外,虽然hdfs在当前的面向云计算中有美好的前景或者在相关邻域中已取得了较大的突破,但是它也具有一定的不足和局限,如访问透明性不高,在接口方面没有与传统的posix完全兼容的接口。在访问过程中文件不能的并发的进行更新并且在数据交互中低延时的文件数据不能交互等。 4 结束语
通过以上对hadoop 分布式文件系统的模型分析,可以看出,无论是在服务器侧提供的扁平文件服务和目录服务,还是在用户端运行的用户端模块,hdfs 在设计和实现时都要考虑到如何保存和处理海量数据,并最终设计出高可扩展性、高可靠性、高效性和高容错性等满足需求的系统,并在云计算相关领域的取得非常突出的成绩。 因此,hdfs 一直以来都受到了业界的广泛关注,在未来它将会在更多的领域中扮演幕后英雄,为我们提供更加快捷优质的服务。但是,hdfs 也不是对任何文件系统都是万能的,文件服务的提供者必须根据实际需求选择合适自己的文件系统。
因篇幅问题不能全部显示,请点此查看更多更全内容