Hadoop-HA搭建流程

1.创建软连接:指向hadoop_cluster_HA

2.修改【hdfs-site.xml】

<property>

    <name>dfs.nameservices</name>

    <value>mycluster</value>

</property>

//指定两个namenode的唯一标识:注意一定是两个

<property>

    <name>dfs.ha.namenodes.mycluster</name>

    <value>nn1,nn2</value>

</property>

//修改namenode RPC访问端口

<property>

    <name>dfs.namenode.rpc-address.mycluster.nn1</name>

    <value>master:9000</value>

</property>

<property>

    <name>dfs.namenode.rpc-address.mycluster.nn2</name>

    <value>slave1:9000</value>

</property>

//修改http-WEBUI访问端口

<property>

    <name>dfs.namenode.http-address.mycluster.nn1</name>

    <value>master:50070</value>

</property>

<property>

    <name>dfs.namenode.http-address.mycluster.nn2</name>

    <value>slave1:50070</value>

</property>

//标识NameNodes写入/读取编辑的一组JNs的URI

<property>

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

    <valueqjournal://master:8485;slave1:8485;slave2: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/exampleuser/.ssh/id_rsa</value>

</property>

3.修改【core-site.xml】

<property>

    <name>fs.defaultFS</name>

    <value>hdfs://mycluster</value>

</property>

<property>

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

     <value>/home/hyxy/tmp/journal</value>

</property>

4.将所有配置项分发至其他节点

    $>scp -r hadoop_cluater_ha hyxy@slave1:~/soft/hadoop/etc/

    $>scp -r hadoop_cluater_ha hyxy@slave2:~/soft/hadoop/etc/

5.在【master:8485;slave1:8485;slave2:8485】三个节点上分别开启journalnode

     $>hadoop-daemon.sh start journalnode

     $>jps

6.一旦启动了JournalNodes,就必须首先同步两个HA NameNodes的磁盘元数据。

  a.如果要设置新的HDFS集群,则应首先在其中一个NameNode上运行format命令

     $>hdfs namenode -format

           慎用!!!

  b.如果您已经格式化了NameNode,或者正在将启用了HA的群集转换为启用HA,

    在未格式化的NameNode上,则现在应该通过运行命令“ hdfs namenode -bootstrapStandby”将NameNode元数据目录 的内容复制到另

         一个未格式化的NameNode上。

    运行此命令还将确保JournalNodes(由dfs.namenode.shared.edits.dir配置)包含足够的编辑事务,以便能够启动两个NameNode。

          确保JournalNodes开启,在nn2上执行以下命令;

      $>hadoop-daemon.sh start namenode(首先在nn1开启namenode进程)

      $>hdfs namenode -bootstrapStandby

       说明:将nn1节点的fsimage复制到nn2中【{HADOOP_TMP_DIR}/dfs/name】

  c.如果要将非HA NameNode转换为HA,则应运行命令“ hdfs namenode -initializeSharedEdits ”,该命令将使用来自本地NameNode编辑目录的编辑数据初始化JournalNodes。

     在nn1上,执行以下命令;

       $>hadoop-daemon.sh stop namenode(关闭namenode)

       $>hdfs namenode -initializeSharedEdits

7.start-dfs.sh

8.验证:分别打开WebUI,查看nn1和nn2的相关信息,均为standby(备用状态)

9.HA 集群管理:

     用法:hdfs haadmin

            [ -transitionToActive <serviceId>]   // 将给定NameNode的状态转换为Active

            [-transitionToStandby <serviceId>]   // 将给定NameNode的状态转换为Standby

            [-failover [--forcefence] [--forceactive] <serviceId> <serviceId>]

            [-getServiceState <serviceId>]

            [-checkHealth <serviceId> ]

            [-help <command>]

     手动切换Active/Standby状态:

            $>hdfs haadmin -transitionToActive nn1

            $>hadoop fs -put tt.txt

            $>hdfs haadmin -transitionToStandby nn1

            $>hdfs haadmin -transitionToActive nn2

            $>hadoop fs -put tt1.txt

猜你喜欢

转载自blog.csdn.net/zy_remarkable/article/details/81222489