zoukankan      html  css  js  c++  java
  • NameNode&Secondary NameNode 工作机制

    NameNode&Secondary NameNode 工作机制

    工作机制gif图

    NameNode:
    	1.启动时,加载编辑日志和镜像文件到内存
    	2.当客户端对元数据进行增删改,请求NameNode
    	3.NameNode记录操作日志,更新滚动日志
    	4.日志记录完成,在NameNode内存中对元数据进行操作
    	edits.001 操作日志
    	edits.002
    	edits.inprogress 正在进行的操作日志
    	fsimage	镜像文件
    SecondaryNameNode:(其主要作用就是:合并edit和fsimage)
    	0.检查点(checkpoint)触发。条件是:
    		a.定时时间到(默认一个小时)
    		b.操作日志中的数据满了(100w次操作)
    	1.请求NameNode是否需要CheckPoint,直接带回 NameNode是否检查结果
    	2.执行CheckPoint请求
    	3.滚动正在写的操作日志,生成最新的一个操作日志
    	4.将操作日志和之前旧的镜像fsimage文件拷贝到SecondaryNameNode
    	5.在SecondaryNameNode内存中合并日志文件和fsimage文件
    	6.生成新的fsimage.chkpoint
    	7.将fsimage.chkpoint拷贝到NameNode中
    	8.重命名fsimage.chkpoint为fsimage
    

    日志文件

    目录结构:

    $HADOOP_HOME/data/tmp/dfs/name/current
    $HADOOP_DATA_HOME/tmp/dfs/name/current
    
    
    edits_0000000000000000000
    fsimage_0000000000000000000.md5
    seen_txid
    VERSION
    
    
    1.fsimage:
    	HDFS 文件系统元数据的一个永久性的检查点,其中包含 HDFS文件系统的所有目录和文件 idnode 的序列化信息
    2.edits:
    	存放 HDFS 文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到 edits 文件中。
    3.seen_txid:
    	文件保存的是一个数字,就是最后一个 edits_的数字
    
    	每次 Namenode 启动的时候都会将 fsimage 文件读入内存,
    	并从 00001 开始到 seen_txid 中记录的数字依次执行每个 edits 里面的更新操作,
    	保证内存中的元数据信息是最新的、同步的,可以看成 Namenode 启动的时候就将 fsimage 和 edits 文件进行了合并。
    

    查看fsimage文件和edits文件

    oiv 查看 fsimage 文件
    	hdfs oiv -p 文件类型 -i 镜像文件 -o 转换后文件输出路径
    	hdfs oiv -p XML -i fsimage_0000000000000000025 -o  /opt/module/hadoop-2.7.2/fsimage.xml
    
    oev 查看 edits 文件
    	hdfs oev -p 文件类型 -i 编辑日志 -o 转换后文件输出路径
    	hdfs  oev  -p  XML  -i edits_0000000000000000012-0000000000000000013 -o /opt/module/hadoop-2.7.2/edits.xml
    

    chkpoint 检查 时间 参数 设置

    hdfs-default.xml

    <!-- 默认:SecondaryNameNode 每隔一小时执行一次 -->
    	<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>
    

    NameNode多目录配置

    NameNode 的本地目录可以配置成多个,且每个目录存放内容相同,增加了可靠性。
    配置步骤:
    
    (1)在 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>
    
    (2)停止集群,删除 data 和 logs 中所有数据
    	$ rm -rf data/ logs/
    (3)格式化集群并启动。
    	$ bin/hdfs namenode –format
    	$ sbin/start-dfs.sh
    

     

  • 相关阅读:
    Vijos / 题库 / 输油管道问题
    军事机密(Secret.pas)
    1164 统计数字
    1142 奖学金 sort做法
    1487 大批整数排序
    1487 大批整数排序
    1545 最简单排序
    1470 数列处理
    1683 车厢重组
    spin.js无图片实现loading进度条,支持但非依赖jquery
  • 原文地址:https://www.cnblogs.com/deityjian/p/12306793.html
Copyright © 2011-2022 走看看