IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]HDFS HA系列实验之七:NN故障转移处理

    book_mmicky发表于 2014-05-13 15:23:12
    love 0
    NN是HDFS的核心,一旦破坏,hadoop整个系统将瘫痪。hadoop2.2.0提供了NN HA,提高了NN的可用性。但如果发生了NN故障转移,那么需要处理故障点。本实验主要是针对NN故障转移的几种情况的处理:
    实验一:原Active NN意外挂机或JVM溢出等原因造成,但原Active NN文件系统完好
    实验二:原Active NN元数据损坏或重新部署新的NN

    本实验环境搭建指导:HDFS HA系列实验之二:HA+JournalNode+zookeeper
    本实验相关的hadoop配置文件下载(HA+JN+ZK+proxy):
    根据上面相关资料重新配置HA+JournalNode+zookeeper环境,并格式化后启动,然后使用物理机192.168.100.111(机器名wyy)作为客户端来访问集群。
    [hadoop@product202 ~]$ /app/hadoop/zookeeper345/bin/zkServer.sh start
    [hadoop@product202 ~]$ /app/hadoop/hadoop220/sbin/hadoop-daemon.sh start journalnode
    [hadoop@product203 ~]$ /app/hadoop/zookeeper345/bin/zkServer.sh start
    [hadoop@product203 ~]$ /app/hadoop/hadoop220/sbin/hadoop-daemon.sh start journalnode
    [hadoop@product204 ~]$ /app/hadoop/zookeeper345/bin/zkServer.sh start
    [hadoop@product204 ~]$ /app/hadoop/hadoop220/sbin/hadoop-daemon.sh start journalnode

    [hadoop@product201 ~]$ cd /app/hadoop/hadoop220/
    [hadoop@product201 hadoop220]$ bin/hdfs namenode -format
    [hadoop@product201 hadoop220]$ bin/hdfs zkfc -formatZK
    [hadoop@product201 hadoop220]$ sbin/hadoop-daemon.sh start zkfc
    [hadoop@product202 ~]$ cd /app/hadoop/hadoop220/
    [hadoop@product202 hadoop220]$ sbin/hadoop-daemon.sh start zkfc
    [hadoop@product201 hadoop220]$ sbin/hadoop-daemon.sh start namenode
    [hadoop@product202 hadoop220]$ bin/hdfs namenode -bootstrapStandby
    [hadoop@product202 hadoop220]$ sbin/hadoop-daemon.sh start namenode
    [hadoop@product201 hadoop220]$ sbin/hadoop-daemons.sh start datanode


    1:实验一
    客户端通过http://product201:50070可以发现product201处于active状态
    客户端通过http://product202:50070可以发现product202处于standby状态

    重启product201(因为没有zookeeper和JN进程在跑,可以直接重新启动来模拟机器故障),这时:
    客户端通过http://product201:50070已经无法访问
    客户端通过http://product202:50070可以发现product202处于active状态
    此时文件操作正常

    启动product201的NN守护进程
    [hadoop@product201 hadoop220]$ sbin/hadoop-daemon.sh start zkfc
    [hadoop@product201 hadoop220]$ sbin/hadoop-daemon.sh start namenode
    客户端通过http://product201:50070可以发现product201处于standby状态
    客户端通过http://product202:50070可以发现product202处于active状态
    此时文件操作正常

    在product202上kill DFSZKFailoverController进程和namenode进程,模拟product202故障,
    [hadoop@product202 hadoop220]$ jps
    2374 NameNode
    2472 JournalNode
    2558 DFSZKFailoverController
    2930 Jps
    1706 QuorumPeerMain
    [hadoop@product202 hadoop220]$ kill 2374
    [hadoop@product202 hadoop220]$ kill 2558
    [hadoop@product202 hadoop220]$ jps
    2472 JournalNode
    2998 Jps
    1706 QuorumPeerMain
    这时:
    客户端通过http://product201:50070可以发现product201处于active状态
    客户端通过http://product202:50070已经无法访问

    在客户端上传文件
    hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -put /home/mmicky/data/demo.txt /test/.
    hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -ls /test
    Found 4 items
    -rw-r--r--   3 hadoop supergroup  258570165 2014-02-23 15:21 /test/2013.txt
    -rw-r--r--   3 hadoop supergroup   25721132 2014-02-23 15:28 /test/IP.txt
    -rw-r--r--   3 hadoop supergroup    7118627 2014-02-23 16:42 /test/access_log.txt
    -rw-r--r--   3 hadoop supergroup       1572 2014-02-23 17:07 /test/demo.txt
    然后重启product202
    [hadoop@product202 hadoop220]$ sbin/hadoop-daemon.sh start zkfc
    [hadoop@product202 hadoop220]$ sbin/hadoop-daemon.sh start namenode
    [hadoop@product202 hadoop220]$ bin/hdfs haadmin -failover nn1 nn2
    客户端通过http://product201:50070可以发现product201处于standby状态
    客户端通过http://product202:50070可以发现product202处于active状态
    可以发现客户端新上传的文件在product202中可以浏览。

    2:实验二
    在product201处于standby之后重启,然后删除hadoop的数据文件来模拟实验环境。
    [hadoop@product201 hadoop220]$ rm -rf mydata logs
    [hadoop@product201 hadoop220]$ sbin/hadoop-daemon.sh start zkfc
    [hadoop@product201 hadoop220]$ bin/hdfs namenode -bootstrapStandby
    [hadoop@product201 hadoop220]$ sbin/hadoop-daemon.sh start namenode
    客户端通过http://product201:50070可以发现product201处于standby状态
    客户端通过http://product202:50070可以发现product202处于active状态
    [hadoop@product201 hadoop220]$ bin/hdfs haadmin -failover nn2 nn1
    将product201切换成active NN后,通过http://product201:50070可以浏览HDFS中的文件。

    TIPS:
    bin/hdfs namenode -bootstrapStandby只是在最初同步元数据的时候使用



沪ICP备19023445号-2号
友情链接