搭建HA集群

将NN分别部署在hadoop203和hadoop204两台主机上,且保证两台主机配置完全一致包括ssh

  1. 先在hadoop/etc/路径下将hadoop文件夹进行复制分别命名为all和ha
  2. 创建一个软连接指向ha并将软连接命名为hadoop
    1. ln -s ha hadoop
  3. 进入ha文件夹下修改配置文件
    1. hdfs-site.xml
      1. <property>
                  <name>dfs.nameservices</name>
                  <value>mycluster</value>
                </property>
      2.         <property>
                  <name>dfs.ha.namenodes.mycluster</name>
                  <value>nn1,nn2</value>
                </property>
      3. <property>
                  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
                  <value>hadoop203:8020</value>
                </property>
                <property>
                  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
                  <value>hadoop204:8020</value>
                </property>
      4. <property>
                  <name>dfs.namenode.http-address.mycluster.nn1</name>
                  <value>hadoop203:50070</value>
                </property>
                <property>
                  <name>dfs.namenode.http-address.mycluster.nn2</name>
                  <value>hadoop204:50070</value>
                </property>
      5. 配置名称节点共享编辑日志目录
        <property>
                  <name>dfs.namenode.shared.edits.dir</name>
                  <value>qjournal://hadoop201:8485;hadoop202:8485;hadoop203:8485/mycluster</value>
                </property>
      6. java类,client使用它判断哪个节点是激活Active的
                <property>
                  <name>dfs.client.failover.proxy.provider.mycluster</name>
                  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
                </property>
      7. 脚本或java类,用于容灾的时候保护激活的namenode
                <property>
                  <name>dfs.ha.fencing.methods</name>
                  <value>
                        sshfence
                        shell(/bin/true)
                  </value>
                </property>

                <property>
                  <name>dfs.ha.fencing.ssh.private-key-files</name>
                  <value>/home/hadoop/.ssh/id_rsa</value>
                </property>

      8. 配置JN存放编辑日志的本地路径
                <property>
                  <name>dfs.journalnode.edits.dir</name>
                  <value>/opt/module/hadoop-2.7.6/data/tmp/journal/</value>
                </property>

    2. core-site.xml

      1. <property>
                  <name>fs.defaultFS</name>
                  <value>hdfs://mycluster</value>
                </property>    

  4. 在配置文件中配置JN的三个节点(201,202,203)上启动JN进程

    1. hadoop-daemon.sh start journalnode

  5. 启动JN之后,在两个NN之间进行元数据同步

    1. 如果是新集群(在NN节点上执行)

      1. hdfs namenode -format

    2. 正在使用的集群,复制原NN的元数据到另一个NN

      1. cd /opt/module/hadoop-2.7.6/data/tmp/dfs

      2. scp -r name hadoop@hadoop204:/opt/module/hadoop-2.7.6/data/tmp/dfs/

    3. 在新的(未格式化)上运行以下命令,实现待命(Standby)状态

      1. hdfs namenode -bootstrapStandby(当询问是否格式化时选择N)

    4. 在一个NN上执行以下命令,完成编辑日志到JN节点的传输(此时需要运行QN进程并关闭NN进程)

      1. hdfs namenode -initializeSharedEdits

  6. 在201,202,203节点上配置zookeeper进行自动容灾

  7. 配置hdfs-site.xml,启用自动容灾.
                    <property>
                        <name>dfs.ha.automatic-failover.enabled</name>
                        <value>true</value>
                    </property>

  8. 配置core-site.xml,指定zk的连接地址.
                    <property>
                        <name>ha.zookeeper.quorum</name>
                        <value>hadoop201:2181,hadoop202:2181,hadoop203:2181</value>
                    </property>

  9. 登录其中的一台NN,在ZK中初始化HA状态

    1. hdfs zkfc -formatZK

  10. 启动hdfs进程进行测试

    1. start-dfs.sh

ps:    

    $> hdfs haadmin -transitionToActive nn1     //切换成激活状态
    $> hdfs haadmin -transitionToStandby nn1  //切换成待命状态
    $> hdfs haadmin -getServiceState nn1        //查看状态
    $> hdfs haadmin -failover nn1 nn2               //模拟容灾演示,从nn1切换到nn2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值