Hadoop之HDFS

简介

HDFS是Hadoop的分布式文件系统。它的结构如下:

它的主要组成如下:

  • Block数据块:Block数据块是HDFS的基本存储单位,一般大小为64M,一个文件会被拆分成一个个的块,然后存储在不同的机器,如果一个文件少于一个Block块的大小,那么实际占用空间为其文件的大小,每个块会被复制到多台机器,默认复制3份。

  • NameNode:存储文件的metadata元数据,运行时所有数据保存到内存。一个Block在NameNode中对应一条记录。数据会定时保存到本地磁盘,但不保存Block的位置信息,NameNode失效会导致整个HDFS失效。

  • Secondary NameNode:定时与NameNode同步。

  • DataNode:保存具体的Block数据,负责数据的读写操作和复制操作,DataNode启动时会向NameNode报告当前存储的数据块信息,后续也会定时报告修改信息。DataNode之间会进行通信,复制数据块,保证数据的冗余性。

HDFS的基本操作

写操作

  1. Client向NameNode发起文件写入的请求

  2. NameNode根据文件大小和文件块配置情况,返回给Client所管理的DataNode的信息。

  3. Client将文件划分为多个Block,根据DataNode的地址信息,按顺序将其写入到每一个DataNode块中。

读操作

  1. Client向NameNode发起文件读取的请求。

  2. NameNode返回文件存储的DataNode信息。

  3. Client读取文件信息。

文件块Block复制

  1. NameNode发现部分文件的Block不符合最小复制数这一要求或部分DataNode失效。

  2. 通知DataNode相互复制Block。

  3. DataNode开始直接相互复制。

Last updated