Hadoop:详解HDFS启动过程及相关节点工作机制(检查点机制、安全模式)

目录

namenode

HDFS启动流程

检查点机制

secondarynamenode

datanode

安全模式


namenode

Namenode是集群主从结构模型中的唯一的一个管理者,它负责

管理HDFS文件系统的命名空间(namespace):文件系统树及整棵树内的所有文件和目录的元数据,而这些信息以两种文件形式持久化地保存在本地磁盘中;

  • 管理数据块位置信息:命名空间镜像文件(fsimage)
  • 管理着客户端的读写操作:编辑日志文件(editlog)

同时namenode维护了块到datanode的映射,即每个文件各个块所在的数据节点信息,但这些信息保存在内存中,因为系统启动时会根据datanode信息重建映射信息

 

在一个搭建完hadoop分布式系统环境中,master机格式化namenode(hdfs namenode -format)之后,会在${hadoop.tmp.dir}中创建一个dfs目录,该目录下有一个子目录name

    dfs
    └── name
        └── current
            ├── fsimage_0000000000000000000
            ├── fsimage_0000000000000000000.md5
            ├── seen_txid
            └── VERSION

此时seen_txid的值为0,指的是第一个事务id

VERSION文件是一个Java属性文件,其中包含了正在运行的HDFS的版本信息:

namespaceID=993725495
clusterID=CID-22525aba-a03e-4ad4-9440-71f76baf37f6
cTime=0
storageType=NAME_NODE
blockpoolID=BP-163740078-192.168.80.120-1554104956001
layoutVersion=-63
  • namespaceID:文件系统命名空间的唯一标识符,是在namenode首次格式化时创建的
  • clusterID:将HDFS集群作为一个整体赋予的唯一标识符
  • cTime:标记了namenode存储系统的创建时间,对于刚格式化的存储系统此属性为0,文件系统升级后会更新到新的时间戳
  • storageType:说明了该存储目录包含的数据结构
  • blockpoolID:数据块池的唯一标识符,数据块池中包含了由一个namenode管理的命名空间中的所有文件
  • layoutVersion:描述HDFS持久性数据结构(布局)的版本,此版本号与Hadoop发布包的版本号无关;只要布局发生变化,版本号就会递减,此时HDFS也需要升级,因为磁盘仍然使用旧版本的布局会导致新版本的namenode,datanode无法正常工作。

此时只有镜像文件而无编辑日志文件,可以通过以下命令下载fsimage文件转化为xml格式到本地并查看:

[jinge@master1 current]$ hdfs oiv -i fsimage_0000000000000000000 -o fi0.xml -p XML

选项解析:

-i,--inputFile <arg>:要处理的镜像文件
-o,--outputFile <arg>:输出文件的名称;如果指定的文件存在,它将被覆盖
-p,--processor <arg>:选择要应用于镜像文件的处理器类型 (XML|FileDistribution|Web|Delimited)

oiv中的i指定了image文件,如果下载编辑日志文件使用oev

fsimage保存了最新的元数据检查点,包含了整个HDFS文件系统的所有目录和文件的信息。对于文件来说包括了数据块描述信息、修改时间、访问时间等;对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)等

fsimage_0000000000000000000:

<fsimage>
	<NameSection>
        <!-- 默认的开启编号-->
		<genstampV1>1000</genstampV1>
        <!-- 最后一个块的编号-->
		<genstampV2>1000</genstampV2>
		<genstampV1Limit>0</genstampV1Limit>
        <!-- 最后一个分配的块的块id-->
		<lastAllocatedBlockId>1073741824</lastAllocatedBlockId>
		<!-- 开始的事务id号-->
        <txid>0</txid>
	</NameSection>
	<INodeSection>
        <!-- 最后一个文件(目录)的inode号-->
		<lastInodeId>16385</lastInodeId>
		<!--当前文件系统中只有根目录,以下为根目录的相关信息-->
        <inode>
			<id>16385</id>
			<type>DIRECTORY</type>
			<name></name>
			<mtime>0</mtime>
			<permission>jinge:supergroup:rwxr-xr-x</permission>
			<nsquota>9223372036854775807</nsquota>
			<dsquota>-1</dsquota>
		</inode>
	</INodeSection>
	<INodeReferenceSection></INodeReferenceSection>
	<SnapshotSection>
		<snapshotCounter>0</snapshotCounter>
	</SnapshotSection>
	<INodeDirectorySection></INodeDirectorySection>
	<FileUnderConstructionSection></FileUnderConstructionSection>
	<SnapshotDiffSection>
		<diff>
			<inodeid>16385</inodeid>
		</diff>
	</SnapshotDiffSection>
	<SecretManagerSection>
		<currentId>0</currentId>
		<tokenSequenceNumber>0</tokenSequenceNumber>
	</SecretManagerSection>
	<CacheManagerSection>
		<nextDirectiveId>1</nextDirectiveId>
	</CacheManagerSection>
</fsimage>
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值