一 基本概念:
管理网络中跨多台计算机存储的文件系统成为分布式文件系统。
HDFS是Hadoop的旗舰级文件系统。
优点:
HFDS以流式数据访问模式来存储超大文件,运行于商用硬件集群上。
构建思路:一次写入、多次读取是最高效的访问模式。
HDFS遇到节点故障时被设计成能够继续运行且不让用户察觉到明显的中断。
缺点:
不适合合低时间延迟的数据访问:
hdfs是为高数据吞吐量应用优化的,可能会以高时间延迟为代价。
不适合大量小文件:
由于namenode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限与namenode的内存总量。
不适合多用户写入,任意修改文件:
hdfs中的文件可能只有一个writer,而且写操作总是将数据添加到文件的末尾。
二 HDFS
(1)数据块:
HDFS的文件系统块的默认大小为64MB,HDFS上的文件被划分为块大小的多个分块,作为独立的存储单元。
HDFS数据块如此大的目的:最小化寻址开销。如果块设置的足够大,从磁盘传输数据的时间可以明显大于定位这个块的时间。这样传输一个由多个块组成的文件的时间取决于磁盘传输效率。
但不应该设置的过大,因为MapReduce中的map任务通常一次处理一个块中的数据,因此如果任务数过少(少于集群中节点的数量),作业的运行速度就回比较慢。
HDFS中fsck命令可以显式块的信息。
对分布式文件系统中的块进行抽象的好处:
*一个文件的大小可以大于网络中任意一个磁盘的容量。文件的所有块并不需要存储在同一个磁盘上,因此它们可以利用集群上的任意一个磁盘进行存储。
*使用块抽象而非整个文件作为存储单元,大大简化了子系统的设计。
*块非常适合于数据备份进而提供数据容错能力和可用性。
(2)NameNode和DataNode
HDFS集群有两类节点,并以管理者-工作者模式运行,即一个namenode(管理者)和多个datanode(工作者)。
*Namenode
namenode管理文件系统的命名空间,维护着文件系统树及整棵树内所有的文件和目录,这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件和编辑日志文件。
namenode还记录这每个文件中各个块所在的数据节点信息,但它并不永久保存块的位置信息,因为这些信息会在系统启动时由数据节点重建。
没有namenode,文件系统将无法使用。如果运行namenode服务的机器毁坏,文件系统上所有的文件都将丢失。因此对namenode进行容错非常重要,hadoop提供了两种机制:
第一种:备份那些组成文件系统元数据持久状态的文件。
第二种:运行一个辅助的namenode,重要作用是定期通过编辑日志合并命名空间镜像,以防止编辑日志过大,并在namenode发生故障时启用。
*DataNode
datanode是文件系统工作的节点,它们根据需要存储和检索数据块(受客户端或namenode调度),并定期向namenode发送它们所存储的块的列表。

本文详细介绍了HDFS分布式文件系统的基本概念、优点、缺点、数据块的组织方式、NameNode和DataNode的工作原理,以及如何利用块抽象提高文件系统性能。
1918

被折叠的 条评论
为什么被折叠?



