HDFS知识点

DataNode包含了两部分内容:
首先是存储的数据本身;然后是数据的元数据信息(元数据包括了数据块的长度、时间戳、块数据的校验和)!
NameNode主要是用来存储数据的元数据信息(元数据包括了数据的文件目录结构、文件名、文件属性(包括文件生成时间、副本数、以及文件权限)、以及文件对应的块列表和每个块所在的位置信息等)
其中,
文件在集群中一共存储三份!
NameNode和DataNode之间是通过心跳机制进行通信的,时间间隔一般是三秒钟,如果时间超过10min,NameNode还没有接收到DataNode发送过来的心跳,那就说明DataNode宕机或出现其它故障了;
DataNode在启动后会向NameNode中进行注册,此后,会定期的(1个小时)向NameNode汇报返回存储的块的信息!
集群的扩展策略:
在namenode所在的服务器上有一个slaves目录,在其中加入对应的新的服务器IP,然后在新的服务器上面启动相应的服务即可!
文件损坏的处理策略:
首先客户端从DataNode上面读取文件,DataNode会计算所有块数据的校验和checksum,如果校验和与DataNode保存的校验和信息不一致,说明该block已经被损坏。
这个时候客户端会从其它DataNode上面读取相应的块block;
而NameNode会标记该block损坏,并将其删除,然后会复制新的与之一致的block到集群设置的最大副本数。
DataNode会在文件创建后三周进行checksum计算。
NameNode的启动过程
在NameNode中有两个非常重要的文件,分别是fsimage和edits
其中fsimage是HDFS文件系统中存储在硬盘上的元数据检查点,它记录了集群到最后一次自检查点之前HDFS文件系统中所有目录和文件的序列化信息;edits则保存的是到最后一次自检查点之后对HDFS文件系统进行的所有操作,如:增、删、重命名
下面就NameNode的启动过程对其进行分析:
一:集群首次配置好
首先会使用format命令对HDFS系统进行格式化,格式化的目的就是生成fsimage;
然后启动NameNode,这个时候NameNode会读取fsimage;
再启动DataNode,DataNode向NameNode进行注册;
此后,客户端对文件系统进行的一系列增删、重命名文件的操作都会生成一个edits文件,记录这些操作
二:集群下一次启动
首先NameNode会读取其fsimage和edits;
然后生成新的fsimage(两者进行合并,合并工作由SecondaryNameNode定期完成,如下图),以更新hdfs文件系统至最新,并创建一个空的edits文件;
再然后启动DataNode,DataNode向NameNode进行注册;
此后,客户端对文件系统进行的一系列增删、重命名文件的操作都在之前生成的edits文件中追加记录,记录这些操作 HDFS知识点_第1张图片
在这里需要注意一点的是safemode(安全模式)
在NameNode启动之后会进入到安全模式,安全模式是用于等待DataNode向NameNode发送块报告信息。直到NameNode接收到的块的数量与当前hdfs文件系统中总的块的数量之比大于等于99.9%,再经过30秒时间的稳定期(目的是稳定操作系统),才会离开安全模式。下图是webui上面显示的信息,分别正确的说明了这一点。
HDFS知识点_第2张图片
此外,NameNode处于安全期的时候,客户端可以查看文件系统的文件,但是不能够进行改变文件系统的命名空间的相关操作,如:创建文件夹、上传文件、删除文件、重命名文件等




你可能感兴趣的:(hadoop知识点)