首页 > 代码库 > Hadoop学习笔记_6_分布式文件系统HDFS --NameNode体系结构

Hadoop学习笔记_6_分布式文件系统HDFS --NameNode体系结构

分布式文件系统HDFS

--NameNode体系结构

NameNode

是整个文件系统的管理节点。

它维护着整个文件系统的文件目录树[为了使得检索速度更快,该目录树放在内存中]

文件/目录的元信息和每个文件对应的数据块列表

接收用户的操作请求。

Hadoop确保了NameNode的健壮性,不容易死亡.文件目录树以及文件/目录的元信息等归根到底是存放在硬盘中的,但是在Hadoop运行时,需要将其加载到内存中.

 

文件包括:

fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。

edits:操作日志文件。

fstime:保存最近一次checkpoint的时间

以上这些文件是保存在linux的文件系统中。

 

1.查看hdfs-default.xml文件内容

<property>
  <name>dfs.name.dir</name>
  <value>${hadoop.tmp.dir}/dfs/name</value>
  <description>Determines where on the local filesystem the DFS name node
      should store the name table(fsimage:文件系统镜像)(指定了NameNode在本机中存储name table的位置).其中${hadoop.tmp.dir}会被替换为core-site.xml文件中的一个值,见下, If this is a comma-delimited list
      of directories then the name table is replicated in all of the
      directories, for redundancy.为了数据安全,可以将该值写为一个以逗号分隔的目录列表,指定fsimage的多个存储位置,保证安全,如${hadoop.tmp.dir}/dfs/name,newdir0,newdir1  但并不是在此处进行修改,一定是copy到hdfs-site.xml文件中,并且逗号前后不要加空格,其中这些文件夹越分散越好 </description>
</property>

2.进入core-site.xml

<property>
  <name>hadoop.tmp.dir</name>
  <value>/tmp/hadoop-${user.name}</value>
  <description>A base for other temporary directories.</description>
</property>

3.返回hdfs-default.xml文件

<property>
  <name>dfs.name.edits.dir</name>
  <value>${dfs.name.dir}</value>
  <description>Determines where on the local filesystem the DFS name node
      should store the transaction (edits) file(事务文件,用于保存上传文件事务过程(事务)的文件),具体执行过程请参照Secondary NameNode. If this is a comma-delimited list
      of directories then the transaction file is replicated in all of the 
      directories, for redundancy. Default value is same as dfs.name.dir
  </description>
</property>

 

SecondaryNameNode

执行过程:NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到NameNode,同时重置NameNodeedits.

一旦NameNode中的fsimage数据丢失或损坏,则可以调用SecondaryName中的fsimage备份来恢复,但是这些数据文件并不包含还未合并的.功能类似于Windows下的还原点.

SecondaryNameNode默认在安装在NameNode节点上,但这样不安全!

 

合并原理: