Hadoop分布式文件系统(HDFS)是为了存储海量数据,并为分布在网络中的大量客户端提供数据访问。
能够保存的数量在TB或者PB级,将数据散布在大量机器上,并且可靠地存储数据,使用数据复制方法。
高速流式读取,顺序读取,避免查找。
是一种块结构的文件系统。单个文件被拆分成固定大小的块,而这些块号村在HADOOP集群上。一个文件可以由多个块组成,这些块存储在不同的DataNode上。
NAMENODE将整个集群文件系统的所有元数据保存在内存中。
HDFS块默认的大小是64MB
HDFS文件组织的缺点是一个文件需要多个DataNode来提供服务,这意味着如果这些机器中任何一台失效的话,该文件就变得不可用。为了避免此问题,HDFS在多台机器上对该块进行复制。
HDFS中数据复制的实现是写操作的一部分,采用数据管道的形式。
客户端向HDFS文件写入数据--->本地文件---->累积到一整块-----> 请求NameNode保存块副本的DataNode列表----->以4KB数据块从本地写入首个DataNode---->写下个DataNode--->最后一个DataNode
如果某个DataNode失效,它将被从管道中移除,当前块写操作完成后,NameNode会重新复制该块,以补偿由于DataNode失效而造成的副本缺失。
NameNode 会周期性接收来自每个DataNode的心跳和块报告。心跳用于确保DataNode功能正常,而块报告可以验证DataNode上的块列表和NameNode中的信息是否一致。
HDFS数据复制的最重要特性叫做机架感知。