Hadoop 2.2.0 HA配置,hadoop2.2.0ha配置


在文章《Ubuntu和CentOS中分布式配置Hadoop-2.2.0》介绍了hadoop 2.2.0最基本的配置。hadoop 2.2.0中提供了HA的功能,本文在前文的基础上介绍hadoop 2.2.0HA的配置。

说明:

下文中的两台namenode机器名分别是namenode1和namenode2.其中namenode1为active node,namenode2为standby namenode。

journalnode机器有三台(注意:至少为三台),分别是journalnode1,journalnode2,journalnode3。(journalnode的机器的数量可以是3,5,7...)

另外,注意保持两台namenode的一致性,大部分在namenode1上进行的操作,也要在namenode2上进行一遍。

配置文件

core-site.xml和hdfs-site.xml的相关配置如下:

1、core-site.xml

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://mycluster</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/tmp/hadoop2.2.0</value>
        </property>
</configuration>
2、hdfs-site.xml

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>/dfs/data</value>
        </property>
        <property>
                <name>dfs.permissions</name>
                <value>false</value>
        </property>
        <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.http-address.mycluster.nn1</name>
                <value>namenode1:50070</value>
        </property>
        <property>
                <name>dfs.namenode.http-address.mycluster.nn2</name>
                <value>namenode2:50070</value>
        </property>
        <property>
                <name>dfs.namenode.shared.edits.dir</name>
                <value>qjournal://journalnode1:8485;journalnode2:8485;journalnode3:8485/mycluster</value>
        </property>
        <property>
                <name>dfs.journalnode.edits.dir</name>
                <value>/home/dfs/journal</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/root/.ssh/id_rsa</value>
        </property>
        <property>
                <name>dfs.ha.fencing.ssh.connect-timeout</name>
                <value>6000</value>
        </property>
        <property>
                <name>dfs.ha.automatic-failover.enabled</name>
                <value>false</value>
        </property>
</configuration>
重启使配置生效。

启动过程:

1、在journalnode机器上启动journalnode

sbin/hadoop-daemon.sh start journalnode
2、在namenode机器上启动namenode(这里假定namenode1为active,namenode2为standby)

a)如果是首次启动,在namenode1上运行format命令:

bin/hadoop namenode -format
b)如果是非首次启动,则在namenode1上运行以下命令
bin/hdfs namenode  -initializeSharedEdits
c)在namenode1上启动namenode:

sbin/hadoop-daemon.sh start namenode
d)在namenode2上运行以下命令:

sbin/hadoop-daemon.sh start  namenode -bootstrapStandby
如果失败的话,直接把namenode1的dfs.namenode.name.dir目录的数据直接拷贝到namenode2的dfs.namenode.name.dir目录。

然后在namenode2上启动namenode:

sbin/hadoop-daemon.sh start namenode
现在,namenode1和namenode2都启动了,都是“standby”状态。

e)在namenode1上运行命令:

bin/hdfs haadmin -transitionToActive nn1
这样,namenode1的状态就变成了“active”。

3、在datanode机器上启动datanode

sbin/hadoop-daemon.sh start datanode
到此时,hadoop2.0的HDFS就可以正常使用了,并且HA功能已经可用。

检查

可以通过以下页面查看active namenode(namenode1)和 standby namenode(namenode2)的状态

http://namenode1:50070/dfshealth.jsp

http://namenode2:50070/dfshealth.jsp

另外,可以运行常用的HDFS shell命令测试HDFS是否正常。

HA的failover测试

停掉namenode1的namenode(模拟namenode1挂掉),这时会发现hdfs不能用了。

在namenode2上运行以下命令:

bin/hdfs haadmin -transitionToActive nn2
运行命令成功后,namenode2的状态就变成“active”,这时 HDFS 恢复正常。

在namenode1上运行一下命令做主从切换命令:

bin/hdfs haadmin -failover nn1 nn2
此时namenode2的状态就变成“active”,而namenode1的状态变成“standby”。

转载请注明出处:http://blog.csdn.net/iAm333


hadoop 204 HA

不是同时联系。但是会同步增量元信息。不稳定可能的原因是HA没有配置好,比如zookeeper要配置,journalnode要配置。
 

Hadoop 20专题

密码是什么
 

相关内容

    暂无相关文章