Hadoop之HDFS
Last updated
Last updated
HDFS是Hadoop的分布式文件系统。它的结构如下:
它的主要组成如下:
Block数据块:Block数据块是HDFS的基本存储单位,一般大小为64M,一个文件会被拆分成一个个的块,然后存储在不同的机器,如果一个文件少于一个Block块的大小,那么实际占用空间为其文件的大小,每个块会被复制到多台机器,默认复制3份。
NameNode:存储文件的metadata元数据,运行时所有数据保存到内存。一个Block在NameNode中对应一条记录。数据会定时保存到本地磁盘,但不保存Block的位置信息,NameNode失效会导致整个HDFS失效。
Secondary NameNode:定时与NameNode同步。
DataNode:保存具体的Block数据,负责数据的读写操作和复制操作,DataNode启动时会向NameNode报告当前存储的数据块信息,后续也会定时报告修改信息。DataNode之间会进行通信,复制数据块,保证数据的冗余性。
Client向NameNode发起文件写入的请求
NameNode根据文件大小和文件块配置情况,返回给Client所管理的DataNode的信息。
Client将文件划分为多个Block,根据DataNode的地址信息,按顺序将其写入到每一个DataNode块中。
Client向NameNode发起文件读取的请求。
NameNode返回文件存储的DataNode信息。
Client读取文件信息。
NameNode发现部分文件的Block不符合最小复制数这一要求或部分DataNode失效。
通知DataNode相互复制Block。
DataNode开始直接相互复制。