HDFS-HA的配置-----手动Failover方式

转帖请注明来自本空间:http://blog.csdn.net/chenpingbupt 


1、配置log的路径(可选)
etc/hadoop/hadoop-env.sh
export HADOOP_LOG_DIR=/home/ziang/DfsDataDir/hdpcdh4/logs
export JAVA_HOME=/home/ziang/software/jdk1.7.0_05
log=$HADOOP_LOG_DIR/hadoop-$HADOOP_IDENT_STRING-$command.out
2、配置log文件的名字,使其没有hostname字符串。(可选)
sbin/hadoop-daemon.sh
export HADOOP_LOGFILE=hadoop-$HADOOP_IDENT_STRING-$command.log
3、配置etc/hadoop/core-site.xml
<property>
             <name>fs.defaUltFS</name>
             <value>hdfs://hdpcdh4</value>
</property>
4、配置etc/hadoop/hdfs-site.xml
     <description>必须与core-site.xml中的配置一致</description>
        <name>dfs.nameservices</name>
        <value>hdpcdh4</value>
    </property>
    <property>
        <description>多个NN</description>
        <name>dfs.ha.namenodes.hdpcdh4</name>
        <value>nn1,nn2</value>
    </property>
    <property>
        <description>第一个NN的rpc端口配置</description>
        <name>dfs.namenode.rpc-address.hdpcdh4.nn1</name>
        <value>dw13:31313</value>
    </property>
    <property>
        <description>第一个NN的http端口配置</description>
        <name>dfs.namenode.http-address.hdpcdh4.nn1</name>
        <value>dw13:31314</value>
    </property>
    <property>
        <description>第二个NN的rpc端口配置</description>
        <name>dfs.namenode.rpc-address.hdpcdh4.nn2</name>
        <value>dw23:31313</value>
    </property>
    <property>
        <description>第二个NN的http端口配置</description>
        <name>dfs.namenode.http-address.hdpcdh4.nn2</name>
        <value>dw23:31314</value>
    </property>
    <property>
        <description>第一个NN和第二个NN共享的Edit目录</description>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>file:///home/ziang/NameNodeEdit</value>
    </property>
    <property>
        <description>client的failover代理配置</description>
        <name>dfs.client.failover.proxy.provider.hdpcdh4</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
        <description>各个NN独占的Name目录</description>
        <name>dfs.name.dir</name>
        <value>file:///home/ziang/DfsDataDir/hdpcdh4/namenode</value>
    </property>
    <property>
        <description>各个DN的数据存放目录</description>
        <name>dfs.data.dir</name>
        <value>file:///home/ziang/DfsDataDir/hdpcdh4/datanode</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.handler.count</name>
        <value>5</value>
    </property>
     <property>
         <name> dfs.ha.fencing.methods</name >
          <value> sshfence(ziang)</ value>
     </property>
     <property>
               <name> dfs.ha.fencing.ssh.connect-timeout</name >
               <value> 3</ value>
        </property>
        <property>
               <name> dfs.ha.fencing.ssh.private-key-files </name>
               <value> d:/home/ziangssh/id_rsa</value >
        </property>
5、格式化及同步两个NN的namespace文件
     1、在其中一个NN上执行格式化
          sh bin/hdfs namenode -format
     2、将格式化数据同步到另一个NN
scp  ~/DfsDataDir/hdpcdh4/namenode/current/* dw23:~/DfsDataDir/hdpcdh4/namenode/current/
6、启动Hdfs
     sh sbin/start-dfs.sh
     此时两个NN都是处于stanby状态,无法提供服务,可以通过DFSHAAdmin来将其中转化为active。
7、DFSHAAdmin使用
     1、将nn1转化为active
          bin/hdfs haadmin  -DFSHAadmin -transitionToActive nn1
    2、failover
          bin/hdfs haadmin -DFSHAadmin -failover nn1 nn2
8、手动的Failover到此OK了。
     

你可能感兴趣的:(java,hadoop)