- 1、本文档共50页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 Hadoop分布式文件系统;3.1 HDFS的概述;HDFS首先把大数据文件切分成若干个更小的数据块,再把这些数据块分别写入到不同节点之中。
每一个负责保存文件数据的节点,称为数据结点(DataNode)。
当用户需要访问文件时,为了保证能够读取到每一个数据块,HDFS使用集群中的一个节点专门用来保存文件的属性信息,包括文件名、所在目录以及每一个数据块的存储位置等,该节点称为元数据节点(NameNode)。
这样,客户端通过NameNode节点可获得数据块的位置,直接访问DataNode即可获得数据。;1. 数据块
HDFS被设计成支持大文件存储,适用HDFS的是那些需要处理大规模的数据集的应用。这些应用都是只写入数据一次,但却读取一次或多次,并且读取速度应能满足流式读取的需要。HDFS支持文件的“一次写入多次读取”模型。默认的数据块大小是128MB(注意,在Hadoop-2.2版本之前,默认为64MB)。因而,HDFS中的文件总是按照128MB被切分成不同的数据块,每个数据块尽可能地存储于不同的DataNode中。不同于普通文件系统的是,当文件长度小于一个数据块的大小时,该文件是不会占用整个数据块的存储空间。;2. 元数据节点(NameNode)
元数据节点的作用是管理分布文件系统的命名空间,并将所有的文件和目录的元数据保存到Linux本地文件系统的目录(由dfs.namenode.name.dir参数指定)之中,如图所示。;这些信息采用文件命名空间镜像(namespace image)及编辑日志(edit Log)方式进行保存。此外,NameNode节点还保存了一个文件,该文件信息中包括哪些数据块以及这些数据块分布在哪些DataNode之中。但这些信息并不永久存储于本地文件系统,而是在NameNode启动时从各个DataNode收集而成。
;这些信息采用文件命名空间镜像(namespace image)及编辑日志(edit Log)方式进行保存。此外,NameNode节点还保存了一个文件,该文件信息中包括哪些数据块以及这些数据块分布在哪些DataNode之中。但这些信息并不永久存储于本地文件系统,而是在NameNode启动时从各个DataNode收集而成。
;3. 数据节点(DataNode)
数据节点的作用是保存HDFS文件的数据内容。在客户端向HDFS写入文件时,大数据文件将被切分为多个数据块,为了保证HDFS的高吞吐量,NameNode将这些数据块的存储任务指派给不同的DataNode。每一个DataNode在授受任务之后直接从客户端接收数据,经加密后写入到Linux本地系统的相应目录(由dfs.datanode.data.dir参数指定)之中。
;4. 辅助元数据节点(Secondary NameNode)
辅助元数据节点的作用是周期性地将元数据节点的镜像文件fsimage和日志文件edits合并,以防日志文件过大。合并之后,fsimage文件也在辅助元数据节点保存一份,以便在元数据节点中的镜像文件失败时可以恢复。因此,请读者注意,Secondary NameNode并不是NameNode出现问题时的备用节点。
;5. 文件系统的命名空间
HDFS支持传统的文件目录结构。用户或程序可以创建目录,并在目录中存储文件。整个文件系统的命名空间的结构与普通文件系统类似,有根目录、一级目录、二级目录之分。用户可以创建、删除文件,把文件从一个目录移动到另一个目录,或者重命名文件。不同于传统文件系统的是,HDFS目前还不支持用户配额和访问权限控制,也不支持Linux系统中的硬连接和软连接。;HDFS的主要优点有:
(1) 支持超大文件的存储。这里的超大文件通常是指数据规模在TB量级以上的文件。在实际应用中,HDFS已经能用来存储管理PB级的数据。
(2) 支持流式的访问数据。HDFS的设计建立在“一次写入、多次读写”的基础上,它将数据写入严格限制为一次只能写入一个数据,字节总是被附加到一个字节流的末尾,字节流总是以写入顺序先后存储。
(3) 运行于廉价的商用机器集群上。Hadoop设计的目标就是要能在低廉的商用硬件环境中运行,无需在昂贵的高可用性机器上,这样可以降低成本。;3.2 HDFS的体系结构;3.2.2 HDFS的结构模型;3.2.2 HDFS的结构模型;假设客户端Client要读某个文件,首先客户端向NameNode发送数据读操作请求,并通过NameNode获得组成该文件的数据块的位置列表,即知道每个数据块存储在哪些机架(Rack)的哪些DataNode之中;然后客户端直接从这些DataNode读取文件数据。在读数据过程中,NameNode不参与文件的传输。
同样,当客户端需要写入一个文件时,首先向NameN
文档评论(0)