两个nameservice,ns1和ns2,有两个高可用的NameNode。
1. core-site.xml文件
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://ns1</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/home/hihadoop/hadoop/jns</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/hadoop/tmp</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>hadoopa.highgo.com:2181</value> </property> </configuration>
Core文件配置比较简单,也比较固定,有两个集群,可以将fs.defaultFS配置成ns1,也可以是ns2.联邦的集群在使用了ViewFs之后才能显现出优势。
2. hdfs-site.xml文件
<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/hadoop/dfs/data/data1</value> </property> <property> <name>dfs.nameservices</name> <value>ns1,ns2</value> </property> <property> <name>dfs.ha.namenodes.ns1</name> <value>nna,nnb</value> </property> <property> <name>dfs.ha.namenodes.ns2</name> <value>nng,nnh</value> </property> <property> <name>dfs.namenode.rpc-address.ns1.nna</name> <value>hadoopa.highgo.com:8020</value> </property> <property> <name>dfs.namenode.rpc-address.ns1.nnb</name> <value>hadoopb.highgo.com:8020</value> </property> <property> <name>dfs.namenode.http-address.ns1.nna</name> <value>hadoopa.highgo.com:50070</value> </property> <property> <name>dfs.namenode.http-address.ns1.nnb</name> <value>hadoopb.highgo.com:50070</value> </property> <property> <name>dfs.namenode.shared.edits.dir.ns1</name><value>qjournal://hadoopa.highgo.com:8485;hadoopb.highgo.com:8485;hadoopc.highgo.com:8485/ns1</value> </property> <property> <name>dfs.client.failover.proxy.provider.ns1</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property> <name>dfs.namenode.rpc-address.ns2.nng</name> <value>hadooph.highgo.com:8020</value> </property> <property> <name>dfs.namenode.rpc-address.ns2.nnh</name> <value>hadoopg.highgo.com:8020</value> </property> <property> <name>dfs.namenode.http-address.ns2.nng</name> <value>hadooph.highgo.com:50070</value> </property> <property> <name>dfs.namenode.http-address.ns2.nnh</name> <value>hadoopg.highgo.com:50070</value> </property> <!-- <property> <name>dfs.namenode.shared.edits.dir.ns2</name> <value>qjournal://hadoopf.highgo.com:8485;hadoopg.highgo.com:8485;hadooph.highgo.com:8485/ns2</value> </property>--> <property> <name>dfs.client.failover.proxy.provider.ns2</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/hihadoop/.ssh/id_rsa</value> </property> <property> <name>dfs.ha.automatic-failover.enabled.ns1</name> <value>true</value> </property> <property> <name>dfs.ha.automatic-failover.enabled.ns2</name> <value>true</value> </property> </configuration>
3. 格式化集群。需要在两个NameNode集群上分别格式化。启动整个JNs,在每一个集群上,在其中一个NameNode执行
hdfs namenode -format -clusterId mycluster
然后启动
hadoop-daemon.sh start namenode
在另一个NameNode上执行
hdfs namenode –bootstrapStandby
然后启动
hadoop-daemon.sh start namenode
在两个NameNode集群的任意NameNode上执行
hdfs zkfc –formatZK
在所有节点执行
hadoop-daemon.sh start zkfc
启动所有的DataNode
4. 此时可以用Hadoop shell进行一些操作了,不过此时操作的都是在fs.defaultFS配置中配置的ns1。之后介绍使用ViewFs的配置。这时才会显现出联邦的灵活性和其存在的意义。