大数据培训新三板挂牌机构 股票代码:837906 | EN CN
异常解决方案—NameNode 宕机读写测试
异常解决方案—NameNode 宕机切换实验
异常解决方案—Data Node 配置
异常解决方案—Backup Node配置
异常解决方案—NameNode配置
异常解决方案—6.5.1异常情况分析
安装及配置
5NameNode安装及配置以及6BackupNode安装及配置
6.4.4虚拟机集群架设
6.4.3安装JDK
3.配置操作系统
2.创建虚拟机与安装操作系统
6.4构建实验环境
实验方案说明
故障切换机制
日志池(journal spool)机制
元数据操作情景分——BackupNode更新磁盘上的日志文件
元数据操作情景分——NameNode通过日志输出流......
元数据操作情景分——NameNode将日志写入日志文件
元数据操作情景分——NameNode更新内存镜像
元数据操作情景分——客户端执行命令流程
元数据操作情景分
Hadoop的Backup Node方案——运行机制分析(5)
Hadoop的Backup Node方案——运行机制分析(4)
Hadoop的Backup Node方案——运行机制分析(3)
Hadoop的Backup Node方案——运行机制分析(2)
Hadoop的Backup Node方案——运行机制分析(1)
Hadoop的Backup Node方案——系统架构
Hadoop的Backup Node方案—Backup Node 概述
元数据可靠性机制以及使用说明
Checkpoint 过程情景分析
元数据更新及日志写入情景分析
NameNode启动加载元数据情景分析
Hadoop的元数据备份机制的进行分析
元数据应用场景分析
Format情景分析
磁盘元数据文件
HDFS之代码分析——元数据结构
HDFS之内存元数据结构
什么是HDFS的元数据
Hadoop中DRDB方案和AvatarNode方案
Hadoop中常用各方案的对比
Hadoop的BackupNode方案
Hadoop的CheckpointNode方案
Hadoop的SecondaryNameNode方案
Hadoop的元数据备份方案
影响HDFS可用性的几个因素
什么是高可用性? 详细解析
HDFS系统架构简介
如何安装和配置Hadoop集群
如何在Windows下安装Hadoop
在MacOSX上安装与配置Hadoop
Linux下安装Hadoop的步骤
Hadoop的集群安全策略介绍
Hive的数据管理介绍
HBase的数据管理介绍
HDFS的数据管理介绍
Hadoop计算模型之 MapReduce 简介
Hadoop于分布式开发
Hadoop体系结构介绍
Hadoop的项目结构详解
一文读懂Hadoop

异常解决方案—NameNode 宕机切换实验

于2018-01-24由小牛君创建

分享到:


当运行NameNode的节点宕机时,需要在运行BackupNode的节点上终止BackupNode,修改配置文件后,将BackupNodeNameNode方式启动,此时虚拟IP将被此节点获得,集群中的DataNode不需改变配置文件,也不需要重启就可以到运行在此节点之上的NameNode注册,之后整个集群就恢复正常。

此时,可以在一个新节点上启动BackupNode作为备份。具体步骤如图6-33所示。

image.png

1.启动虚拟机

依次启动namenode0namenode1datanode00datanode01datanode02datanode03。使用SecureCRT分别登录到各节点。

2.Hadoop集群测试

1)启动Hadoop。在namenode0(NameNode)上执行,该脚本将启动namenode0datanode00datanode03

$cd/usr/local/hadoop-0.21.0

$bin/start-dfs.sh

依次在namenode0datanode00datanode03上检查节点是否正常运行。

$jps

2)关闭Hadoop

$bin/stop-dfs.sh

依次在namenode0datanode00datanode03上检查节点是否正常运行。

$jps

3.启动虚拟IP

namenode0(NameNode)上执行下列命令,namenode0将获取到Ucarpmaster角色,添加虚拟IP地址192.168.1.9对外服务。

$nohup/etc/ucarp.sh&

测试虚拟IP是否工作,如显示namenode0,则说明namenode0(NameNode)的虚拟IP已开始工作。

$ssh192.168.1.9hostname

namenode1(BackupNode)上执行下列命令,此时namenode1(BackupNode)将获得Ucarpslave角色,当master无法工作时,namenode1(BackupNode)上的Ucarp将调用/etc/vip-up.sh脚本,为本机添加虚拟IP地址192.168.1.9

$nohup /etc/ucarp.sh &

4.启动Hadoop

namenode0(NameNode)上执行,该脚本将启动namenode0datanode00datanode03

$cd /usr/local/hadoop-0.21.0

$bin/start-dfs.sh

依次在namenode0datanode00datanode03上检查节点是否正常运行。

$jps

查看集群状态,在namenode0(NameNode)上执行:

$cd /usr/local/hadoop-0.21.0

$bin/hadoop dfsadmin -report

正常情况下,可以看到4DataNode都启动了。

5.启动BackupNode

namenode1(BackupNode)上执行,该命令可以将BackupNode的日志输出为文件。

$cd/usr/local/hadoop-0.21.0

$bin/hadoop-daemon.sh start namenode -backup

6.查看NameNodeBackupNode元数据是否一致

1)查看NameNode上的元数据。

namenode0(NameNode)上执行,根据配置,该命令将访问namenode0(NameNode)上的元数据,以获取HDFS信息。

$bin/hadoop dfs –lsr /

2)查看BackupNode上的元数据。

namenode1(BackupNode)执行,根据配置,该命令将访问namenode1(BackupNode)上的元数据,以获取HDFS信息。

$bin/hadoop dfs –D fs.default.name=hdfs://192.168.1.12:50100 –lsr /

可以看到两个客户端命令所列举的HDFS信息完全相同,namenode0(NameNode)namenode1(BackupNode)元数据一致。

3)复制文件。

前面步骤(1)、(2)验证了NameNodeBackupNode的元数据一致,下面再验证元数据的动态同步。

namenode0(NameNode)上执行客户端命令,将当前目录下所有txt结尾的文件复制到HDFS111目录下,该命令更新的是namenode0(NameNode)上的元数据信息。

$bin/hadoopdfs –copyFromLocal *.txt 111

$bin/hadoop dfs –lsr /

查看BackupNode上的元数据是否同步。

$bin/hadoopdfs–lsr/

可以看到namenode0(NameNode)namenode1(BackupNode)元数据一致。

7.模拟NameNode无法服务

关闭namenode0(NameNode)

$sudo shutdown –h now

8. Backup Node 切换准备

尽管此时BackupNode的内存元数据是与NameNode的内存元数据同步的,而且虚拟IP也可以切换过来,但是,由于第2阶段的BackupNode还不支持热备,因此,需要以重启的方式来恢复服务。

namenode1(BackupNode)之前是配置成BackupNode启动的,现在角色变换,需要以NameNode启动,因此需要修改如下配置文件。

1)修改core-site.xml

namenode1(BackupNode)上执行。

$vi conf/core-site.xml

fs.default.name的值修改为hdfs://0.0.0.0:9000,在所有IP地址上监听,由于192.168.1.9是其中的一个IP,因此可以接收所有访问192.168.1.9的请求,如来自客户端或DataNode的请求。

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://0.0.0.0:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/hadoop/tmp</value>

</property>

</configuration>

2)修改hdfs-site.xml

dfs.http.address的值修改为0.0.0.0:50070,在所有IP地址上监听,这样外部通过虚拟IP192.168.1.9就可以访问到namenode1Web

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

<property>

<name>dfs.http.address</name>

<value>0.0.0.0:50070</value>

</property>

<property>

<name>dfs.name.dir</name>

<value>/usr/local/hadoop/local/namenode</value>

</property>

<property>

<name>dfs.name.edits.dir</name>

<value>/usr/local/hadoop/local/editlog</value>

</property>

<property>

<name>dfs.data.dir</name>

<value>/usr/local/hadoop/block</value>

</property>

</configuration>

9.关闭namenode1(BackupNode)NameNode进程

namenode1(BackupNode)上执行,查看NameNode的进程号。

$jps$kill -9 NameNode的进程号

10.NameNode模式启动namenode1节点

namenode1上执行。

$cd /usr/local/hadoop-0.21.0

$bin/hadoop-daemon.sh start namenode

查看HDFS

$bin/hadoop dfs –lsr /

可以看到,所有文件都在,之前的元数据并未丢失。

写操作测试。

$bin/hadoop dfs –copyFromLocal conf/*.xml 111

$bin/hadoop dfs –lsr /

可以看到namenode1切换过来后,读写操作可顺利进行。

查看集群状态。

$bin/hadoop dfsadmin -report

正常情况下,可以看到 4 Data Node 都注册上来了。

11. 启动新的 Backup Node

选择之前的 namenode0 作为新的 Backup Node 启动,在 namenode0 上执行。

1)重启 namenode0

2)启动虚拟 IP

$nohup /etc/ucarp.sh &

测试虚拟 IP 是否工作。

$ssh 192.168.1.9 hostname

正常情况下,虚拟IP应指向namenode1

3)修改配置文件。

修改core-site.xml

$vi conf/core-site.xml

fs.default.name的值修改为hdfs://192.168.1.12:9000

namenode0上修改hdfs-site.xml

$vi conf/hdfs-site.xml

dfs.http.address的值修改为hdfs://192.168.1.12:50070

4)启动。

$bin/hadoop-daemon.sh start namenode -backup

5)查看namenode0(Backup Node)的元数据。

$bin/hadoop dfs –D fs.default.name=hdfs://192. 168.1.11:50100 –lsr /可以看到元数据已同步。