注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mmicky 的博客

追逐刹那的惊艳

 
 
 

日志

 
 

实验之namenode checkpoint测试  

2013-08-08 09:26:31|  分类: hadoop1 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1:namenode  checkpoint 原理

理解这两个概念,对于理解Hadoop中namenode 和 Secondary Namenode如何工作很重要:

  • fsimage:文件是文件系统元数据的一个永久性检查点,包含文件系统中的所有目录和文件idnode的序列化信息。
  • edits:文件系统的写操作首先把它记录在edit中

将文件系统的元数据操作分开操作,是为了提升内存的处理效率。如果不分开处理,即所有的写操作均记录在一个文件中,比如,fsimage中,那么每个操作都会对这个文件进行修改,因为这个文件可能会很大,所以每次进行写操作的时候就会很慢,随着fsimage越来越大,速度便会越来越低。

Hadoop的解决方案是辅助Namenode节点,文件系统的写操作不是直接被修改到fsimage中,而是edits中,辅助Namenode节点负责将两者在自己的内存中整合然后进行相应的替换操作,这样会频繁的对edits进行修改而不是fsimage,而edits文件的大小是可以接受的,而且大小也不会不断增加。具体的checkpoint执行过程如下:

  1. 辅助Namenode请求主Namenode停止使用edits文件,暂时将新的写操作记录到一个新文件中,如edits.new。
  2. 辅助Namenode节点从主Namenode节点获取fsimage和edits文件(采用HTTP GET)
  3. 辅助Namenode将fsimage文件载入到内存,逐一执行edits文件中的操作,创建新的fsimage文件
  4. 辅助Namenode将新的fsimage文件发送回主Namenode(使用HTTP POST)
  5. 主Namenode节点将从辅助Namenode节点接收的fsimage文件替换旧的fsimage文件,用步骤1产生的edits.new文件替换旧的edits文件(即改名)。同时更新fstime文件来记录检查点执行的时间

hadoop 中和checkpoint相关的参数:

  • fs.checkpoint.period:定义name备份的备份间隔时间,秒为单位,只对snn生效,默认一小时,位于core-site.xml。
  • fs.checkpoint.size:以日志大小间隔做备份间隔,只对snn生效,默认64M ,位于core-site.xml。
  • dfs.http.address: NN的tracker页面监听地址和端口,配置成IP:port以便SNN访问NN,位于hdfs-site.xml。
  • dfs.secondary.http.address: SNN的tracker页面监听地址和端口,位于hdfs-site.xml。

2:测试准备

根据以上原理和控制参数,测试分三种情况进行:

  • fs.checkpoint.period参数设置测试,NN和SNN的fs.checkpoint.period值相同,都为5分钟
  • fs.checkpoint.period参数设置测试,NN和SNN的fs.checkpoint.period值不同,NN为5分钟,SNN为15分钟
  • fs.checkpoint.size参数设置测试
  • 另准备几个100M左右的文件和几个1K左右的文件进行增加和删除的操作


    3:NN和SNN的fs.checkpoint.period值相同测试

    a:配置参数(NN和SNN分离时,需要配置dfs.secondary.http.address参数,否则NNS计算后fsimages无法传递给NN
    [hadoop@linux1 hadoop120]$ cat conf/masters
    192.168.100.172
    [hadoop@linux1 hadoop120]$ vi conf/core-site.xml
    [hadoop@linux1 hadoop120]$ vi conf/hdfs-site.xml
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客
    [hadoop@linux1 hadoop120]$ scp -r conf hadoop@linux2:/app/hadoop120
    [hadoop@linux1 hadoop120]$ scp -r conf hadoop@linux3:/app/hadoop120
    [hadoop@linux1 hadoop120]$ scp -r conf hadoop@linux4:/app/hadoop120
    [hadoop@linux1 hadoop120]$ scp -r conf hadoop@linux5:/app/hadoop120

    b:初始状态
    [hadoop@linux1 hadoop120]$ bin/start-all.sh
    [hadoop@linux1 hadoop120]$ cd tmp/dfs/name/current
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客 实验之namenode checkpoint测试 - mmicky - mmicky 的博客

    c:文件操作
    [hadoop@linux1 current]$ /app/hadoop120/bin/hadoop fs -ls dir2
    [hadoop@linux1 current]$ /app/hadoop120/bin/hadoop fs -rmr dir1/*.txt
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客

    d:过了checkpoint间隔时间5分钟后,检查NN和SNN的current目录状态(SNN原来的current目录文件已删除,重建了current目录),显然checkpoint的发生过程和原理描叙的一致。
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客

    实验之namenode checkpoint测试 - mmicky - mmicky 的博客
     
    4:NN和SNN的fs.checkpoint.period值不同测试
    a:配置参数(NN的fs.checkpoint.period为5分钟,SNN的fs.checkpoint.period为15分钟
    [hadoop@linux2 hadoop120]$ vi conf/core-site.xml
    [hadoop@linux2 hadoop120]$ cat conf/core-site.xml
    <configuration>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/app/hadoop120/tmp</value>
    </property>
    <!-- file system properties -->
    <property>
    <name>fs.default.name</name>
    <value>hdfs://linux1:9000</value>
    </property>

    <property>
    <name>fs.checkpoint.period</name>
    <value>900</value>
    <description>The number of seconds between two periodic checkpoints. </description>
    </property>

    <property>
    <name>fs.checkpoint.size</name>
    <value>67108864</value>
    <description>The size of the current edit log (in bytes) that triggers a periodic checkpoint even if the fs.checkpoint.period hasn't expired. </description>
    </property>
    </configuration>

    b:初始状态
    [hadoop@linux1 hadoop120]$ bin/start-all.sh
    [hadoop@linux1 hadoop120]$ cd tmp/dfs/name/current
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客

    实验之namenode checkpoint测试 - mmicky - mmicky 的博客
     
    c:NN的checkpoint时间间隔5分钟过后,检查NN和SNN的checkpoint状态
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客
     
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客
     
    d:再过NN的checkpoint时间间隔5分钟,检查NN和SNN的checkpoint状态
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客
     
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客
     
    e :过了SNN的checkpoint时间间隔15分钟,检查NN和SNN的checkpoint状态
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客
     
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客
     
    f:每间隔5分钟左右检查一次,发现checkpoint是15分钟执行一次。显然,hadoop系统在启动的时候是以NN的配置来执行checkpoint的,一旦执行一次checkpoint成功后,将checkpoint的任务就转交给SNN,然后以SNN的配置来执行checkpoint。

    5:fs.checkpoint.size参数设置测试
    a:修改SNN文件中的 fs.checkpoint.size=3000(基本上任何一个写操作就可以达到),将NN和SNN的 fs.checkpoint.period都改为3600,减少对测试的影响。
    b:重新启动hadoop。
    c:初始状态
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客
     
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客
     d:进行写操作
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客
     e:不断检查状态,发现几分钟后checkpoint执行。
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客
     
    实验之namenode checkpoint测试 - mmicky - mmicky 的博客
     




      评论这张
     
    阅读(254)| 评论(0)
    推荐 转载

    历史上的今天

    在LOFTER的更多文章

    评论

    <#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    页脚

    网易公司版权所有 ©1997-2017