zoukankan      html  css  js  c++  java
  • hadoop namenode ha--手动切换

    hadoop namenode ha–手动切换

    在参考本手册前请确保Hadoop中HDFS组件已经成功部署并正常运行,同时系统基本环境完备,包括ssh免密码登录、/etc/hosts等。
    假设目前NameNode在服务器namenode1上运行,服务器namenode2作为standbynamenode,确保namenode2上至少已经安装了namenode服务。
    操作过程中尽量避免使用root用户操作,这里假设使用hadoop用户操作,具体部署步骤如下:
    1. 关闭所有节点上的HDFS进程,主要是namenode1上的namenode和datanode进程。
    2. 修改系统配置文件core-site.xml和hdfs-site.xml

    hdfs-site.xml中添加:

    <!-- HA Setup Head !--> 
             <property>
               <name>dfs.nameservices</name>
               <value>mycluster</value>
             </property>
    
             <property>
               <name>dfs.ha.namenodes.mycluster</name>
               <value>nn1,nn2</value>
             </property>
    
             <property>
               <name>dfs.namenode.rpc-address.mycluster.nn1</name>
               <value> namenode1:8020</value>
             </property>
             <property>
               <name>dfs.namenode.rpc-address.mycluster.nn2</name>
               <value> namenode2:8020</value>
             </property>
    
             <property>
               <name>dfs.namenode.shared.edits.dir</name>
               <value>qjournal://namenode1:8485;namenode2:8485/mycluster</value>
             </property>
    
             <property>
               <name>dfs.client.failover.proxy.provider.mycluster</name>
               <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
             </property>
    
             <property>
               <name>dfs.ha.fencing.methods</name>
               <value>sshfence</value>
             </property>
             <property>
               <name>dfs.ha.fencing.ssh.private-key-files</name>
               <value>/home/hadoop/.ssh/id_rsa</value>
             </property>
        <property>
               <name>dfs.ha.fencing.ssh.connect-timeout</name>
               <value>30000</value>
             </property>
    
             <property>
               <name>dfs.journalnode.edits.dir</name>
               <value>/path/to/hdfs/jn</value>
             </property>
    
    <!-- HA Setup End !-->

    core-site.xml中修改

    fs.default    hdfs://mycluster
    注意:这些更改需要更新到每个运行HDFS进程的节点。
    其中,namenode1和namenode2在hdfs-site.xml中有一项配置不同:

    服务器节点   配置项           值
    namenode1  dfs.namenode.http-address namenode1:50070 
    namenode2  dfs.namenode.http-address namenode2:50070

    1 分别在namenode1和namenode2上启动journalnode:
    $HADOOP_HOME/sbin/hadoop-daemon.sh start journalnode

    2 在namenode1上对journalnode的共享数据进行初始化,然后启动namenode进程:

    $HADOOP_HOME/bin/hdfsnamenode  -initializeSharedEdits
    $HADOOP_HOME/sbin/hadoop-daemon.sh start  namenode

    3 在namenode2上同步journalnode的共享数据,然后启动namenode进程:

    $HADOOP_HOME/bin/hdfsnamenode  -bootstrapStandby
    $HADOOP_HOME/sbin/hadoop-daemon.sh start  namenode

    4 分别在namenode1和namenode2中启动datanode:

    $HADOOP_HOME/sbin/hadoop-daemon.sh  start datanode

    5 此时如果通过网页访问两个namenode的http-address,可以看到两个namenode都是standby状态,也可以通过hadoop自带的命令行工具来查看状态:

    $HADOOP_HOME/bin/hdfs  haadmin -getServiceState  nn1

    注意:此处的nn1为在hdfs-site.xml中配置的namenode服务的名称。

    6 确定要转为active的namenode的id,这里将namenode1设为active,使用命令行工具进行状态切换:

    $HADOOP_HOME/bin/hdfs  haadmin -failover --forcefence --forceactive  nn2  nn1

    注意:此处“nn2 nn1”的顺序表示active状态由nn2转换到nn1上(虽然nn2在转化前也是standby状态)。

    7 上一步中把namenode1的状态切换为active后,系统自动把namenode2上的namenode进程关闭,再把错误原因排除后重启该namenode进程,启动后该namenode状态为standby,等待下一次namenode1出现故障时即可将namenode2状态切换为active,使用命令行工具:

    $HADOOP_HOME/bin/hdfs  haadmin -failover --forcefence --forceactive  nn1  nn2

      相应的,转换完以后namenode1上的namenode进程被关闭,需要排除故障后重新启动。

    参考本手册操作过程中,如遇实际错误,请自行查阅相关日志文件排除错误。

  • 相关阅读:
    网络通讯协议的基本要素
    java实现二维码的生成与解析
    SpringCloud应用间通信-RestTemplate与Feign
    SpringCloud服务注册与发现-Eureka、Nacos和Consul
    极光推送-java消息推送app
    Git的回滚和撤销操作
    SOFABoot学习
    记录一次生产环境下EleasticSearch故障(cpu打满)
    记录SQL优化
    利用二进制存储多种状态
  • 原文地址:https://www.cnblogs.com/shiguangmanbu2016/p/5932876.html
Copyright © 2011-2022 走看看