1.概念

当数据集大小超过一台独立物理计算机的存储能力时,需要分区(partition)并存储到若干台独立计算机上。
管理网络中跨多台计算机存储的文件系统被称为分布式文件系统。
该系统构架于网络之上,会引入网络编程的复杂性。

HDFS为高数据吞吐量应用优化,会提高时间延迟作为代价。低延迟访问需求,使用HBase。一次写入,多次读取。

HDFS只支持单个写入者,通常“只添加”方式在末尾写数据,不支持任意位置的修改。

2.HDFS概念

HDFS中小于一个块大小的文件不会占据整个块的空间。
大?为了最小化寻址开销,传输一个由多个块组成的大文件时间取决于磁盘传输速率。寻址时间10ms,传输速率100MB/s,寻址时间要占传输时间的1%则块大小为100MB。

小?map一次处理一个块中的数据,如果任务数太少运行速度会慢。

3.namenode

管理节点:管理文件系统的命名空间。维护文件系统及树内所有文件和目录。信息以:命名空间镜像文件和编辑日志文件永久保存在本地磁盘上,同时记录每个文件中各个块所在的数据节点信息。
不永久保存块的位置信息,因为系统启动会根据数据节点重建。

没有namenode所有文件将丢失,因此两种容错机制:
(1)备份,一般是即写入本地磁盘又写入远程挂载的网络文件系统(NFS)
(2)辅助namenode,作用是定期合并编辑日志和命名空间镜像,防止编辑日志过大,一般在另一台计算机上运行。当namenode发生故障时启动,但保存状态滞后于主节点,数据缺失部分,一般把NFS的数据复制到辅助namenode。

4.datanode

工作节点:根据需求存储并检索数据块,定期向namenode发送所存储的块的列表。
访问频繁的文件其对应的块可能会被缓存在datanode的内存中,称为块缓存。一个块仅缓存在一个datanode的内存中。通过在缓存池(cache pool)增加cache directive来告诉namenode缓存哪些文件以及存多久。