1. HDFS最初作为Apache Nutch搜索引擎的基础而生,被设计为可在廉价硬件设备上运行的具有高容错性的分布式文件系统。
2. 主要设计目标是大吞吐量而非低延迟性,为此放松了一些POSIX协议的要求。
3. HDFS支持超大文件,典型文件通常是GB级的。HDFS的文件是一次写入多次读取模式。
4. HDFS将文件存储为一系列的文件块,每个块大小都是一样的(除最后一个未满的)。一个标准的数据块是64MB。
5. HDFS支持传统的级联文件组织方式,但目前尚不支持用户配额或访问权限,不支持软硬链接。
6. 在NameNode主要通过EditLog和FsImage两个本地OS文件来维护整个namespace。
    系统运行中,整个文件系统的任何改变(metadata)都被实时地记录在EditLog文件中。而FsImage文件则无变化。
    系统再次启动时,首先从FsImage中读取上次启动后保存的映射信息,并将EditLog中记录变化信息更新至FsImage并保存,最后清空Editlog文件。
7. 对不同文件,可以在创建的时候设定不同的块的大小和复制率,也可以在随后更改。设定改变或遇到DataNode故障时将自动启动块的再平衡过程。
8. 通常在第一个数据块所在的机架的其他机器中有一个复制块,在其他机架中保存另一个复制块。
9. 系统启动时,NameNode首先进入安全模式,接受并检查从各个DataNode发来的HeartBeat和Blockreport,检查过后退出该模式后才会发生数据块复制。
10. 创建文件时会生成一个校验码,再次获取数据时将校验码进行比对,如果不完整将从其他复制块中从新请求数据。
11. 从客户端创建一个文件过程中,当不满一个数据块时会首先写入客户端的缓存中。文件大小超过块大小后,才会在HDFS系统中被分配一个块位置。
并且,文件传送过程以pipeling的方式进行,即一个数据块在接受数据的同时也向下一个复制块传送数据。
12. HDFS上的文件被删除后,会被改名被转移到/trash文件夹下,保存一定时间后(默认6小时)才被删除。所以删除一个文件后并不会马上空出相应的容量。
当然仍然保留在/trash中被删除的文件也可以迅速地被恢复。

 

posted on 2014-04-21 19:04  risan  阅读(284)  评论(0编辑  收藏  举报