上文我们学习到,Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS,那这个HDFS到底是做什么的,用什么来实现的呢?本文我们来一起学习下!
一、HDFS系统架构
HDFS采用了master/slave的架构,即主从复制机制,其中Master以写为主,Slave以读为主。
要学习HDFS,必须了解如下组件(参照图1):(重点已经标黑,便于记忆和理解)
NameNode:说白了就是负责系统文件的命名和文件和目录维护,以namespcae image和edit log两个文件形式永久保存在本地磁盘上。同时,NameNode也记录数据节点信息,但它并不永久保存块的位置信息,因为这些信息会在系统启动时由数据节点重建。
Secondary NameNode:主要任务是减少NameNode的系统压力,定期合并fsimage和edits日志,并传输给NameNode。同时将文件存储到磁盘上。
DataNode:这个好理解,datanode就是工作节点,实际存数据的节点。并且根据需要存储并检索数据块(受客户端或NameNode调度),并且定期向NameNode发送它们所存储的块的列表。
Client:客户端,通过POSIX的文件系统接口,访问整个文件系统。
二、HDFS系统备份机制
如果Namenode发生故障,怎么办?如图2,为了避免这种事情的发生,NameNode和Secondary NameNode会将元数据和namespace副本,分别存储在不同的文件系统中,用于NameNode不可用或者崩溃后的恢复使用。
三、HDFS系统交互方式
最后,HDFS系统可以FS Shell命令进行操作,大家有兴趣的这部分可以自己学习下。其实大体上的操作和linux的基本操作差不多,平时多注意就行。