《Hadoop权威指南》笔记 第三章 HDFS

   

Hadoop是一次写入, 多次读取,因为这种被认为是最高效的访问模式.

   

HDFS为高数据吞吐量优化, 高时间延迟. 对于低延迟, HBase是更好的选择.

   

大量的小文件不适合HDFS: namenode将文件系统的元数据存储在内存中,包括文件,目录,数据块的存储信息,如果有大量的小文件,那么这些存储信息占了很大的内存,NameNode有可能没有这么大的内存来装这么多的信息

   

不支持多用户写入, 任意修改文件: HDFS中的文件可能只有一个writer, 且写操作总是append到末尾.

   

   

   

   

   

数据块(block)

   

文件在HDFS上以数据块(block)为单位来存储,每个数据块默认为64MB大小,很多情况下设置成128MB.

   

之所以块如此之大, 是为了最小化寻址开销.

   

   

显示块信息:

   

% hadoop fsck / -files -blocks

   

HDFS集群上两类节:namenodedatanode

   

管理者-工作者模式, 一个namenode(管理者)多个datanode(工作者).

   

namenode管理文件系统的命名空间, 维护文件系统树及整棵树内的所有文件和目录:


namenode
也记录每个文件中各个块所在的数据节点信息, 不存储真正的文件数据,

不永久保存块的位置信息, 位置信息会在系统启动是由数据节点重建.

   

datanode是工作节点. 存储数据并检索数据块, 定期像namenode发送它们所存储块的列表.

   

namenod的容错非常重要.

   

   

   

备份组成文件系统元数据持久状态的文件.写入NFS网络文件系统中。 原子操作.

   

辅助namenode, 不是namenode. 定义通过编辑日志合并命名空间镜像, 防止编辑日志过大. 保存状态滞后于主节点. 所以, 若主节点全部失效, 一般把namenode元数据全部复制到辅助namenode, 作为新的namenode运行.

   

DataNode存储数据

   

假设,我们需要在HDFS上存储一个133MB的文件,按它的大小,会被分成三个数据块(64+64+3)

   

NameNode将这三个块分散到DataNode上,并把映射信息记录下来

   

   

   

   

posted @ 2015-04-05 17:13  keedor  阅读(259)  评论(0编辑  收藏  举报