今天折腾HA,那叫一个顺利啊,
我原本准备花一周时间来折腾的,结果今天一天基本搞定,没遇到什么大问题。
要写总结,我也不知道写啥了。
大致流程罗列一下吧。
主要分三步,
第三步,配置Hadoop HA,基本上一路顺利,按照官方文档弄就行:
1,保证两个namenode硬件配置相同,或者都能胜任工作吧;
2,保证两个namenode都挂载了nfs同一块区域吧。
3,保证两个namenode可以互相免密码ssh,namenode运行的进程。
4,保证两个NameNode的dfs.namenode.name.dir路径下内容相同;
5,保证dfs.namenode.shared.edits.dir路径下有current/edit_*文件
6,可以启动啦,在namenode上执行start-dfs.sh,可以jps查进程、访问namenode的web、以及看日志确认namenode是否成功启动了。
7,启动datanode (因为我开了security模式,所以datanode要单独在root下启动)
8,启动之后,两个namenode都在standby模式,在namenode上执行hdfs dfs -haadmin failover nn2 nn1 就行啦。
9,没有了,一切静待运行几天。
10,补充下,hadoop 的client也做的ha重试机制,所以client知道去哪里找namenode。
11,附上我的配置文件
Core-site.xml代码
<configuration> <!-- NameNode URI of the cluster --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoopii</value> </property> <property> <name>fs.trash.interval</name> <value>1440</value> </property> </configuration>Hdfs-site.xml代码
<configuration> <property> <name>dfs.federation.nameservices</name> <value>hadoopii</value> </property> <property> <name>dfs.permissions.superusergroup</name> <value>hadoop</value> </property> <!-- namenode dir --> <property> <name>dfs.namenode.name.dir</name> <value>/data/NameNode</value> </property> <!-- datanode dir --> <property> <name>dfs.datanode.data.dir</name> <value>/data/DataNode</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.datanode.max.xcievers</name> <value>4096</value> </property> <!-- datanode dir --> <property> <name>dfs.checksum.type</name> <value>CRC32</value> </property> <property> <name>dfs.ha.namenodes.hadoopii</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.hadoopii.nn1</name> <value>myhost20:54310</value> </property> <property> <name>dfs.namenode.rpc-address.hadoopii.nn2</name> <value>myhost-1:54310</value> </property> <property> <name>dfs.namenode.servicerpc-address.hadoopii.nn1</name> <value>myhost20:53310</value> </property> <property> <name>dfs.namenode.servicerpc-address.hadoopii.nn2</name> <value>myhost-1:53310</value> </property> <property> <name>dfs.namenode.http-address.hadoopii.nn1</name> <value>myhost20:50070</value> </property> <property> <name>dfs.namenode.http-address.hadoopii.nn2</name> <value>myhost-1:50070</value> </property> <property> <name>dfs.client.failover.proxy.provider.hadoopii</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>file:///nfs_myhost0/hdfs/ha-name-dir-shared</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/hdfs/.ssh/id_rsa</value> </property> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>5000</value> </property> </configuration>