HDFS启动与架构详解

预知

HDFS是被Hadoop应用使用的一个主要的分布式存储文件系统。一个HDFS集群主要由一个NameNode(管理文件系统元数据)和多个DataNode(存储实际的数据)集成。HDFS的架构请参考我的另一篇文章。

HDFS启动过程

NameNode会保存它的命名空间状态信息到本地文件系统。

  • fsimage:保存最后一次执行checkpoint时的命名空间状态信息;
  • etids:日志文件。保存最后一次checkpoint之后的命名空间信息修改变化的日志记录。
  1. 当启动HDFS的时候,会先启动NameNode节点;NameNode从镜像文件(fsimage文件)读取HDFS状态信息;
  2. 接着从日志记录文件(editswenjian )加载状态更新信息;
  3. 然后NameNode节点将HDFS的最新状态写入到fsimage文件(也就是将faimage文件和edits文件合并);
  4. 再重新创建一个新的空的日志文件来记录文件修改等日志记录。
    其中,fsimage文件和edit日志记录文件的位置可以在配置文件hdfs-core.xml中通过dfs.namenode.name.dir参数来指定。

由于NameNode只在启动的时候合并fsimage和edits文件,所以当一个大的集群运行很久之后,edits日志文件就会变得很大,这就会影响在NameNode启动时日志文件的读取速度,从而延长了HDFS的启动时间。这就引出了Secondary NameNode。

特性

Secondary NameNode(在1.0.4版本之后,可由Checkpoint Node替代)

Secondary NameNode会定期的合并fsimage和edits文件,并限制edits日志文件的大小在一定的范围之内。Secondary NameNode通常运行在和NameNode不同的机器上。
Secondary NameNode执行这些操作主要由这两个参数来控制:

  • dfs.namenode.checkpoint.period: 两次连续操作之间的时间间隔,默认1个小时;
  • dfs.namenode.checkpoint.txns: 定义发生在NameNode上的最新事物数,默认一百万个,优先级大于第一个。

Checkpoint Node

Checkpoint Node定期创建命名空间的checkpoint。从NameNode下载fsimage和edits文件到本地进行合并,并上传行的镜像文件给NameNode。Checkpoint Node一般也是运行于一台不同的机器上面,可由命令bin/hdfs namenode -checkpoint启动。Checkpoint node跟Secondary node一样由相同的参数配置控制。

Backup Node

Backup Node除了提供跟Checkpoint Node一样的功能外,它会在内存中运行一个最新的跟NameNode状态同步的内存副本。Backup Node不需要从NameNode下载fsimage和edits日志文件来创建checkpoint(在CheckpointNode和SecondaryNode中可能需要);因为BackupNode总是有一个同NameNode一样的内存副本。NameNode在同一时间只支持一个BackupNode节点;如果有一个BackupNode被使用,那么CheckpointNode是不能够存在的。BackupNode的配置同CheckpointNode一样,他又bin/hdfs namenode -backup命令启动。

机架感知

典型的,一个大的Hadoop集群会被放在一个机群中,在这样的机群中,比起跨机架来说,在相同的机架上网络流量会更好。同时,NameNode也会放置不同的块副本到不同的机架上来增强集群的容错性能。集群管理员可以通过配置变量net.topology.script.file.name来决定节点所属机架的策略。当这个脚本被配置后,每个节点都会运行这个脚本来决定自己所处的机架id。默认所有的节点都属于同一个机架。

安全模式

NameNode启动过程中,加载fsimage和edits文件,然后等待DataNode启动并且向NameNode报告他们的状态;这个时间段之间,NameNode就是出于安全模式。NameNode的安全模式实际就是HDFS处于只读模式,在这个模式下所有的对文件系统的修改操作都不允许。在DataNode已经报告他们的文件块可用之后,NameNode会自动从安全模式下解除。如果有需要,HDFS可以通过bin/hdfs dfsadmin -safemode命令来设置为安全模式状态。

你可能感兴趣的:(HDFS启动与架构详解)