配置Hadoop的HA(高可用)

在搭建完全分布式的基础上配置HA。

1、首先将完全分布式的配置文件备份。复制一份配置文件用来搭建HA。

$ cp -r /home/betty/soft/hadoop/etc/cluster_hadoop /home/betty/soft/hadoop/etc/HA_hadoop

$ rm hadoop -------删掉之前的软连接。

$ ln -s HA_hadoop hadoop --------重新创建指向HA_hadoop的软连接。

 2、修改配置文件

hdfs-site.xml

    <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>dog1:9000</value>
    </property>
    <property>
      <name>dfs.namenode.rpc-address.mycluster.nn2</name>
      <value>dog2:9000</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.nn1</name>
      <value>dog1:50070</value>
    </property>
    <property>
      <name>dfs.namenode.http-address.mycluster.nn2</name>
      <value>dog2:50070</value>
    </property>
    <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://dog1:8485;dog2:8485;dog3: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/betty/.ssh/id_rsa</value>
    </property>

core-site.xml

<property>
      <name>fs.defaultFS</name>
      <value>hdfs://mycluster</value>
    </property>
    <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/home/hyxy/soft/tmp/journalnode</value>
    </property>

 3、启动所有机器的journalNode守护进程。

$ hadoop-daemon.sh start journalnode

(一旦启动了JournalNodes,就必须首先同步两个HA NameNodes的磁盘元数据。
   **** 如果要设置新的HDFS集群,则应首先在其中一个NameNode上运行format命令(hdfs namenode -format)。
   ****如果您已经格式化了NameNode,或者正在将启用了HA的群集转换为启用HA,则现在应该通过运行命令“ hdfs namenode bootstrapStandby ”将NameNode元数据目录的内容复制到另一个未格式化的NameNode上。 在未格式化的NameNode上。
        运行此命令还将确保JournalNodes(由dfs.namenode.shared.edits.dir配置)包含足够的编辑事务,以便能够启动两个NameNode。
        如果要将非HA NameNode转换为HA,则应运行命令“ hdfs namenode -initializeSharedEdits ”,该命令将使用来自本地NameNode编辑目录的编辑数据初始化JournalNodes。)

4、 启动原来的namenode守护进程。注意是只在dog1此台机器上启动。

$ hadoop-daemon.sh start namenode

5、 在另一个namenode上复制原来的数据过来。我设置的另一个namenode是dog2。所以在dog2上运行此命令。

$ hdfs namenode -bootstrapStandby

6、 关闭namenode进程并初始化日志文件。在dog1上进行。

$ hadoop-daemon.sh stop namenode
$ hdfs namenode -initializeSharedEdits

7、 启动集群 。

$ start-dfs.sh

8、 验证集群。

把其中一个namenode切换成活跃的。

$ hdfs haadmin -transitionToActive nn1

上传文件。

$  hdfs dfs -put ~/soft/hadoop/etc/slaves /betty

9、查看 文件是否上传成功。

$ hdfs dfs -ls /betty

10、结束。 

猜你喜欢

转载自blog.csdn.net/Betty_betty_betty/article/details/84203324