美文网首页
9)NameNode和SecondaryNameNode

9)NameNode和SecondaryNameNode

作者: bullion | 来源:发表于2018-09-27 15:49 被阅读0次

NN和2NN工作机制

    NameNode中的元数据存放在内存中,但会在磁盘中产生备份元数据的FsImage

    这样会带来新的问题,当在内存中的元数据更新时如果同时更新FsImage就会导致效率过低,如果不更新,一旦NameNode节点断电就会产生数据丢失。

    因此,引入Edits文件(只进行追加操作,效率很高),每当有元数据更新或者添加时,修改内存中的元数据并追加到Edits中

    但是,如果长时间添加数据到Edits中会导致该文件过大,效率很低,而且一旦断电恢复数据需要的时间过长。

    因此,需要定期进行FsImage和Edits合并,如果这个操作有NameNode节点完成又会效率过低,所以引入了一个新的节点SecondaryNameNode专门用于FsImage和Edits的合并

NameNode故障处理

NameNode故障后,可以采用如下两种方法恢复数据

方法一:将SecondaryNameNode中的数据拷贝到NameNode存储数据的目录

1)拷贝SceondaryNameNode中数据到原NameNode存储数据目录

$ scp -r atguigu@hadoop104:/opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/* ./name/

2)重新启动NameNode

$ sbin/hadoop-daemon.sh start namenode


方法二:使用 -importCheckpoint 选项启动 NameNode 守护进程,从而将SecondaryNameNode中数据拷贝到NameNode目录中

1)如果SecondarynameNode不和NameNode在一个主机节点上,需要将SecondaryNameNode存储数据的目录拷贝到NameNode存储数据的平级目录,并删除 in_use.lock 文件

$ scp -r atguigu@hadoop104:/opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary ./

$ rm -rf in_use.lock

2)写入检查点(等待一会儿ctrl+c结束掉)

$ bin/hdfs namenode -importCheckpoint

3)启动NameNode

$ sbin/hadoop-daemon.sh start namenode

NameNode多目录配置

    NameNode的本地目录可以配置成多个,且每个目录存放内容相同,增加了可靠性。

具体配置如下:

1)停止集群

$ sbin/stop-dfs.sh

2)删除所有集群中data和logs中的所有数据

$ rm -rf data/ logs/

3)在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>

4)格式化NameNode

$ bin/hdfs namenode -format

5)查看目录

$ cd hadoop-2.7.2/data/tmp/dfs/

6)启动集群

$ sbin/start-dfs.sh

相关文章

网友评论

      本文标题:9)NameNode和SecondaryNameNode

      本文链接:https://www.haomeiwen.com/subject/jkieoftx.html