• Hadoop之Secondary NameNode


    NameNode存储文件系统的变化作为log追加在本地的一个文件中:这个文件是edits。当一个NameNode启动时,它从一个映像文件:FsImage。读取HDFS的状态。使用来自edits日志文件的 edits。然后它将写入新的HDFS状态到FsImage并開始寻常操作,此时edits是一个空文件。因为NameNode合并FsImage和edits仅仅在启动时。edits日志文件会变得非常大在一段时间内并执行在繁忙的集群上 ,一个副作用是一个更大的edits文件会使NameNode在下次又一次启动时须要更长的时间。

    Secondary NameNode定期合并FsImage和edits日志文件。并保持edits日志文件大小在一定限度。它通常和NameNode执行在不同的机器上,内存需求和NameNode同样。

    检查点进程開始由Secondary NameNode两个配置參数控制。

    dfs.namenode.checkpoint.period,默认被设置为1个小时。指定连续两个检查点间的最大延迟
    dfs.namenode.checkpoint.txns。默认被设置为1M。定义了uncheckpointed事务在NameNode的数量。这将迫使有一个紧急检查点。即使检查点时间间隔尚未达到。

    Secondary NameNode 存储最新检查点在一个文件夹中其结构的方式与NameNode的文件夹同样。以便于checkpoint镜像总是准备被NameNode读。假设须要的话。

    为了安全,怎样将Secondary NameNode 存放与NameNode不在同一台机器上?

    hadoop 1.x版本号:
    在hadoop 节点下,改动masters内容

    [root@hadoop conf]# vi masters

    比方将里面的localhost改为Hadoop1
    效果例如以下:

    Hadoop:
    [root@hadoop conf]# jps
    7008JobTracker
    6836NameNode
    7105 Jps

    Hadoop1:
    [root@hadoop1 local]# jps
    6315DataNode
    6470TaskTracker
    6561 Jps
    6384SecondaryNameNode

    hadoop2.x版本号:

    须要添加masters文件

    vi masters
    在文件中写入希望Secondary NameNode存放的主机名或者ip地址

    须要改动配置文件:
    改动hdfs-site.xml:

    <property>
    <name>dfs.http.address</name>
    <value>master:50070</value>
    <description>
    The address and the base port where the dfs namenode web ui will listen on.If the port is 0 then the server will start on a free port.
    </description>
    </property>
    <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>slave1:50090</value>                                 
    //主要是这里的主机名要变
    </property>

    改动core-site.xml文件:

    <property>
      <name>fs.checkpoint.period</name>
      <value>3600</value>
      <description>The number of seconds between two periodic checkpoints.
      </description>
    </property>
    <property>
      <name>fs.checkpoint.size</name>  //以日志大小间隔  做备份间隔
      <value>67108864</value>
    </property>

    上面改动完成,对应的节点也做同样的改动。

    SecondaryNameNode的单独启动和停止
    启动:

    bin/hadoop-daemons.sh --config conf/ --hosts masters start secondarynamenode

    停止:

    bin/hadoop-daemons.sh --config conf/ --hosts masters stop 
    secondarynamenode

    hadoop2.x里SecondaryNameNode总是在执行start-dfs.sh后自己主动起来,也没配置SecondaryNameNode,怎么自己主动启动SecondaryNameNode?

    hadoop的启动命令:
    start-dfs.sh
    一旦执行这个脚本。它就会启动master,slave,然后secondarynamenode。
    也就是说start-dfs.sh对它们进行了定义。你能够改动里面的脚本。

    sudo nano start-dfs.sh

    #---------------------------------------------------------
    # secondary namenodes (if any)
    
    SECONDARY_NAMENODES=$($HADOOP_PREFIX/bin/hdfs getconf -secondarynamenodes 2>/dev/null)
    
    if [ -n "$SECONDARY_NAMENODES" ]; then
    echo "Starting secondary namenodes [$SECONDARY_NAMENODES]"
    
    "$HADOOP_PREFIX/sbin/hadoop-daemons.sh" 
    --config "$HADOOP_CONF_DIR" 
    --hostnames "$SECONDARY_NAMENODES" 
    --script "$bin/hdfs" start secondarynamenode
    fi

    我们看到上面代码部分,凝视掉SecondaryNameNode就不会起来了(在做这个操作前,自己先备份一份)。

  • 相关阅读:
    ibmmq 性能测试
    zabbix-agent 安装
    关于dubbo接口性能测试
    关于vyos 防火墙配置
    appium自动化的工作原理(1)
    unittest如何在循环遍历一条用例时生成多个测试结果
    在Linux中#!/usr/bin/python之后把后面的代码当成程序来执行。 但是在windows中用IDLE编程的话#后面的都是注释,之后的代码都被当成文本了。 该怎么样才能解决这个问题呢?
    Cookie和Session的区别详解
    点单登录原理和java实现简单的单点登录
    new一个JAVA对象的时候,内存是怎么分配的?
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7358570.html
Copyright © 2020-2023  润新知