设为首页 加入收藏

TOP

Hadoop之Secondary NameNode
2019-05-07 12:38:17 】 浏览:44
Tags:Hadoop Secondary NameNode
版权声明:本文为【疯狂燃烧的岁月】的原创文章,欢迎转载,转载请注明出处!博客地址:http://blog.csdn.net/zwto1 https://blog.csdn.net/u013067629/article/details/50839191

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就不会起来了(在做这个操作前,自己先备份一份)。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Zookeeper的搭建及Zookeeper实现H.. 下一篇hadoop namenode HA 高可用概念及..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目