Hadoop(七)——hadoop之NameNode工作机制

一、NameNode&Secondary NameNode工作机制
  1. NameNode工作机制分为二个阶段
  • 第一个阶段:NameNode的启动
    • (1)第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
    • (2) 客户端对元数据进行增删改的请求
    • (3) namenode记录操作日志,更新滚动日志
    • (4) namenode在内存中对数据进行增删改查
  • 第二阶段:Secondary NameNode工作
    • (1)Secondary NameNode询问namenode是否需要checkpoint。直接带回namenode是否检查结果。
    • (2) Secondary NameNode请求执行checkpoint。
    • (3) namenode滚动正在写的edits日志
    • (4)将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode
    • (5) Secondary NameNode加载编辑日志和镜像文件到内存,并合并。
    • (6) 生成新的镜像文件fsimage.chkpoint
    • (7) 拷贝fsimage.chkpoint到namenode
    • (8) namenode将fsimage.chkpoint重新命名成fsimage
  1. NameNode的第一第二阶段的操作流程图
二、chkpoint检查时间参数设置
  1. 默认的配置中SecondaryNameNode的chkpoint检查次数是每1个小时检查一次,或者当操作数达到100W次时检查一次;
  • (1)hdfs-default.xml
    	// 每隔一小时执行一次
    	<property>
    	  <name>dfs.namenode.checkpoint.period</name>
    	  <value>3600</value>
    	</property>
    	// 一分钟检查一次操作次数,当操作次数达到1百万时,SecondaryNameNode执行一次。
    	<property>
    	  <name>dfs.namenode.checkpoint.txns</name>
    	  <value>1000000</value>
    	<description>操作动作次数</description>
    	</property>
    	<property>
    	  <name>dfs.namenode.checkpoint.check.period</name>
    	  <value>60</value>
    	<description> 1分钟检查一次操作次数</description>
    	</property>
    
  • (2)当我们需要修改chkpoint的次数时,之需要在hdfs-site.xml,修改以上参数即可
三、镜像文件和编辑日志文件
  1. 当我们第一次执行hdfs namenode -format(格式化namenode)后,在/home/hadoop/module/hadoop-2.4.0/data/tmp/dfs/name/current 目录下就会有如下文件
    	edits_0000000000000000000
    	fsimage_0000000000000000000.md5
    	seen_txid
    	VERSION
    
    • Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件idnode的序列化信息。
    • Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中。
    • seen_txid文件保存的是一个数字,就是最后一个edits_的数字
    • 每次Namenode启动的时候都会将fsimage文件读入内存,并从00001开始到seen_txid中记录的数字依次执行每个edits里面的更新操作,保证内存中的元数据信息是最新的、同步的,可以看成Namenode启动的时候就将fsimage和edits文件进行了合并。
  2. oiv查看fsimage文件
    • 基本语法:hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径
    • 案例
  3. oev查看edits文件
    • 基本语法:hdfs oev -p 文件类型 -i编辑日志 -o 转换后文件输出路径
    • 案例:
四、滚动编辑日志

正常情况HDFS文件系统有更新操作时,就会滚动编辑日志。也可以用命令强制滚动编辑日志。

  1. 滚动编辑日志(前提必须启动集群):hdfs dfsadmin -rollEdits
  2. 镜像文件什么时候产生:Namenode启动时加载镜像文件和编辑日志
五、namenode版本号

六、SecondaryNameNode目录结构
  1. SecondaryNameNode的目录结构和NameNode的目录结构完全相同,在主namenode发生故障时(假设没有及时备份数据),可以从SecondaryNameNode恢复数据。
  2. 恢复数据的方法:
  • 方法一:将SecondaryNameNode中数据拷贝到namenode存储数据的目录;
  • 方法二:使用-importCheckpoint选项启动namenode守护进程,从而将SecondaryNameNode用作新的主namenode。
    • hdfs namenode -importCheckpoint
七、集群安全模式操作

Namenode启动时,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。一旦在内存中成功建立文件系统元数据的映像,则创建一个新的fsimage文件和一个空的编辑日志。此时,namenode开始监听datanode请求。但是此刻,namenode运行在安全模式,即namenode的文件系统对于客户端来说是只读的。

  • hdfs dfsadmin -safemode get (功能描述:查看安全模式状态)
  • hdfs dfsadmin -safemode enter (功能描述:进入安全模式状态)
  • hdfs dfsadmin -safemode leave (功能描述:离开安全模式状态)
  • hdfs dfsadmin -safemode wait (功能描述:等待安全模式状态)
八、Namenode多目录配置

namenode的本地目录可以配置成多个,且每个目录存放内容相同,增加了可靠性。 具体配置如下:

//hdfs-site.xml
<property>
	<name>dfs.namenode.name.dir</name>
	<value>file:///${hadoop.tmp.dir}/dfs/name1,file:///${hadoop.tmp.dir}/dfs/name2</value>
</property>

转载于:https://my.oschina.net/ittzg/blog/3065757

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值